参考资料:
词汇相似度计算
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')