WordNet是面向语义的英语词典,与传统辞典类似,但结构更丰富。nltk中包括英语WordNet,共有155287个单词和117659个同义词。

1.寻找同义词

这里以motorcar为例,寻找它的同义词集。

1 >>> from nltk.corpus importwordnet as wn2 >>> wn.synsets('motorcar') //找到同义词集3 [Synset('car.n.01')]4 >>> wn.synset('car.n.01').lemma_names5

6 >>> wn.synset('car.n.01').lemma_names() //访问同义词集7 ['car', 'auto', 'automobile', 'machine', 'motorcar']8 >>>

1 >>> wn.synset('car.n.01').definition() //获取该词在该词集的定义2 'a motor vehicle with four wheels; usually propelled by an internal combustion engine'

3 >>> wn.synset('car.n.01').examples() //获取该词在该词集下的例句4 ['he needs a car to get to work']5 >>> wn.synset('car.n.01').lemmas()6 [Lemma('car.n.01.car'), Lemma('car.n.01.auto'), Lemma('car.n.01.automobile'), Lemma('car.n.01.machine'), Lemma('car.n.01.motorcar')]7 >>> wn.lemma('car.n.01.automobile')8 Lemma('car.n.01.automobile')9 >>> wn.lemma('car.n.01.automobile').synset()10 Synset('car.n.01')11 >>> wn.lemma('car.n.01.automobile').name()12 'automobile'

13 >>> wn.synsets('car')14 [Synset('car.n.01'), Synset('car.n.02'), Synset('car.n.03'), Synset('car.n.04'), Synset('cable_car.n.01')]15 >>> for synset in wn.synsets('car'):16 ... print(synset.lemma_names())17 ...18 ['car', 'auto', 'automobile', 'machine', 'motorcar']19 ['car', 'railcar', 'railway_car', 'railroad_car']20 ['car', 'gondola']21 ['car', 'elevator_car']22 ['cable_car', 'car']23 >>> wn.lemmas('car') //访问所有包含词car的词条24 [Lemma('car.n.01.car'), Lemma('car.n.02.car'), Lemma('car.n.03.car'), Lemma('car.n.04.car'), Lemma('cable_car.n.01.car')]25 >>>

View Code

2.WordNet的层次结构

WordNet的同义词集相当于抽象的概念,它们并不总是有对应的英语词汇。这些概念在层次结构中相互联系在一起。

如上图,是WordNet概念的层次片段。每个节点对应一个同义词集,边表示上位词/下位词关系,即上级概念与从属概念的关系。

