NLTK语料库

语料库是单词或表达式的结构化或非结构化集合。所有NLTK语料库都存储在模块nltk.corpus中,下面是一些例子:

  • gutenberg:包含来自古登堡计划的十八个英语文本,例如《白鲸》和《圣经》
  • names:8000名男性和女性名字的列表。
  • words:235000个最常用的英语单词和表单的列表。
  • stopwords:以十四种语言列出的停用词。大多是的文本分析都要删除停用词,因此通常他们对于文本的理解不会带来新的信息。
  • cmudict:诞生在卡内基梅隆大学的发言字典,有134000多个条目。cmudict.entries()中的每个条目都是一个单纯和一个音节列表组成的元组,同一个词可能有几种不同的发音。这个语库可用于识别同音词(soundalikes)

nltk.corpus.wordnet对象是另一个语料库的接口:一个在线语义词网络WorldNet(需要访问网络)。该网络是用词性和序列号标记的同义词集合:

import nltk
wn=nltk.corpus.wordnet
print(wn.synsets("cat"))

结果:

[Synset('cat.n.01'), Synset('guy.n.01'), Synset('cat.n.03'), Synset('kat.n.01'), Synset('cat-o'-nine-tails.n.01'), Synset('caterpillar.n.02'), Synset('big_cat.n.01'), Synset('computerized_tomography.n.01'), Synset('cat.v.01'), Synset('vomit.v.01')]

可以查找每个同义词的定义,这可能是一个意想不到的功能:

import nltk

wn=nltk.corpus.wordnet
print(wn.synset("cat.n.01").definition())
print("*"*20)
print(wn.synset("cat.n.02").definition())

结果:

feline mammal usually having thick soft fur and no ability to roar: domestic cats; wildcats
********************
an informal term for a youth or man

同义词可以具有以上义词(含义较为抽象的同义词)和下义词(含义较为具体的同义词),这些功能使得同义词看起来像具有子类和超类的面向对象(OOP)类。

import nltk

wn=nltk.corpus.wordnet
print(wn.synset("cat.n.01").hypernyms())
print("*"*20)
print(wn.synset("cat.n.01").hyponyms())

结果:

[Synset('feline.n.01')]
********************
[Synset('domestic_cat.n.01'), Synset('wildcat.n.03')]

最后,可以使用WordNet来计算两个同义词组之间的语义相似性。相似度是范围【0...1】中的双精度数。如果相似性为0,则同义词是无关性的;如果相似性为1,则同义词是完全同义词。

from nltk.corpus import  wordnet as wn

x=wn.synset("cat.n.01")
y=wn.synset("lynx.n.01")

print(x.path_similarity(y))

结果:

0.04

上面提到的是两个词之间的相似性,那么任意两个词之间的相似性如何分析呢?让我们来看看【dog】和【cat】的所有同义词,并找到语义最接近的定义:

import nltk

wn=nltk.corpus.wordnet
result=[simxy.definition() for simxy in
        max((x.path_similarity(y),x,y)
            for x in wn.synsets('cat')
            for y in wn.synsets('dog')
            if x.path_similarity(y) #确保synsets是相关的
            )[1:]]

print(result)

结果:

['an informal term for a youth or man', 'informal term for a man']

真是太神奇了!

results matching ""

    No results matching ""