我应该在哪里存储停用词列表?

时间:2011-01-25 10:27:02

标签: text-parsing stop-words

我的函数解析文本并删除短文,例如“a”,“the”,“in”,“on”,“at”等。

将来可能会修改这些单词的列表。此外,在不同列表之间切换(即,针对不同语言)也可能是一种选择。

那么,我应该在哪里存储这样的清单?

  • 约50-200字
  • 每分钟阅读很多
  • 几乎没有写入(修改) - 例如,几个月内一次

我心中有这些选择:

  1. 代码中的列表(最快,但听起来不是一个好习惯)
  2. 一个单独的文件“stop_words.txt”(从文件中读取的速度有多快?我应该每隔几秒钟从同一个文件中读取相同的数据,我会调用相同的函数吗?)
  3. 数据库表。当单词列表几乎是静态的时,它会非常有效吗?
  4. 我正在使用Ruby on Rails(如果这有任何区别)。

2 个答案:

答案 0 :(得分:2)

由于停止词的查找需要很快,我会将停用词存储在哈希表中。这样,验证单词是否为停用词已经摊销了O(1)复杂度。

现在,由于停用词列表可能会发生变化,因此在文本文件中持久列表是有意义的,并在程序启动时(或每隔几分钟/文件修改时读取该文件)如果你的程序连续运行。)

答案 1 :(得分:2)

如果它只有大约50-200个单词,我会将它存储在支持快速查找的数据结构的内存中,例如哈希映射(我不知道在Ruby中调用了这样的结构)。 / p>

您可以使用选项2或3(将数据保存在文件或数据库表中,具体取决于您更容易),然后在应用程序启动时将数据读入内存。存储读取数据的时间,如果请求进入并且数据在X分钟内未更新,则从持久存储中重新读取数据。

这基本上是缓存。 Ruby on Rails可能已经提供了这样一种机制,但我对它的回答太少了。