2010-07-05 100 views
3

我有一個停止詞列表,其中包含大約30個詞和一組文章。在java中刪除停用詞

我想解析每篇文章並從中刪除這些停用詞。

我不確定什麼是最有效的方法來做到這一點。

例如我可以通過停止列表循環,並替換文章中的單詞,如果存在與空白,但它看起來不太好。

感謝

回答

4
  • 認沽停止詞爲java.util.Set
  • 拆分輸入單詞
  • 對於輸入的每個單詞,看其是否包含在集合停止字,如果不是
  • 寫入到輸出
+0

謝謝 我應該使用一個數組來存儲輸入嗎? – Elham 2010-07-05 23:02:55

+0

@Elham:這是一個選項。如果輸入非常大,可以通過使用掃描儀一次讀取一個字來避免將其完全保存在內存中(可能還有兩次)。 – 2010-07-06 07:58:25

1

替換單詞將是低效的。你最好的選擇是逐字解析文章,並將每個單詞複製到一個新的StringBuffer;除非它是一個停用詞,在這種情況下,你可以隨意複製任何你想要的東西。這裏StringBuffer比String更加高效。

如果僅存在三十個左右,那麼如何存儲停用詞可能並不重要。一套可能是一個很好的選擇。

0

根據Sun Java Tutorials,您可以在正則表達式中使用Perl兼容的\b刪除器。如果你用他們來包圍這個單詞,它將只匹配那個單詞,不管它是跟在後面還是用一個標點符號或空格作爲前綴。

0

從輸入中讀取一個單詞,並將其複製到您的StringBuilder(或放置結果的任何地方)當且僅當它不在停用詞列表中。如果將停用詞放入類似HashTable的東西,您將能夠更快地搜索它們。

編輯:oops,不知道我在想什麼,但你想要一個集合,而不是一個HashTable(或任何其他字典)。