生成式句法分析指的是,生成一系列依存句法树,从它们中用特定算法挑出概率最大那一棵。句法分析中,生成模型的构建主要使用三类信息:词性信息、词汇信息和结构信息。前二类很好理解,而结构信息需要特殊语法标记,不做考虑。
本文主要利用了词汇+词性生成联合概率模型,使用最大生成树Prim算法搜索最终结果,得到了一个简单的汉语依存句法分析器。
开源项目
本文代码已集成到HanLP中开源:http://hanlp.dksou.com/
基本思路
统计词语WordA与词语WordB构成依存关系DrC的频次,词语WordA与词性TagB构成依存关系DrD的频次,词性TagA与词语WordB构成依存关系DrE的频次,词性TagA与词词性TagB构成依存关系DrF的频次。为句子中词语i与词语j生成多条依存句法边,其权值为上述四种频次的综合(主要利用词-词频次,其余的作平滑处理用)。取边的权值最大的作为唯一的边,加入有向图中。
在有向图上使用Prim最大生成树算法,计算出最大生成树,格式化输出。
模型训练
简单地统计一下清华大学语义依存网络语料,得到如下结果:
@符号连接起两个词汇或词性,用<>括起来的表示词性,否则是词汇。如果@后面没有内容,则表示频次,否则表示一些依存关系与其出现的频次。
依存句法分析
分词标注
以“我吃米饭”为例,先进行分词与词性标注,结果:
生成有向图
由于依存句法树中有虚根的存在,所以为其加入一个虚节点,这样一共有四个节点:
每个节点都与另外三个构成一条有向边,一共4 * 3 = 12 条:
<!--[if !supportLists]-->1. <!--[endif]-->##核心##/root 到 我/rr : 未知 10000.0
<!--[if !supportLists]-->2. <!--[endif]-->##核心##/root 到 吃/v : 未知 10000.0
<!--[if !supportLists]-->3. <!--[endif]-->##核心##/root 到 米饭/n : 未知 10000.0
<!--[if !supportLists]-->4. <!--[endif]-->我/rr 到 ##核心##/root : 核心成分 6.410175
<!--[if !supportLists]-->5. <!--[endif]-->我/rr 到 吃/v : 施事 21.061098 经验者 28.54827 目标 33.656525 受事 37.021248 限定 43.307335 相伴体 48.00737 关系主体 53.115623 内容 53.115623 来源 64.101746
<!--[if !supportLists]-->6. <!--[endif]-->我/rr 到 米饭/n : 限定 22.2052 施事 48.00737 受事 57.170277 目标 57.170277 经验者 64.101746 连接依存 64.101746
<!--[if !supportLists]-->7. <!--[endif]-->吃/v 到 ##核心##/root : 核心成分 1.7917595
<!--[if !supportLists]-->8. <!--[endif]-->吃/v 到 我/rr : 连接依存 96.688614 介词依存 107.67474 施事 107.67474
<!--[if !supportLists]-->9. <!--[endif]-->吃/v 到 米饭/n : 限定 24.849068
<!--[if !supportLists]-->10. <!--[endif]-->米饭/n 到 ##核心##/root : 核心成分 37.077995
<!--[if !supportLists]-->11. <!--[endif]-->米饭/n 到 我/rr : 连接依存 113.2556
<!--[if !supportLists]-->12. <!--[endif]-->米饭/n 到 吃/v : 受事 0.6931472
其中“未知”表示边不存在,“受事”“施事”表示依存关系,后面的小数表示权值。我对概率取了负对数,所以接下来用加法求最小生成树即可。
最小生成树
关于最小生成树的Prim算法请参考《最小生成树算法初步》,这里必须有所改动,由于虚根有且只能有一个孩子,所以虚根必须单独计算:
然后就是中规中矩的Prim算法:
得出最小生成树:
格式化输出
将其转为CoNLL格式输出:
可视化
使用可视化工具展现出来:
结果评测
我没有进行严格的测试,这只是一个玩具级别的汉语依存句法分析器。先来看几个good case与bad case——
效果比较马虎,为何这么说,这是因为分词的训练语料和句法分析语料不同,且我自知此方法严重依赖词汇共现,主要是这种二元词汇生成模型无法充分利用上下文。
短一点的搜索语句可能还是有微量的利用价值。
TODO
应当采用判别式模型,导入SVM或最大熵作为权值的计算工具,然后使用最大生成树算法获取全局最优解。
文章转载自hankcs 的博客
相关推荐
提出了一种事件触发词抽取方法,该方法针对单一触发词抽取方法没有充分利用依存句法分析信息且召回率不高的问题,通过综合利用依存句法分析信息和其他信息抽取触发词—实体描述对的方法来提高触发词抽取的召回率,...
针对中文复杂名词短语的依存句法分析...实验证明对于复杂名词短语的依存句法分析,算法准确率比简单边优先算法有明显提高,且优于基于最大生成树算法的中文句法分析器;算法分析效率更高,时间复杂度为O(n2 log n)。
MSTParser是以最大生成树理论为基础的判别式依存句法分析器。它将一科依存树的得分看作是 所有依存关系的得分的总和,从而依存分析的问题转化成如何寻找最高得分的依存树。
该文采用英文语义角色标注的研究方法,实现了一个基于中文依存句法分析的语义角色标注系统。该系统针对中文依存关系树,采用有效的剪枝算法和特征,使用最大熵分类器进行语义角色的识别和分类。系统使用了两种不同的...
Stanford_Parser中文句法分析器教程,主要是描述中文句法依存关系
中文分词 最短路分词 N-最短路分词 CRF分词 索引分词 极速词典分词 用户自定义词典 词性标注 命名实体识别 ...基于神经网络的高性能依存句法分析器 MaxEnt依存句法分析 CRF依存句法分析 语料库工具
目录前言语法分析器接口基本语法...因为我们要通过多态来实现两种语法分析器的分离,所以提取一个语法分析器接口IParser: interface IParser { T ToObject(string json); object ToObject(System.Type type, stri
基于神经网络的高性能依存句法分析器 MaxEnt依存句法分析 CRF依存句法分析 语料库工具 分词语料预处理 词频词性词典制作 BiGram统计 词共现统计 CoNLL语料预处理 CoNLL UA/LA/DA评测工具 在提供丰富功能的同时,...
蛋白质关系抽取(PPIE)任务...该工具能够从Enju句法分析器的结果中提取出标记蛋白质之间的依存关系路径。具体使用方法在工具使用说明中可以看到。 该工具贡献给PPI方向的研究者使用,希望大家提出宝贵意见,谢谢。
基于神经网络的高性能依存句法分析器 MaxEnt依存句法分析 CRF依存句法分析 语料库工具 分词语料预处理 词频词性词典制作 BiGram统计 词共现统计 CoNLL语料预处理 CoNLL UA/LA/DA评测工具 在提供丰富功能的同时,...
基于神经网络的高性能依存句法分析器 MaxEnt依存句法分析 CRF依存句法分析 语料库工具 分词语料预处理 词频词性词典制作 BiGram统计 词共现统计 CoNLL语料预处理 CoNLL UA/LA/DA评测工具 在提供丰富功能的同
基于神经网络的高性能依存句法分析器 MaxEnt依存句法分析 CRF依存句法分析 语料库工具 分词语料预处理 词频词性词典制作 BiGram统计 词共现统计 CoNLL语料预处理 CoNLL UA/LA/DA评测工具 在提供丰富功能的同时,...
基于神经网络的高性能依存句法分析器 MaxEnt依存句法分析 CRF依存句法分析 语料库工具 分词语料预处理 词频词性词典制作 BiGram统计 词共现统计 CoNLL语料预处理 CoNLL UA/LA/DA评测工具 在提供丰富功能的同时,...
基于神经网络的高性能依存句法分析器 MaxEnt依存句法分析 CRF依存句法分析 文本分类情感分析 word2vec 词向量训练、加载、词语相似度计算、语义运算、查询、KMeans聚类 文档语义相似度计算 语料库工具 分词语料...
基于神经网络的高性能依存句法分析器 MaxEnt依存句法分析 CRF依存句法分析 文本分类情感分析 word2vec 词向量训练、加载、词语相似度计算、语义运算、查询、KMeans聚类 文档语义相似度计算 语料库工具 分词语料...
hmm的matlab代码HanLP: ...依存句法分析 KMeans、Repeated Bisection、自动推断聚类数目k 词向量训练、加载、词语相似度计算、语义运算、查询、KMeans聚类 文档语义相似度计算 部分默认模型训练自小型
基于神经网络的高性能依存句法分析器 MaxEnt依存句法分析 CRF依存句法分析 语料库工具 分词语料预处理 词频词性词典制作 BiGram统计 词共现统计 CoNLL语料预处理 CoNLL UA/LA/DA评测工具 在提供丰富功能的同
基于ArcEager转移系统的柱搜索依存句法分析器 文本分类 情感分析 文本聚类 KMeans,Repeated Bisection,自动推断聚类数目k word2vec 词向量训练,加载,词语相似度计算,语义运算,查询,KMEANS聚类 文档语义相似度...
HanLP: Han Language Processing 汉语言处理包 HanLP是由一系列模型与算法组成的Java工具包,目标是普及自然语言处理...基于神经网络的高性能依存句法分析器 MaxEnt依存句法分析 CRF依存句法分析 语料库工具 分词语料预