目前想进行汉语的依存句法分析,最初采用的是Stanford parser,结果不尽如人意。目前考虑的有LTP 4.0, 百度的DDparser, 这两个分析器都有文章说明正确率。想问下Hanlp相比于这两个分析器在依存句法的分析上有什么区别呢?在一般文本依存句法分析的表现上正确率如何呢?简而言之,如果我要使用Hanlp进行汉语的依存句法分析,要怎么justify my choice呢?
你问对了问题,整个论坛只有句法分析的帖子我最喜欢回复。
任何“准确率”,包括论文里的,特别是商业产品的,且信十分之一二吧。你只有在自己的数据上训练一下,才能拿到真实的准确率。你的言外之意是HanLP没有公布准确率吗?这又是一个常见的误解了,首页文档教你如何查看NER的准确率,你自然可以用同样的方式查看句法分析的准确率。HanLP发布了许多模型,每个模型目录下的test.log
都记录了测试集上的准确率和分析速度。这些数据都是程序跑出来自动生成的,比起别人填在广告上的,你觉得哪个可信度更高呢?
百度除了丑闻之外倒是听说得不多。LTP应该用的也是Biaffine,跟HanLP一样。但HanLP的发布早了一年,这一年学业繁忙,最新的PLM没时间整合进2.0,所以应该在嵌入层略有逊色。从17年到现在,句法分析模型上有3项工作最受瞩目。一是Biaffine,二是HPSG,三是CRF。其中,CRF在嵌入层很先进时作用很有限,而HPSG可以看作是一种联合学习,是当前的SOTA模型。众所周知,CTB依存树库是从短语树库转换过来的,转换规则是人写的必然有错误。而HPSG直接建模短语树库,出于对HPSG的兴趣,我复现了这一模型,预计放入2.1版本在年底发布。
两者用的语料相差也很大,几乎没有可比性。
在语料上,LTP使用的是2012年发布的CDT1.0,含有90万单词,来源是92年到96年的人民日报。HanLP使用的是2016年发布的CTB9,含有200万单词,来源覆盖近年来的新闻、杂志、广播、微博、论坛、短信、聊天等新媒体领域。你觉得,哪个在“一般文本”上的准确率更高呢?
我从来不在公开场合“推销”什么,因为HanLP和Stanford是开源免费的,而你列举的LTP是商业收费的。我,包括HanLP和这个社区的目的,就是为了纠正一些大众的偏见和误解,普及看待问题的正确方式。一旦思路对了,你的品位也就会上来了,这时候哪怕你不用HanLP了,你也会选择比HanLP更先进的技术,而不是被其他残次品迷惑双眼,我依然会感觉值得。
感谢您耐心的回复!我个人是文科生,之所有要对汉语进行依存句法分析为的是计算具有依存关系的两个词之间的距离,以此来反映对于文本的加工难度(有学者提出可以如此计算)。所以可能更关注的只是操作层面。根据百度DDparser在Github的主页,依存句法分析在UAS的正确率为94.80%(身为文科生,非常不好意思,我甚至还不知道UAS/LAS等一些术语的真实含义),但是它的依存关系只有14种,LTP也只有15种。就我个人文科生的理解,具有不同数量的依存关系的句法分析器可以互相比较吗?因为我目前的重点在于操作,可能还是会先用pyhanlp分析下,因为它可以直接输入句子得到结果,然后我再人工检查吧。Hanlp 2.0还要输入单词的pos,对于我目前的编程水平而言还是有些麻烦。
再次感谢您的回复!
对方使用的语料是私有的,无法与其他软件直接对比。
语料不同,依存关系基本也不同,最终结果自然也无法直接比较。一般而言,依存关系越多,难度越大,准确率相应地会越低。不过依存关系少,很多语法覆盖不到,对下游应用也没有用处。这个完全看自己的需求吧,你可以看看 https://hanlp.hankcs.com/ 比较一下,pyhanlp和2.0用的依存关系是不一样的。
其实这里已经写好了,拿过来用就行了。
非常感谢您耐心和详细的回复!
您好!我目前也在学习关于依存距离和句法复杂度的相关内容,遇到了不少麻烦,如果有机会的话可以交流一下么?我的wx:EdCh2637