2012-02-01 21 views
3

當你拼錯谷歌的一個詞(例如「apppers」)時,它提出了現在熟悉的「你的意思是:蘋果」對你的建議。如何爲一個輸入詞生成一個發音相似的單詞列表?

不包括Google根據搜索結果的相關性猜測您的意圖的能力,我如何制定一個聽起來相同的單詞列表?

單詞不一定是英語,也不一定存在。所以,例如,如果我給出輸入「洞」,我會找回一個列表,包括像「整個」,「嗨」,「妓女」,「角色」,「摩爾」等字樣...

我是猜測有可能是網上可以開發這個列表的東西,但我找不到任何東西。如果沒有一個站點,並且可以使用Perl來完成,是否有CPAN模塊可以幫助我做到這一點?

+1

如果你能打破的話成音素,然後就變成了最常見的子問題。儘管如此,將單詞分解成音素仍然是一個嚴重的難題。 – Flexo 2012-02-01 21:07:59

回答

2

您可以通過學習模塊文本::探測法啓動。這是一個簡單的算法,將單詞映射到4字節代碼。我很久以前就把Soundex從Sedgewick(前Knuth)中拿出來,用它來產生更長的鍵(不是截短的),並建議0和1個字母替換的修正列表。我將其應用於人口普查和郵政數據的大型數據庫。

5

如果您確實在尋找聽起來相同的單詞,而不僅僅是搜索建議 - 您可以查看語音算法。 Soundex和Metaphone/Double Metaphone是兩種非常常見的語言,每種語言都有各自的實現。

這些算法降低一句話下來,表示它的發音是「關鍵」。如果你拿出一個單詞語料庫來開始構建一個數據結構,將這些鍵映射到評估它們的單詞 - 你可以採用一個任意的字符串,評估它的「關鍵」,然後查找其他評估結果相同的單詞鍵入您的數據結構(可能是列表或類似的哈希表)。

這並不完美,因爲您需要找到一個大的語料庫來播種您的數據集,但它會起作用。

另一方面,如果你只是想要搜索建議/替代拼寫,那麼有更簡單的方法去解決它。

希望這是有幫助的。

+0

感謝Soundex的領導......我實際上發現這是Oracle和PHP以及其他許多語言的功能。我不明白它返回的數據。請參閱http://www.techonthenet.com/oracle/functions/soundex.php中的示例。「蘋果」返回「A142」,「applus」也返回「A142」。 「A142」是什麼意思? – CheeseConQueso 2012-02-01 21:21:53

+1

@CheeseConQueso被退回不必對自己意義的字母和數字的組合 - 什麼算法確實是減少的話下降到這些按鍵,這樣兩個詞來評價相同的密鑰也有類似的發音。這就是爲什麼要使用語音算法進行建議的原因,您必須構建一個可搜索的關鍵數據存儲 - >(評估該關鍵字的單詞列表),因此,當您獲取「蘋果」時,您可以運行它通過你的算法 - 獲得「A142」,然後搜索你的數據存儲的單詞也評估爲「A142」。這種幫助? – acoffman 2012-02-01 21:26:34

+0

是啊,我現在明白了,謝謝科夫曼 – CheeseConQueso 2012-02-01 22:22:26

相關問題