我有两个非结构化文本输入列表,我想找到区分listA
和listB
的单词。
例如,如果listA
是“哈利波特”的文本而listB
是“安德的游戏”的文本,listA
的区别元素将是[wand, magic, wizard, . . .]
和listB
的区分元素为[ender, buggers, battle, . . .]
我已经尝试了一下python-nltk模块,并且能够轻松找到每个列表中最常用的单词,但这并不是我所追求的。
答案 0 :(得分:0)
您可以使用synset来完成它。要获得同义词,NLTK包含一个非常强大的名为wordnet的库。
Wordnet是人类语言的一个很大的'数据库'(缺乏更好的词),不仅是英语,还支持许多其他语言。
Synset就像你听到一个词时的想法一样。几乎像一个同义词,但不是那么严格。请转到链接,这是一个更好的定义。
Synset Closures可以为您提供最大帮助。例如,'蜜蜂'是一种动物,一种昆虫,一种生物;哈利波特是虚构的,人类的,巫师。
from nltk.corpus import wordnet as wn
dog = wn.synset('dog.n.01')
hyper = lambda s: s.hypernyms()
list(dog.closure(hyper))
Heres一本教你nltk表面的书,不是很好但是与NTLK HOWTOs一起开始的好地方
如果你想要更深入的东西我无法帮助你,我不知道NTLK为我们提供的大多数定义和功能,但是synset是一个很好的起点。
答案 1 :(得分:0)
我已经尝试了一下python-nltk,并且能够轻松找到每个列表中最常见的单词,但不完全是我追求的内容
我猜这是你的意思是它会出现像“和”,“the”,“of”等字样,作为频率最高的词。这些单词不是很有帮助,它们基本上只是将单词组合在一起形成一个句子的粘合剂,你可以删除它们但你需要一个名为“无用”单词的列表,称为停止列表,nltk有这样的列表{{1 }}
您可能需要查看TF.IDF得分。这将对一个文档中常见的单词赋予更高的权重,但通常不常见。通常,您会使用大型语料库来计算一般情况下常用的单词。