我有一個字符串變量中的隨機文本內容。我想查找用戶指定的特定單詞的所有單詞變形。Java - 如何在大字符串中查找單詞變形表單?
示例:如果用戶正在查找單詞「assist」,那麼它應該抓取字符串中的所有「輔助,輔助,輔助,輔助」事件。
現在的問題是:是否有Java庫可用於在指定的字符串中自動檢測這種變形?
注:我已經看到了所謂的WolframAlpha一個Java庫,聲稱它這樣做並here是它的網絡界面,但我沒有看到這個庫的工作,並沒有指南可以使用它。
我有一個字符串變量中的隨機文本內容。我想查找用戶指定的特定單詞的所有單詞變形。Java - 如何在大字符串中查找單詞變形表單?
示例:如果用戶正在查找單詞「assist」,那麼它應該抓取字符串中的所有「輔助,輔助,輔助,輔助」事件。
現在的問題是:是否有Java庫可用於在指定的字符串中自動檢測這種變形?
注:我已經看到了所謂的WolframAlpha一個Java庫,聲稱它這樣做並here是它的網絡界面,但我沒有看到這個庫的工作,並沒有指南可以使用它。
首先它不是Java庫,它是以前被稱爲數學Wolfram語言。它具有JLink,可以從Java調用,但是必須運行執行代碼的Wolfram內核。
這就是所謂的Natural Language Processing,這是一個巨大的,複雜的領域。我已經擺弄了幾個問題,但如果你想獲得可靠的解決方案,我只能說這很難再複雜。你可能想看看是
這就是所謂的字詞幹。首先,你需要(爲特定語言)推導出莖:
assisting -> assist using -ance, -ing, -ly, -s, -ed etcetera.
sought -> search using an exception list
然後做一個搜索,也許用正則表達式(Matcher.find)。圖案:
"\\bassist\\p{L}*"
"\\b(search|sought)\\p{L}"
對於非解散間的情況下仍然會比較複雜的前綴,但總體上折曲是英文單詞的結局。然後有同義詞搜索。
那裏的字典通常被稱爲語料庫。搜索「免費英語語料庫」將會產生結果。
\\b
=字邊界 p{L}*
= 0或更多(*
)字母
感謝您的任期。這會在Google上帶來新的美好。我不想重新發明輪子。確實有一個Java庫已經做到了! – Brad 2014-09-03 12:51:24
好的Lucene是一個搜索引擎,http://stackoverflow.com/questions/5391840/stemming-english-words-with-lucene – 2014-09-03 13:13:38
由於太我已經檢查過所有這些帖子。 evo-inflector只能獲得單詞的複數形式,而不是單詞的所有變化。我不知道你爲什麼共享wiktionary ..我需要一個Java庫來在我的程序中使用它! ..你已經分享了關於複數的討論的問題,我已經檢查了在該問題中提到的WolframAlpha庫,但我不知道如何使用它。 – Brad 2014-09-03 11:52:53