2014-09-03 21 views
0

我有一個字符串變量中的隨機文本內容。我想查找用戶指定的特定單詞的所有單詞變形。Java - 如何在大字符串中查找單詞變形表單?

示例:如果用戶正在查找單詞「assist」,那麼它應該抓取字符串中的所有「輔助,輔助,輔助,輔助」事件。

現在的問題是:是否有Java庫可用於在指定的字符串中自動檢測這種變形?

注:我已經看到了所謂的WolframAlpha一個Java庫,聲稱它這樣做並here是它的網絡界面,但我沒有看到這個庫的工作,並沒有指南可以使用它。

回答

0

檢查this了..

我不知道你的需求到底有多大,但你可以隨時使用wiktionary和分析你的數據?

檢查this問題..能有所幫助

+0

由於太我已經檢查過所有這些帖子。 evo-inflector只能獲得單詞的複數形式,而不是單詞的所有變化。我不知道你爲什麼共享wiktionary ..我需要一個Java庫來在我的程序中使用它! ..你已經分享了關於複數的討論的問題,我已經檢查了在該問題中提到的WolframAlpha庫,但我不知道如何使用它。 – Brad 2014-09-03 11:52:53

1

首先它不是Java庫,它是以前被稱爲數學Wolfram語言。它具有JLink,可以從Java調用,但是必須運行執行代碼的Wolfram內核。

這就是所謂的Natural Language Processing,這是一個巨大的,複雜的領域。我已經擺弄了幾個問題,但如果你想獲得可靠的解決方案,我只能說這很難再複雜。你可能想看看是

東西:The Stanford NLP

+0

Margus ..感謝您分享有價值的信息。在嘗試之前,我應該閱讀更多有關Wolfram的內容。 – Brad 2014-09-03 11:54:49

+0

@Brad如果你只是想獲得單詞複數形式,那麼體面的算法在這裏描述http://www.csse.monash.edu.au/~damian/papers/HTML/Plurals.html(與perl實現)。 – Margus 2014-09-03 12:02:16

+0

其實我想要我的問題中所描述的所有可能的變化,而不僅僅是複數形式。 – Brad 2014-09-03 12:33:51

0

這就是所謂的字詞幹。首先,你需要(爲特定語言)推導出莖:

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或更多(*)字母

+0

感謝您的任期。這會在Google上帶來新的美好。我不想重新發明輪子。確實有一個Java庫已經做到了! – Brad 2014-09-03 12:51:24

+0

好的Lucene是一個搜索引擎,http://stackoverflow.com/questions/5391840/stemming-english-words-with-lucene – 2014-09-03 13:13:38

相關問題