【问题标题】:Key word extraction in PythonPython中的关键字提取
【发布时间】:2010-03-28 02:44:31
【问题描述】:

我正在用 django 构建一个网站,需要从短消息(类似 Twitter 的消息)中提取关键词。

我查看了诸如topia.textextract 和nltk 之类的包——但对于我需要做的事情来说,这两个包似乎都过大了。我需要做的就是过滤诸如“and”、“or”、“not”之类的词,同时保留不是连词或其他词性的名词和动词。是否有任何“更简单”的软件包可以做到这一点?

编辑:这需要在生产网站上近乎实时地完成,因此根据响应时间和请求限制,使用关键字提取服务似乎是不可能的。

【问题讨论】:

    标签: python django keyword


    【解决方案1】:

    您可以将要消除的“停用词”设置为sw(也许复制它从 NLTK 的停用词语料库中一劳永逸,具体取决于您对它的熟悉程度您需要支持的各种自然语言),然后非常简单地应用它。

    例如,如果您有一个组成句子的单词 sent 列表(为简单起见,省略了标点符号和小写字母),那么您只需要 [word for word in sent if word not in sw] 来制作非停用词列表 - 几乎不可能更容易,对吧?

    首先要获得sent 列表,使用标准库中的re 模块,如果sentstring 是您正在处理的句子的字符串,re.findall(r'\w+', sentstring) 可能就足够了——它没有'不是小写,但您可以将我在上面建议的列表理解更改为 [word for word in sent if word.lower() not in sw] 以弥补这一点并(顺便说一句)保留单词的原始大小写,这可能很有用。

    【讨论】:

    • 感谢您的回答。有没有一种方法可以从 nltk 中提取停用词语料库而无需使用 nltk?
    • 当然,您只需下载它,例如nltk.googlecode.com/svn/trunk/nltk_data/packages/corpora/… 。它只是一个名为英语、俄语、德语等文本文件的压缩文件——每个文件每行一个单词。再容易不过了。
    【解决方案2】:

    像 NO 表示导航官或 OR 表示手术室的缩写需要小心,以免导致 SNAFU ;-) 有人怀疑通过标记单词“找到 NO 并将她送到 OR”可以获得更好的结果使用上下文的词性......提示1:“OR”应该导致“the [noun]”而不是“the [conjunction]”。提示 2:如果对某个词有疑问,请将其保留为关键字。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-04
      • 1970-01-01
      • 1970-01-01
      • 2020-12-02
      • 1970-01-01
      相关资源
      最近更新 更多