一、英文
1.安装nltk,导入Wordnet,
Python版本3.5
from nltk.corpus import wordnet as wn2.同义词集的定义
car.n.01 是car的一个名词意义,被称之为同义词集,也就是意义相同的词(或词条)的集合。这里的’dog.n.01’指:dog的第一个名词意思;’chase.v.01’指:chase的第一个动词意思,后面我们可以用definition()这个对同义词集进行解释:
print( wn.synset('apple.n.01').definition()) fruit with red or yellow or green skin and sweet to tart crisp whitish flesh3.查找同义词集的所有词
print(wn.synset('car.n.01').lemma_names()) ['car', 'auto', 'automobile', 'machine', 'motorcar']4.进行造句
print(wn.synset('dog.n.01').examples()) ['the dog barked all night']5.同义词查询
for synset in wn.synsets('car'): print(synset.lemma_names()) ['car', 'auto', 'automobile', 'machine', 'motorcar'] ['car', 'railcar', 'railway_car', 'railroad_car'] ['car', 'gondola'] ['car', 'elevator_car'] ['cable_car', 'car']下位词
下位词(hyponym),指概念上内涵更窄的主题词。 例如:”鲜花速递”的下位词包括”上海鲜花速递” 、”深圳鲜花速递”、 ”网上鲜花速递”,”笨小孩”是”歌”的下位词,”笨小孩”是”刘德华”的下位词。 ++ 下位词是相对某主题词的,也有它自己的等同词、上位词、下位词、同类词。
motorcar = wn.synset('car.n.01') types_of_motorcar=motorcar.hyponyms() print(sorted([lemma.name() for synset in types_of_motorcar for lemma in synset.lemmas()]) ) ['Model_T', 'S.U.V.', 'SUV', 'Stanley_Steamer', 'ambulance', 'beach_waggon', 'beach_wagon', 'bus', 'cab', 'compact', 'compact_car', 'convertible', 'coupe', 'cruiser', 'electric', 'electric_automobile', 'electric_car', 'estate_car', 'gas_guzzler', 'hack', 'hardtop', 'hatchback', 'heap', 'horseless_carriage', 'hot-rod', 'hot_rod', 'jalopy', 'jeep', 'landrover', 'limo', 'limousine', 'loaner', 'minicar', 'minivan', 'pace_car', 'patrol_car', 'phaeton', 'police_car', 'police_cruiser', 'prowl_car', 'race_car', 'racer', 'racing_car', 'roadster', 'runabout', 'saloon', 'secondhand_car', 'sedan', 'sport_car', 'sport_utility', 'sport_utility_vehicle', 'sports_car', 'squad_car', 'station_waggon', 'station_wagon', 'stock_car', 'subcompact', 'subcompact_car', 'taxi', 'taxicab', 'tourer', 'touring_car', 'two-seater', 'used-car', 'waggon', 'wagon']6. 利用词条查询反义词
good = wn.synset('good.a.01') print(good.lemmas()[0].antonyms()) [Lemma('bad.a.01.bad')]7.查询synonyms and antonyms
for syn in wordnet.synsets("good"): for l in syn.lemmas(): synonyms.append(l.name()) if l.antonyms(): antonyms.append(l.antonyms()[0].name()) print(set(synonyms)) print(set(antonyms)) {'proficient', 'trade_good', 'expert', 'skilful', 'salutary', 'dear', 'commodity', 'goodness', 'respectable', 'right', 'undecomposed', 'just', 'serious', 'skillful', 'ripe', 'honorable', 'effective', 'secure', 'well', 'in_effect', 'soundly', 'dependable', 'in_force', 'estimable', 'unspoilt', 'adept', 'thoroughly', 'honest', 'full', 'beneficial', 'upright', 'practiced', 'safe', 'good', 'unspoiled', 'sound', 'near'} {'badness', 'evilness', 'evil', 'bad', 'ill'}二、中文
1.查询同义词
for synset in wn.synsets(u'计算机', lang='cmn'): types_of_computer = synset.hyponyms() print(sorted([lemma.name() for synset in types_of_ computer for lemma in synset.lemmas('cmn')])) ['便携式计算器', '加数器', '加法器', '加法器', '加法机', '加法计算器', '手摇计算器', '算术计算机', '算盘', '计数器', '计算机'] ['家用电脑', '家用计算机', '数字计算机', '模拟计算机', '网站', '网络站点'] for synset in wn.synsets(u'计算机', lang='cmn'): for lemma in synset.lemma_names('cmn'): print(lemma) 加数器 加法器 加法机 加法计算器 算术计算机 计算机 计算器 计算机 电子计算机 电脑 计算机2.利用中文查找同义词的英文
print(wn.lemmas(u'选择', lang='cmn')) [Lemma('choose.v.01.选择'), Lemma('elect.v.02.选择'), Lemma('pick.v.02.选择'), Lemma('option.n.02.选择'), Lemma('selection.n.02.选择')]3.中文的两个词相似度的查找
select = wn.synsets(u'选择', lang='cmn')[0] selectn3= wn.synsets(u'找出', lang='cmn')[0] print(select.path_similarity(selectn3)) 0.25参考文献:
1. https://blog.csdn.net/huxuanlai/article/details/62894413
2. https://blog.csdn.net/pearyangyang/article/details/70208863
3. https://blog.csdn.net/King_John/article/details/80252594
