2012-12-19 50 views
9

想知道是否有人有任何提示或可以指向正確的方向找到/創建某種算法來找到押韻的單詞。實現押韻搜索

我特別不想使用API​​,因爲創建算法只是爲了創建它是我的最終目標。

不是說它應該很重要,但我用java編碼。

謝謝

+0

祝你好運,無盡艱難? – EricG

+0

押韻的定義是什麼? –

+0

@AlexLynch http://en.wikipedia.org/wiki/Rhyme,我不知道你的語言是如何定義它們的,但是在我的母語(波蘭語)中我們也對韻文進行了分類。 ;-) –

回答

7

這似乎是它可能是一個巨大的工程,如果你不希望使用的API。具有挑戰性的一步是確定一個單詞的語音(如果兩個單詞的結尾在語音上相似,則爲兩個單詞)。如果你能做到這一點,你可以比較他們的發音的結局。你可能會找到一個API來將已知的單詞轉換爲他們的語音拼寫,但是如果你不想使用API​​,你必須自己做,這不是一個小任務......更不用說,任何人都不完美。

另一種方法是研究的音位算法,這裏解釋: http://www.blackbeltcoder.com/Articles/algorithms/phonetic-string-comparison-with-soundex

+0

Soundex是在處理人口普查時專門爲北美的姓氏而開發的。它不是一個用於語音分析的通用庫,儘管它仍然可能對提問者感興趣。它也集中在詞的開頭,而押韻與其結尾有關。該技術可能具有延展性。 –

+0

由於Metaphone算法,我提供了該鏈接,而不是Soundex。 – Foggzie

6

最好的算法將使用分類與押韻組字的字典。這是非常困難的問題,需要語言學背景。我想你想要一些,可能不是最好的自動發現押韻的算法。

這個基本思想是用一些價值來編碼單詞的發音(而不是單詞本身)。以相同代碼結尾的值標識單詞押韻。

從我的角度來看,它比尋找正確的算法更具有研究性。

看看那篇論文:A System for the Automatic Identification of Rhymes

4

我想利用一個標準的語音算法將是一個不錯的主意。我認爲Soundex可能有點有限,但double metaphone可能是一個不錯的選擇。

獲取有問題的單詞的metaphone表示形式,刪除第一個字符,並檢查兩個單詞中較短部分的剩餘部分是否與較長部分的末尾匹配。使用雙重metaphone,它非常相似,但做了四次比較,從小學到小學,從小學到中學,從小學到中學,從小到中學。

我認爲這將是一個很好的起點。

關於這個和許多其他語音算法的說明:它沒有被設計爲提供精確的語音定義。不同的地理髮音,常見的發音錯誤和備用發音使單純正確的發音變得難以迅速得到正確的發音。新穎的拼寫和字母使用使得算法上很難獲得接近的發音(照顧一些開胃小菜?)。另外,許多這樣的算法的一個主要目標是匹配相似的聽起來或者錯誤的單詞或者名字,所以結果通常會有點不準確(爲了這個目的,這可能是一件好事)。

+1

Double metaphone會從單詞中刪除所有非初始元音,所以它不會讓您一直保持押韻。 – charleyc

+0

絕對如此。但我堅持認爲這是一個很好的起點。 – femtoRgon

3

我在my blog寫了一個押韻詞典程序。這個想法是使用一個帶有發音的字典,並從最後開始比較音素;兩個具有相同結尾音素的單詞是彼此押韻的。