我想統計一些給定的單詞或短語出現在文本中的次數,但我想使用一些字符串相似度算法。我如何計算文本中的單詞和表達式?
每個單詞或表達具有價值,所以我會根據找到的詞數等
設置文本的相關性我想,從Java String
類不能提供這一點。我需要遍歷每一個我想查找的單詞或表達式的所有文本?
是否有文本處理庫?
示例:查找具有「視頻遊戲」,「我有視頻遊戲」等文字,評估類似的表情。我猜如果我爲每個需要評估的單詞或表達式迭代,我找不到類似的單詞,它會變得更慢。
我想統計一些給定的單詞或短語出現在文本中的次數,但我想使用一些字符串相似度算法。我如何計算文本中的單詞和表達式?
每個單詞或表達具有價值,所以我會根據找到的詞數等
設置文本的相關性我想,從Java String
類不能提供這一點。我需要遍歷每一個我想查找的單詞或表達式的所有文本?
是否有文本處理庫?
示例:查找具有「視頻遊戲」,「我有視頻遊戲」等文字,評估類似的表情。我猜如果我爲每個需要評估的單詞或表達式迭代,我找不到類似的單詞,它會變得更慢。
但我想使用一些字符串相似度算法。
看看Lucene。允許您索引一些文本並使用相似性算法查找作品。我認爲你想分割每個單詞並使用lucene索引它們。然後,對於您感興趣的所有單詞,您都可以搜索索引。你可以做一些事情,如Automobile~
這將做一個模糊搜索。這裏是一個粗略的算法:
for each word in STRING.split(' ')
index word
for each word in your list
search for word and look for number of occurrences
如果你給我更多的細節,我可能會幫助你。 –
目前,我可以對可以包含電影信息的頁面進行排名。如果某些詞或表達式,該頁面可以包含關於電影的信息。如果在正文中,一些相關性,如果在keyowrds中,另一個相關性,如果在標題中,另一個,如果在URL中,另一個等等...... –
這樣的聲音正是你想要的。我已經將lucene與頁面抓取工具結合使用來索引文本。還建議使用jsoup來解析html。 –
你在找什麼是porbably一個倒置文件數據結構。我在數據庫課上學到了這一點,這裏是講座的鏈接。
http://dl.dropbox.com/u/8950924/16Sp11-Search.pdf
基本上想法是有一個地圖數據結構
Map<String, List<Document>> invertedIndex;
其中字符串是單詞和List<Document>
是包含這個詞的文件。
如果您仔細閱讀該pdf文檔,您甚至可以找到排序文檔的方法。
Denniss說的倒排索引就是你要找的。如果你想要一個強大的引擎,你需要很好地定義你的文檔。
對於詞組匹配,您的文檔應具有該文檔中單詞(該鍵的鍵)的位置。一旦你找到了你要找的所有單詞,就可以知道這些單詞是否在原始文檔中。
例如:
doc1: "Hello World"
doc2: "Hello Beautiful World"
inverted index {
"Beautifull": [(doc2, 2)],
"Hello": [(doc1, 1)(doc2, 1)],
"World": [(doc1, 2)(doc2, 3)],
}
query: "Hello World"
兩個文件有話 「你好」 和 「世界」,但DOC1具有在一起(位置1和2)和DOC2不(位置1和3)。
如果你想找到類似的話,你需要一個新的結構。首先,你需要定義什麼是相似的。 Levenshtein distance是你需要的。
要實施它,您需要一個像自動機一樣的全新結構:Levenshtein automaton。
全文搜索是一個巨大的領域。實現一個搜索引擎很困難,許多庫和應用程序已經做到了。
(我的Indextank.com工作實時的全文搜索引擎。如果你需要在一兩分鐘運行一個搜索引擎,我們嘗試了)
的相關性只是一個分析的第一部分提取文本中的信息,而不是搜索引擎。 –