如何从语料库中发现与其他语料库区分开来的单词列表?蟒蛇

时间:2015-03-30 23:22:41

标签: python nlp nltk

我有两个非结构化文本输入列表,我想找到区分listAlistB的单词。 例如,如果listA是“哈利波特”的文本而listB是“安德的游戏”的文本,listA的区别元素将是[wand, magic, wizard, . . .]listB的区分元素为[ender, buggers, battle, . . .]

我已经尝试了一下python-nltk模块,并且能够轻松找到每个列表中最常用的单词,但这并不是我所追求的。

2 个答案:

答案 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得分。这将对一个文档中常见的单词赋予更高的权重,但通常不常见。通常,您会使用大型语料库来计算一般情况下常用的单词。