详解依存树的来龙去脉及用法
来历
a.简单的短语分词(正向逆向最大匹配,n-gram,机器学习...)(以单个词为重点)
比如: 猴子喜欢吃香蕉。->猴子 喜欢 吃 香蕉 。
b.由分词转向词性标注
猴子/NN 喜欢/VV 吃/VV 香蕉/NN 。/PU
(但是能不能站在句子上分析呢?就有了下面的发展)
c.由词性标注生成短语句法树(从整个句子分析)
短语句法树的计算机表示
短语句法树的逻辑表示
d.由短语句法树转成依存树(依存关系可以用树形图表示,表示依存关系的树形图称为依存树dependency tree)
三个工具
由短语句法树转到依存树一般可用这三个工具,顺便有链接
1.penn2malt
https://link.jianshu.com/?t=http%3A%2F%2Fstp.lingfil.uu.se%2F%7Enivre%2Fresearch%2FPenn2Malt.html
根据说明就可以用,想具体了解怎么用,可以看我之前写的penn2malt简书(上面的链接)
2.Stanford Parser
http://nlp.stanford.edu:8080/parser/ 这是可以体验功能。
这个是工具包
https://nlp.stanford.edu/software/stanford-dependencies.shtml 教你怎么用stanford dependency parser这个工具代码。
3.LTH
https://link.jianshu.com/?t=http%3A%2F%2Fnlp.cs.lth.se%2F
下面这个链接
https://link.jianshu.com/?t=http%3A%2F%2Fnlp.cs.lth.se%2Fsoftware%2Ftreebank-converter%2F
里面有依存树的应用和工具,但是你阅读会发现不能转换中文语料库
转换的依存树长这个样子:
依存树
依存投射树
但是计算机中肯定就不是这么存的了。比如Stanford Parser 是这个样子的:
Stanford Parser Dependency Tree
这里的数字是这个词的序列: 猴子 -1,喜欢-2,吃-3,香蕉-4 (符号被抛弃)
比如:nsubj ( 喜欢-2,猴子-1)
nsubj是表示后两者的关系,这里前者是父亲,后者是儿子,也就是 猴子 依存于 喜欢 。
如果前面的关系实在想弄清楚是啥的话,这有个网站
https://link.jianshu.com/?t=http%3A%2F%2Fwenku.baidu.com%2Flink%3Furl%3DIfW-hkMfPuK29t49Wa_nO2UAMpP2oGYCUAZuY5PrHHIQHsIm5moH82DMbTA521PMhCC4svgGRSgUTaSkHktw5Ru6RQCCRjwuHfkNVB3mcum
存储的话就很简单啦。不在细说
两个基本问题
都挺简单的数据结构问题(多叉树的节点问题):
a. 已知一个节点怎么找到它的父(子)节点。
这个就很简单了。自己应该会的。
b. 求两个节点的最短路径
就是找到一个节点,把自己和所有父节点放到一个数组里,再在另一个节点,从本身开始顺着父节点找,直到找到和第一个节点并且存在于第一个数组里,这样,第一个数组从0开始到这个公共节点和第二个节点的从这个节点到自己本身的所有节点就是这俩节点的最短路径。
举个实在例子(意见抽取):
dependency tree是:
属性之间的最短路径:
注意的是,这个路径上每次经过的线(也就是他们俩的关系),这里的路径就是这个。
属性与评价之间的最短路径:
从这两组最短路径很明显看出谁跟谁更亲近,这也是最短路径的一个应用。
应用
短语缩句
提取文本主要内容
文本分类
情感分析
意见抽取等
用途还是极其广泛的。很多论文中现在还继续在用呢。
更多精彩内容,请关注 深度学习自然语言处理 公众号,就是下方啦!跟随小博主,每天进步一丢丢!哈哈!
详解依存树的来龙去脉及用法相关推荐
- python中index函数_详解python中的index函数用法
1.函数的创建 def fun(): #定义 print('hellow') #函数的执行代码 retrun 1 #返回值 fun() #执行函数 2.函数的参数 普通参数 :要按照顺序输入参数 de ...
- python3 yield 大文件_详解Python3中yield生成器的用法
任何使用yield的函数都称之为生成器,如: def count(n): while n > 0: yield n #生成值:n n -= 1 另外一种说法:生成器就是一个返回迭代器的函数,与普 ...
- 详解 javascript中offsetleft属性的用法(转)
详解 javascript中offsetleft属性的用法 转载 2015-11-11 投稿:mrr 我要评论 本章节通过代码实例介绍一下offsetleft属性的用法,需要的朋友可以做一 ...
- 详解Vue中watch的高级用法
转载自 详解Vue中watch的高级用法 我们通过实例代码给大家分享了Vue中watch的高级用法,对此知识点有需要的朋友可以跟着学习下. 假设有如下代码: 1 2 3 4 5 6 7 8 9 10 ...
- android studio 导入包分不分动态静态,详解Android studio 动态fragment的用法
fragment的使用时Android的基础,它有两种用法,第一个就是静态的fragment.第二个则是动态的fragment. 静态fragment直接在layout创建你想要的fragment的X ...
- python中heapq的库是什么_详解Python中heapq模块的用法
详解Python中heapq模块的用法 来源:中文源码网 浏览: 次 日期:2018年9月2日 [下载文档: 详解Python中heapq模块的用法.txt ] (友情提示:右键点上行t ...
- python中get函数是什么意思_详解python中get函数的用法(附代码)_后端开发
strncmp函数用法详解_后端开发 strncmp函数为字符串比较函数,其函数语法为"int strncmp ( const char * str1, const char * str2, ...
- 详解Python3中yield生成器的用法
这篇文章主要介绍了详解Python3中yield生成器的用法,是Python入门学习中的基础知识,需要的朋友可以参考下 任何使用yield的函数都称之为生成器,如: def count(n):whil ...
- c语言写程序if else,if else用法详解,C语言if else用法完全攻略
if else 语句是一种选择结构,可以让代码选择执行.所谓选择执行,就是"某些代码可能执行,也可能不执行,有选择地执行某些代码". if 的最简单用法 if最简单的格式是: if ...
- python中break怎么用_详解Python中break语句的用法
详解Python中break语句的用法 在Python中的break语句终止当前循环,继续执行下一个语句,就像C语言中的break一样. break最常见的用途是当一些外部条件被触发,需要从一个循环中 ...
最新文章
- Apache反向代理设置【转载】
- Ext fucionchart插件
- php 23种设计模型 - 装饰模式
- 【ACM】nyoj_540_奇怪的排序_201308050951
- Boost:字符串分割Split的测试程序
- 全局稳定性收敛平衡点为0吗_神经网络的稳定性阐明.pdf
- 洛谷 P1656 炸铁路
- sql server management studio性能分析_如何分析一条SQL的性能
- Unix系统的diff工具程序
- C#LeetCode刷题之#40-组合总和 II(Combination Sum II)
- 信安教程第二版-第15章网络安全主动防御技术与应用
- IIS7的FTP出错: 451 No mapping for the unicode character exists in the target multi-byte code page
- mooc中的习题--然后是几点
- 面试之mybatis和hibernate的区别
- 喜庆访问量突破200万
- java编程入门到精通课后答案,附源代码
- 对PHP中GD库的一些画图函数、及函数参数的学习总结(一)
- ios适配iPhone和iPad
- Android多线程理解
- 利用arduino红外库遥控美的家用空调