2017-11-17 291 views
1

我想生成編程的單詞同音字。意思是聽起來類似於原始單詞的單詞。如何在子字符串級別生成同音字符?

我碰到過Soundex算法,但它只是用其他字符替換某些字符(如t而不是d)。是否有任何列表或算法有點複雜,至少意味着同音字子串?

重要的是,我想將它應用於不在字典中的單詞,意味着它不能依賴整個真實的單詞。

編輯:

輸入是一個字符串,他們往往是命名實體,因此在沒有真正的(同音字)詞典。一個例子可能是谷歌麥當勞(僅舉兩個流行的命名實體,但許多更不受歡迎)。

然後輸出是該字符串的(隨機)同音字。由於單詞經常有多個同音字,所以單個(隨機)單是我的目標。在谷歌的情況下,同音字可分別古格爾麥當勞麥當勞

+0

分享你的代碼,輸入和期望的輸出 – skrubber

回答

0

如何做到這一點是一個研究課題。例如參見http://www.inf.ufpr.br/didonet/articles/2014_FPSS.pdf

但是,假設你想推出自己的。

第一步是弄清楚如何將給出的字母轉換成它聽起來像的表示。這是一個非常困難的問題,需要猜測。 (例如,什麼聲音「讀取」了?取決於你是否要閱讀,或者你已經閱讀!)但是text to phonemes converter表明阿拉伯已經解決了這個英語。

接下來,您會希望對詞典中的每個詞都進行此操作。假設你可以用一個字來做,那只是一個腳本。

然後,你會希望它存儲在一個數據結構中,你可以很容易地找到類似的聲音。原則上與用於拼寫自動更正的算法類型沒有區別。只能用音素而不是字母。您可以通過http://norvig.com/spell-correct.html瞭解如何做到這一點。或嘗試實施類似http://fastss.csg.uzh.ch/ifi-2007.02.pdf中所述的內容。

就是這樣。

+0

我在哪裏看到的問題是,我的字典不會包含像麥克唐納或格格爾這樣的詞 - 因此不會被認爲是同音詞,對嗎?爲了建立字典,我需要事先知道可能的同音詞。這與自動更正有所不同,因爲我想從Google轉到Gugel而不是Gugel到Google。 – ScientiaEtVeritas

+0

對。您需要提供所有可能的答案才能使用此方法。 – btilly