我正在用django建立一个网站,需要从短(类似twitter的)消息中提取关键字。
我看过像topia.textextract和nltk这样的包--但是这两个包对于我需要做的事情似乎都有点过分了。我需要做的就是过滤像" and "," or ","not“这样的词,同时保留不是连接词或其他词性的名词和动词。有没有什么“更简单”的包可以做到这一点?
编辑:这需要在生产网站上近乎实时地完成,所以根据他们的响应时间和请求节流,使用关键字提取服务似乎是不可能的。
发布于 2010-03-28 10:47:36
您可以为您想要消除的“停用词”创建一组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]以弥补这一点,并(顺便说一下)保留单词的原始大小写,这可能会很有用。
发布于 2010-03-28 12:47:47
诸如表示导航员的缩写NO或表示操作室的缩写or需要小心,以免引起混乱;-)有人怀疑,通过使用上下文标记带有词性的单词,可以从“找到NO并将她送到OR”中获得更好的结果。提示1:“OR”应该是“名词”,而不是“连词”。提示2:如果对某个单词有疑问,请将其作为关键字。
https://stackoverflow.com/questions/2531717
复制相似问题