2011-09-28 82 views
2

我有一組對字符串,例如:推導字符串轉換規則

ABBA - ABA, 哈哈 - 啊哈, 咩 - BA, EXB - ESP, XA - ZA

該對中的第二個(右)字符串與第一個(左)字符串有些相似。

也就是說,來自第一個字符串的字符可以由無,本身或小字符集中的字符表示。

對於這種字符到字符映射沒有簡單的規則,雖然有一些模式。

給定數千個這樣的字符串對,我如何推導出這樣的轉換規則,如果我將它們應用到左邊的字符串,我會得到正確的字符串?

該解決方案可以是近似的,對80-95%的字符串正確工作。

你會推薦使用某種遺傳算法嗎?如果是這樣,怎麼樣?

+0

這裏完全不清楚你在問什麼。像這樣的陳述「也就是說,第一個字符串中的字符可以表示爲無,本身或小字符集中的字符」在這種情況下沒有明確說明。 – RBarryYoung

+0

您的示例使其看起來像使用字符串對本身作爲映射一樣簡單。 –

+0

@RBarryYoung:我只是想強調一下,字符映射沒有簡單的字符,左邊的同一個字符可以用右邊的不同字符表示,具體取決於周圍的字符或可能是整個左邊的字符串。問題是如何在給定一組這些字符串的情況下找到左字符串到右字符串的轉換/規則。 –

回答

0

如果您可以對齊字符或字符組,您可以制定表格,說明aa => a,bb => z等等。如果你有這樣的表格,你可以使用http://en.wikipedia.org/wiki/Dynamic_time_warping來對齊字符。因此,一種方法是猜測對齊(例如一對一,僅僅作爲一個起點,或者只是對齊每個序列的第一個和最後一個字符),從中找出一個轉換表,使用DTW獲得一個新的對齊,工作出一個修改後的翻譯表,並以這種方式迭代。也許你可以用足夠的數學來證明這一點,以證明這種通過增加的最優性或可能性有一定程度的上升,達到局部最大值。

可能有某種方法可以通過對隱馬爾可夫模型進行建模來同時生成兩個序列,然後從該模型導出規則,但除非我已經熟悉HMM並且有軟件才能使用,否則我不會選擇這種方法作爲我很樂意修改的起點。

+1

論文如http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.101.9855&rep=rep1&type=pdf表明,這是一個棘手的問題,值得積極研究。 – mcdowella

0

您可以使用文本到語音來創建聲波。然後將聲波與其他聲波進行比較,並將其與百分比進行匹配。

這是我的理論谷歌如何擁有如此先進的拼寫檢查器。

+0

一個簡單的拼寫檢查器只需要一個單詞列表。不知道Google的先進程度如何,但Goggle擁有大量數據並能夠快速查找。匹配聲波不是我需要或想要的。這是我需要的更多音素轉換的字形,我需要它,而不是將每個「單詞」與其「發音」一起存儲。 –