依存句法分析器的简单实现
生成式句法分析指的是,生成一系列依存句法树,从它们中用特定算法挑出概率最大那一棵。句法分析中,生成模型的构建主要使用三类信息:词性信息、词汇信息和结构信息。前二类很好理解,而结构信息需要特殊语法标记,不做考虑。
本文主要利用了词汇+词性生成联合概率模型,使用最大生成树Prim算法搜索最终结果,得到了一个简单的汉语依存句法分析器。
开源项目
本文代码已集成到HanLP中开源:http://hanlp.dksou.com/
基本思路
统计词语WordA与词语WordB构成依存关系DrC的频次,词语WordA与词性TagB构成依存关系DrD的频次,词性TagA与词语WordB构成依存关系DrE的频次,词性TagA与词词性TagB构成依存关系DrF的频次。为句子中词语i与词语j生成多条依存句法边,其权值为上述四种频次的综合(主要利用词-词频次,其余的作平滑处理用)。取边的权值最大的作为唯一的边,加入有向图中。
在有向图上使用Prim最大生成树算法,计算出最大生成树,格式化输出。
模型训练
简单地统计一下清华大学语义依存网络语料,得到如下结果:
@符号连接起两个词汇或词性,用<>括起来的表示词性,否则是词汇。如果@后面没有内容,则表示频次,否则表示一些依存关系与其出现的频次。
依存句法分析
分词标注
以“我吃米饭”为例,先进行分词与词性标注,结果:
生成有向图
由于依存句法树中有虚根的存在,所以为其加入一个虚节点,这样一共有四个节点:
每个节点都与另外三个构成一条有向边,一共4 * 3 = 12 条:
1. ##核心##/root 到 我/rr : 未知 10000.0
2. ##核心##/root 到 吃/v : 未知 10000.0
3. ##核心##/root 到 米饭/n : 未知 10000.0
4. 我/rr 到 ##核心##/root : 核心成分 6.410175
5. 我/rr 到 吃/v : 施事 21.061098 经验者 28.54827 目标 33.656525 受事 37.021248 限定 43.307335 相伴体 48.00737 关系主体 53.115623 内容 53.115623 来源 64.101746
6. 我/rr 到 米饭/n : 限定 22.2052 施事 48.00737 受事 57.170277 目标 57.170277 经验者 64.101746 连接依存 64.101746
7. 吃/v 到 ##核心##/root : 核心成分 1.7917595
8. 吃/v 到 我/rr : 连接依存 96.688614 介词依存 107.67474 施事 107.67474
9. 吃/v 到 米饭/n : 限定 24.849068
10. 米饭/n 到 ##核心##/root : 核心成分 37.077995
11. 米饭/n 到 我/rr : 连接依存 113.2556
12. 米饭/n 到 吃/v : 受事 0.6931472
其中“未知”表示边不存在,“受事”“施事”表示依存关系,后面的小数表示权值。我对概率取了负对数,所以接下来用加法求最小生成树即可。
最小生成树
关于最小生成树的Prim算法请参考《最小生成树算法初步》,这里必须有所改动,由于虚根有且只能有一个孩子,所以虚根必须单独计算:
然后就是中规中矩的Prim算法:
得出最小生成树:
格式化输出
将其转为CoNLL格式输出:
可视化
使用可视化工具展现出来:
结果评测
我没有进行严格的测试,这只是一个玩具级别的汉语依存句法分析器。先来看几个good case与bad case——
效果比较马虎,为何这么说,这是因为分词的训练语料和句法分析语料不同,且我自知此方法严重依赖词汇共现,主要是这种二元词汇生成模型无法充分利用上下文。
短一点的搜索语句可能还是有微量的利用价值。
TODO
应当采用判别式模型,导入SVM或最大熵作为权值的计算工具,然后使用最大生成树算法获取全局最优解。
文章转载自hankcs 的博客
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
新技术+规模效应双重加持 阿里云宣布华北3全系降价25%
在可乐和汉堡都在涨价的今天,云计算厂商可谓一股清流,引领了一波又一波降价潮。 日前,全球科技巨头阿里云在2018杭州·云栖大会上宣布开启新一轮降价,涉及20余款产品,进一步提升竞争力。其中华北3地域的弹性计算、数据库、存储等核心云产品的平均降幅高达25%,自然语言处理、智能语音交互等AI产品等均有大幅下调,另有多款面向开发者的产品提供免费试用。 阿里云产品降价一览 技术大升级和规模效应的双重加持是本轮降价的主因。阿里云于2017年发布的神龙技术架构实现了革命性的突破:将虚拟机的性能损耗降为零。同时研发POLARDB数据库、ESSD云盘、函数计算等新品,从软件层面充分发挥发挥计算资源的效率,释放技术红利。 另一方面,云计算是典型的规模效应行业,用户体量的增长进一步降低了云计算的边际成本。美国权威调研机构Gartner最新报告显示,阿里云已连
- 下一篇
【云产品】内容安全服务
大家好,我们都知道最近直播短视频类可以说是非常火爆了,海量的流量随之而来的问题就是鉴别不合规的内容,单纯的依靠人工审核是远远不够的,今天给大家介绍由阿里云推出的内容安全这款产品。内容安全是一款多媒体内容智能识别服务,支持对图片、视频、文本、语音等对象进行多样化场景检测,有效帮助您降低内容违规风险。常用的检测场景包括:智能鉴黄、暴恐涉政识别、图文广告识别、logo识别、敏感人脸识别、二维码识别、OCR图文识别、文本反垃圾、语音反垃圾、文件内容反垃圾等。内容安全提供【站点检测】功能,可以定期自动检测您的网站上的风险和违规内容;【OSS违规检测】功能,对您指定的OSS空间中的图片和视频进行涉黄、涉政检测;您也可以直接调用【内容检测API】,提交指定场景的机器识别任务。开通内容安全流程图产品的优势内容安全支持对海量多媒体内容进行快速检测,接入便捷、成本低,且经历实战检验,有效帮助您节省90%以上的人工审核成本。1、性价比高在节省90%以上的人力成本的同时,支持秒级返回结果,达到99%以上的准确率。2、经历实战检验支撑阿里系淘宝、支付宝等核心业务,经历双11实战检验,拥有海量的特征样本及丰富的数...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Hadoop3单机部署,实现最简伪集群
- MySQL8.0.19开启GTID主从同步CentOS8