我有一個停止詞列表,其中包含大約30個詞和一組文章。在java中刪除停用詞
我想解析每篇文章並從中刪除這些停用詞。
我不確定什麼是最有效的方法來做到這一點。
例如我可以通過停止列表循環,並替換文章中的單詞,如果存在與空白,但它看起來不太好。
感謝
我有一個停止詞列表,其中包含大約30個詞和一組文章。在java中刪除停用詞
我想解析每篇文章並從中刪除這些停用詞。
我不確定什麼是最有效的方法來做到這一點。
例如我可以通過停止列表循環,並替換文章中的單詞,如果存在與空白,但它看起來不太好。
感謝
java.util.Set
替換單詞將是低效的。你最好的選擇是逐字解析文章,並將每個單詞複製到一個新的StringBuffer;除非它是一個停用詞,在這種情況下,你可以隨意複製任何你想要的東西。這裏StringBuffer比String更加高效。
如果僅存在三十個左右,那麼如何存儲停用詞可能並不重要。一套可能是一個很好的選擇。
根據Sun Java Tutorials,您可以在正則表達式中使用Perl兼容的\b
刪除器。如果你用他們來包圍這個單詞,它將只匹配那個單詞,不管它是跟在後面還是用一個標點符號或空格作爲前綴。
從輸入中讀取一個單詞,並將其複製到您的StringBuilder(或放置結果的任何地方)當且僅當它不在停用詞列表中。如果將停用詞放入類似HashTable的東西,您將能夠更快地搜索它們。
編輯:oops,不知道我在想什麼,但你想要一個集合,而不是一個HashTable(或任何其他字典)。
謝謝 我應該使用一個數組來存儲輸入嗎? – Elham 2010-07-05 23:02:55
@Elham:這是一個選項。如果輸入非常大,可以通過使用掃描儀一次讀取一個字來避免將其完全保存在內存中(可能還有兩次)。 – 2010-07-06 07:58:25