2013-09-29 14 views
0

我在Java中創建了一個迷你搜索引擎,它基本抓取用戶指定的所有RSS提要,然後允許他或她選擇一個單詞進行搜索。由於RSS提要文檔的數量相當有限,因此我正考慮在用戶輸入他或她的搜索詞之前先處理這些文檔。我想通過創建hashmaps來處理它們,將某些關鍵字鏈接到包含文章本身的記錄集合以及文章中出現的單詞的次數。但是,我將如何確定關鍵字?我怎麼知道哪些詞是無意義的,哪些不是?如何判斷一個單詞在文本中是否無意義?

回答

1

「我應該忽略哪些單詞?」的概念通常被稱爲停用詞。最好的搜索引擎不使用停用詞。如果我是樂隊「The The」的粉絲,如果你的搜索引擎找不到他們,我會感到很沮喪。此外,搜索精確的短語可能會被天真的停用詞實現搞砸。

順便說一下,你所談論的散列表被稱爲倒排索引。我推薦閱讀這本(免費,在線)書籍,以瞭解如何構建搜索引擎:http://nlp.stanford.edu/IR-book/information-retrieval-book.html

1

Solr,我相信這些被稱爲'停用詞'。

我相信他們只是使用text file來定義他們不會搜索的所有單詞。

+0

非常感謝。 – user2828752

0

停用詞是您應該使用的一件事。網絡上有很多停用詞表。

但是我正在寫一個答案,因爲以前的沒有提到TF-IDF這是一個單詞在文檔語料庫環境中的重要程度的度量。

如果一個文檔出現很多(詞頻)並且不會在其他文檔(逆文檔頻率)中頻繁出現,那麼該文檔更有可能成爲關鍵字。這種方式像a,the,where,自然被忽略,因爲它們出現在每個文檔中。

P.S.在一個相關的話題上,你可能會對其他名單感興趣,比如罵人:) P.P.S.散列圖是一件好事,但你也應該爲你的任務檢查後綴樹。

1

小提取re。停用詞從NLTK from Ch. 2

還有停止字的語料庫,也就是高頻詞 像,並也是我們有時候想進一步處理之前過濾掉 文件。停用詞通常幾乎沒有詞彙內容,並且它們在文本中的存在無法區分 與其他文本。

>>> from nltk.corpus import stopwords 
>>> stopwords.words('english') 
['a', "a's", 'able', 'about', 'above', 'according', 'accordingly', 'across', 
'actually', 'after', 'afterwards', 'again', 'against', "ain't", 'all', 'allow', 
'allows', 'almost', 'alone', 'along', 'already', 'also', 'although', 'always', ...] 
相關問題