1 >>> motorcar=wn.synset('car.n.01')2 >>> types_of_motorcar=motorcar.hyponyms()3 >>> types_of_motorcar[26]4 Synset('stanley_steamer.n.01')5 >>>sorted(6 ... [lemma.name()7 ... for synset intypes_of_motorcar8 ... for lemma insynset.lemmas()])9 ['Model_T', 'S.U.V.', 'SUV', 'Stanley_Steamer', 'ambulance', 'beach_waggon', 'beach_wagon', 'bus', 'cab', 'compact', 'compact_car', 'convert

10 ible','coupe','cruiser','electric','electric_automobile','electric_car','estate_car','gas_guzzler','hack','hardtop','hatchback','

11 heap','horseless_carriage','hot-rod','hot_rod','jalopy','jeep','landrover','limo','limousine','loaner','minicar','minivan','pace12 _car','patrol_car','phaeton','police_car','police_cruiser','prowl_car','race_car','racer','racing_car','roadster','runabout','sal13 oon','secondhand_car','sedan','sport_car','sport_utility','sport_utility_vehicle','sports_car','squad_car','station_waggon','statio14 n_wagon','stock_car','subcompact','subcompact_car','taxi','taxicab','tourer','touring_car','two-seater','used-car','waggon','wago15 n']

16 >>>motorcar.hypernyms()17 [Synset('motor_vehicle.n.01')]18 >>> paths=motorcar.hypernym_paths()19 >>>len(paths)20 2

21 >>> [synset.name for synset inpaths[0]]22 [, , , , , , , , , , ]27 >>> [synset.name() for synset inpaths[0]]28 ['entity.n.01', 'physical_entity.n.01', 'object.n.01', 'whole.n.02', 'artifact.n.01', 'instrumentality.n.03', 'container.n.01', 'wheeled_veh

29 icle.n.01','self-propelled_vehicle.n.01','motor_vehicle.n.01','car.n.01']

30 >>> [synset.name() for synset in paths[1]]31 ['entity.n.01', 'physical_entity.n.01', 'object.n.01', 'whole.n.02', 'artifact.n.01', 'instrumentality.n.03', 'conveyance.n.03', 'vehicle.n.

32 01','wheeled_vehicle.n.01','self-propelled_vehicle.n.01','motor_vehicle.n.01','car.n.01']

33 >>>motorcar.root_hypernyms()34 [Synset('entity.n.01')]35 >>>

View Code

3.更多的词汇关系

上位词和下位词被称为词汇关系,因为它们是同义集之间的关系。这两者的关系为上下定位“is-a”层次。WordNet网络另一个重要的定位方式是从条目到它们的部件(部分)或到包含它们的东西(整体)。

1)部分-整体关系

1 >>> wn.synset('tree.n.01').part_meronyms()2 [Synset('burl.n.02'), Synset('crown.n.07'), Synset('limb.n.02'), Synset('stump.n.01'), Synset('trunk.n.01')]3 >>> wn.synset('tree.n.01').substance_meronyms()4 [Synset('heartwood.n.01'), Synset('sapwood.n.01')]5 >>> wn.synset('tree.n.01').member_holonyms()6 [Synset('forest.n.01')]7 >>> for synset in wn.synsets('mint', wn.NOUN):8 ... print("%s : %s" %(synset.name(), synset.definition())9 ...10 ...11 ... )12 ...13 batch.n.02 : (often followed by `of') a large number or amount or extent

14 mint.n.02 : any north temperate plant of the genus Mentha with aromatic leaves andsmall mauve flowers15 mint.n.03: any member of the mint family of plants16 mint.n.04 : the leaves of a mint plant used fresh orcandied17 mint.n.05 : a candy that isflavored with a mint oil18 mint.n.06 : a plant where money iscoined by authority of the government19 >>> wn.synset('mint.n.04').part_holonyms()20 [Synset('mint.n.02')]21 >>> wn.synset('mint.n.04').substance_holonyms()22 [Synset('mint.n.05')]

2)蕴涵关系

1 >>> wn.synset('walk.v.01').entailments()2 [Synset('step.v.01')]3 >>> wn.synset('eat.v.01').entailments()4 [Synset('chew.v.01'), Synset('swallow.v.01')]5 >>> wn.synset('tease.v.03').entailments()6 [Synset('arouse.v.07'), Synset('disappoint.v.01')]

3)反义词

1 >>> wn.lemma('supply.n.02.supply').antonyms()2 [Lemma('demand.n.02.demand')]3 >>> wn.lemma('rush.v.01.rush').antonyms()4 [Lemma('linger.v.04.linger')]5 >>> wn.lemma('horizontal.a.01.horizontal').antonyms()6 [Lemma('inclined.a.02.inclined'), Lemma('vertical.a.01.vertical')]7 >>> wn.lemma('staccato.r.01.staccato').antonyms()8 [Lemma('legato.r.01.legato')]9 >>>

4. 语义相似度

同义词集是由复杂的词汇关系网络所连接起来的。给定一个同义词集,可以遍历WordNet网络来查找相关含义的同义词集。每个同义词集都有一个或多个上位词路径连接到一个根上位词。连接到同一个根的两个同义词集可能有一些共同的上位词。如果两个同义词集共用一个特定的上位词——在上位词层次结构中处于较底层——它们一定有密切的联系。

python词汇网络流行语_python 自然语言处理(五)____WordNet相关推荐

  1. python词汇网络流行语_流水的语言,铁打的Python!

    "流水的语言,铁打的 Python" 一.Python 对新手极其友好 二.Python 具备大数据处理能力 三.Python 拥有惊人数量的库 四.Python 可靠并且高效 五 ...

  2. python测试网络连通性_python 判断网络连通的实现方法

    开发中偶尔需要判断网络的连通性,没有什么方法比 ping 更直接了当,通常检查网络情况都是运行命令ping www.baidu.com ,查看输出信息即可. C:\Users>ping www. ...

  3. python测试网络连通性_Python测试网络连通性示例【基于ping】

    本文实例讲述了Python测试网络连通性.,具体如下: Python代码 #!/usr/bin/python # -*- coding:GBK -*- """Docume ...

  4. python获取网络时间_python获取网络时间和本地时间

    今天我们来看一下如何用python获取网络时间和本地时间,直接上代码吧,代码中都有注释. python获取网络时间获取网络时间 def getBeijinTime(): ""&qu ...

  5. python判断网络连通性_Python测试网络连通性示例【基于ping】

    本文实例讲述了Python测试网络连通性.分享给大家供大家参考,具体如下: Python代码 #!/usr/bin/python # -*- coding:GBK -*- ""&q ...

  6. 对python的评价语_Python自然语言处理学习笔记之评价(evaluationd)

    对模型的评价是在test set上进行的,本文首先介绍测试集应该满足的特征,然后介绍四种评价方法. 一.测试集的选择 1.首先,测试集必须是严格独立于训练集的,否则评价结果一定很高,但是虚高,不适用于 ...

  7. python添加横线代码_Python中的五种下划线

    1 1.单前导下划线 _var2 3 单个下划线是一个Python命名约定,表示这个名称是供内部使用的. 它通常不由Python解释器强制执行,仅仅作为一种对程序员的提示4 5 程序员使用名称前的单下 ...

  8. python下载网络错误_python下载出现问题

    下载第三方库失败:例如 C:\Users\HP>pip install selenium Collecting selenium Downloading https://files.python ...

  9. python高级网络编程_Python高级网络编程系列之基础篇

    一.Socket简介 1.不同电脑上的进程如何通信? 进程间通信的首要问题是如何找到目标进程,也就是操作系统是如何唯一标识一个进程的! 在一台电脑上是只通过进程号PID,但在网络中是行不通的,因为每台 ...

最新文章

  1. ipad html 自定义裁剪,canvas裁剪clip()函数的具体使用
  2. VTK:vtkCompositePolyDataMapper2用法实战
  3. VTK:几何对象之OpenVRTessellatedBoxSource
  4. explain 之key rows extra
  5. 自从阿里买了Flink母公司以后,你不懂Flink就out了!
  6. python win32gui安装_python-无法安装win32gui
  7. 最符合的多载方法有一些無效的引數_SMT小批量贴片加工厂的贴片加工的首件测试方法...
  8. MySQL做毕设_PHP+MYSQL在线小说阅读网的设计与实现
  9. 拓端tecdat|R语言中的隐马尔可夫HMM模型实例
  10. Windows与Linux比较:相似与不同
  11. freeMark模板导出word
  12. TinyMCE 富文本编辑器 ━━ 自定义插件之弹窗基础设置(整理)
  13. ctfmon.exe windows输入法无法启动
  14. 分享9个ps、pr免费教程网站
  15. 初识 Speex 语音压缩
  16. 【学习笔记】贪心科技AI体验课
  17. 物联网应用技术竞赛——android笔记
  18. 如何在Vue项目中应用TypeScript?
  19. ARCHS[@]: unbound variable
  20. 存储过程排版工具_文案创作者必备的7个写作辅助工具类网站,记得收藏

热门文章

  1. ISBN-10和ISBN-13有什么区别?
  2. 面试官让我用Flex写色子布局,我直接给写了6个
  3. 安装MySQL 5.6.13.1出现 Urhandled exception has occurred in your application. If you click Continue....
  4. 笔记本硬盘数据清除之后如何找回
  5. jdbc通用查询方法
  6. 小米蓝牙耳机无法连接且无法重新配对
  7. 自制安卓版iPhone计算器
  8. 赚钱、读书,提升自己
  9. 商城项目--全选,反选 vue2.x+JQ代码(俩种实现方式)
  10. Altium designer 生成PCB制作文件及打样流程(以嘉立创商城为例)