2011-01-25 78 views
0

我的功能可以解析文本並刪除短語,如「a」,「the」,「in」,「on」,「at」等。我應該在哪裏存儲停用詞表?

這些詞的列表可能會在未來修改。而且,在不同列表之間切換(即針對不同語言)也可能是一種選擇。

那麼,我應該在哪裏存儲這樣的列表?

  • 50-200字
  • 許多讀取每分鐘
  • 幾乎沒有寫入(修改) - 例如,一旦在幾個月

我在我的腦海這些選項:

  1. 裏面的代碼清單(最快的,但它聽起來並不像一個很好的做法)
  2. 單獨的文件「stop_words.txt」(讀取文件速度有多快?我應該每隔幾秒鐘從同一個文件讀取相同的數據,我稱之爲相同的功能?)
  3. 數據庫表。如果單詞列表應該幾乎是靜態的,它會非常有效嗎?

我正在使用Ruby on Rails(如果這有什麼區別)。

回答

2

如果只有大約50-200字,我會將它存儲在支持快速查找的數據結構的內存中,比如哈希映射(我不知道Ruby中調用了什麼樣的結構)。

您可以使用選項2或3(將數據保留在文件或數據庫表中,具體取決於您更容易),然後在應用程序開始時將數據讀入內存。存儲讀取數據的時間,如果請求進入並且數據未在X分鐘內更新,則從持久存儲中重新讀取數據。

這基本上是一個緩存。 Ruby on Rails可能已經提供了這樣一種機制,但我知道它回答得太少。

2

由於停用詞的查找需要很快,因此我會將停用詞存儲在散列表中。這樣,驗證一個詞是否是一個停用詞已經分攤了O(1)的複雜性。現在

,因爲停止的話可能會改變列表,是有意義的堅持列表中的文本文件,如果你的程序運行讀程序啓動該文件(或每幾分鐘/在文件修改連續)。

相關問題