自然语言处理与知识图谱week7 | 使用nltk中的wordnet语料库

参考资料:
词汇相似度计算
python WordNet的使用方法(整理版)
使用NLTK计算word的相似度


print('========================')
print('找出同义词集:')
print('>>>dog:')
print(wn.synsets('dog'))
print('>>>apple:')
print(wn.synsets('apple'))
print('>>>fly:')
print(wn.synsets('fly'))
print('========================')

在这里插入图片描述

def get_lemma_names(s1):
    walk = wn.synsets(s1)
    f = 0
    for i in range(len(walk)):
        lms = walk[i].lemma_names()
        if len(lms) != 0:
            print(walk[i], ": ")
            print(lms)
            f = 1
    if f == 0:
        print('None')

print('查看同义词集中的所有单词:')
print('>>>dog:')
get_lemma_names('dog')
print('>>>apple:')
get_lemma_names('apple')
print('>>>fly:')
get_lemma_names('fly')
print('========================')

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

def get_lemma_names(s1):
    walk = wn.synsets(s1)
    f = 0
    for i in range(len(walk)):
        lms = walk[i].definition()
        if len(lms) != 0:
            print(walk[i], ": ")
            print(lms)
            f = 1
    if f == 0:
        print('None')

print('查看同义词的具体定义:')
print('>>>dog:')
get_lemma_names('dog')
print('>>>apple:')
get_lemma_names('apple')
print('>>>fly:')
get_lemma_names('fly')
print('========================')

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

def get_lemma_names(s1):
    walk = wn.synsets(s1)
    f = 0
    for i in range(len(walk)):
        lms = walk[i].examples()
        if len(lms) != 0:
            print(walk[i], ": ")
            print(lms)
            f = 1
    if f == 0:
        print('None')

print('查看同义词的例子:')
print('>>>dog:')
get_lemma_names('dog')
print('>>>apple:')
get_lemma_names('apple')
print('>>>fly:')
get_lemma_names('fly')
print('========================')

在这里插入图片描述
在这里插入图片描述

def wordsim(s1, s2):
    max = 0
    dog = wn.synsets(s1)
    cat = wn.synsets(s2)
    for i in range(len(dog)):
        for j in range(len(cat)):
            simpath = dog[i].path_similarity(cat[j])
            if simpath is not None and simpath > max:
                max = simpath
    return max

print("查看以下单词对的语义相似度:")
print('>>>dog,cat:')
print(wordsim('dog', 'cat'))

print('>>>good,bad:')
print(wordsim('good', 'bad'))

print('>>>good,beautiful:')
print(wordsim('good', 'beautiful'))

形容词和副词的相似度还不知道应该怎么算,用lch_similarity也不行
在这里插入图片描述

def get_entailments(s1):
    walk = wn.synsets(s1)
    f = 0
    for i in range(len(walk)):
        en = walk[i].entailments()
        if len(en) != 0:
            print(en)
            f = 1
    if f == 0:
        print('None')

print('找出以下单词的蕴含(entailments)关系:')
print('>>>walk')
get_entailments('walk')
print('>>>supply')
get_entailments('supply')
print('>>>hot')
get_entailments('hot')

在这里插入图片描述

def get_antonyms(s1):
    walk = wn.synsets(s1)
    f = 0
    for i in range(len(walk)):
        lms = walk[i].lemmas()
        for j in range(len(lms)):
            ant = lms[j].antonyms()
            if len(ant) != 0:
                print(ant)
                f = 1
    if f == 0:
        print('None')

print('反义词:')
print('>>>walk')
get_antonyms('walk')
print('>>>supply')
get_antonyms('supply')
print('>>>hot')
get_antonyms('hot')

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/cat_xing/article/details/89200741