依存句法分析的TOK与REL的位置偏差

依存句法分析的TOK和REL的位置偏差

你好,我在用hanlp对句子做依存句法分析的过程中发现:有一些TOK和REL对不上。
下面是一些问题和例子。

问题1:

我理解”与“ 应该对应COO。但我发现,COO会被标记在”和”,”与“这些字的上一个位置。

例子1:

sentence = '当前由于硅片环节格局尚好,盈利性能够维持,电池与组件环节已经微利,头部企业市占率提升。

从依存关系图来看,电池是COO,与是LAD。

依存关系树如下:

Dep Tree            	Tok	Rel
────────────────────	───	───
┌──────────────────►	当前 	ADV
│         ┌────────►	由于 	LAD
│         │      ┌─►	硅片 	ATT
│         │   ┌─►└──	环节 	ATT
│         │┌─►└─────	格局 	SBV
│         ││     ┌─►	尚  	ADV
│      ┌─►└┴─────┴──	好  	IC 
│      │     ┌─────►	,  	PUN
│      │     │   ┌─►	盈利 	ATT
│      │     │┌─►└──	性  	SBV
│      │     ││  ┌─►	能够 	ADV
│   ┌─►└─────┴┴──┴──	维持 	IC 
│   │    ┌─────────►	,  	PUN
│   │    │      ┌──►	电池 	COO
│   │    │      │┌─►	与  	LAD
│   │    │   ┌─►└┴──	组件 	ATT
│   │    │┌─►└──────	环节 	SBV
│   │    ││      ┌─►	已经 	ADV
│┌─►└────┴┴──────┴──	微利 	IC 
││        ┌────────►	,  	PUN
││        │      ┌─►	头部 	ATT
││        │   ┌─►└──	企业 	ATT
││        │┌─►└─────	市占率	SBV
└┴────────┴┴─────┬──	提升 	HED
                 └─►	。  	PUS

例子2:

sentence = '硅料、硅片和电池片环节近期均上调了价格,给组件环节带来明显的压力,终端接受度有限。'

从依存关系图来看,硅片是COO,和是LAD。

Dep Tree       	Tok	Rel
───────────────	───	───
            ┌─►	硅  	ATT
         ┌─►└──	料  	COO
         │┌───►	、  	PUN
         ││┌──►	硅片 	COO
         │││┌─►	和  	LAD
      ┌─►└┴┴┴──	电池片	ATT
   ┌─►└────────	环节 	SBV
   │       ┌──►	近期 	ADV
   │       │┌─►	均  	ADV
┌─►└───────┼┼──	上调 	IC 
│          │└─►	了  	MT 
│          └──►	价格 	VOB
│    ┌────────►	,  	PUN
│    │┌─►┌─────	给  	ADV
│    ││  │  ┌─►	组件 	ATT
│    ││  └─►└──	环节 	POB
│ ┌─►└┼────────	带来 	IC 
│ │   │     ┌─►	明显 	DE 
│ │   │  ┌─►└──	的  	ATT
│ │   └─►└─────	压力 	VOB
│ │     ┌─────►	,  	PUN
│ │     │   ┌─►	终端 	ATT
│ │     │┌─►└──	接受度	SBV
└─┴─────┴┴──┬──	有限 	HED
            └─►	。  	PUS

问题2: DE的位置错误

sentence = '公司认为,2021年上半年大宗商品、多晶硅等原材料及国际海运费价格快速上涨推动了光伏组件价格的上涨,使得光伏发电终端市场需求低迷'

从依存关系树来看:价格是DE,的是ATT。

Dep Tree               	Token   	Rel
───────────────────────	────────	───
                    ┌─►	公司      	SBV
┌───────────────────┴──	认为      	HED
│     ┌───────────────►	,       	PUN
│     │            ┌──►	2021年上半年	ATT
│     │            │┌─►	大宗      	ATT
│     │         ┌─►└┴──	商品      	COO
│     │         │   ┌─►	、       	PUN
│     │      ┌─►└───┼──	多晶硅     	ATT
│     │      │      └─►	等       	RAD
│     │      │   ┌────►	原材料     	COO
│     │      │   │┌───►	及       	LAD
│     │      │   ││┌──►	国际      	ATT
│     │      │   │││┌─►	海运      	ATT
│     │   ┌─►└───┴┴┴┴──	费       	ATT
│     │   │        ┌──►	价格      	SBV
│     │   │        │┌─►	快速      	ADV
│     │┌─►└────────┴┴──	上涨      	SBV
│  ┌─►└┴┬───────────┬──	推动      	IC 
│  │    │           └─►	了       	MT 
│  │    │           ┌─►	光伏      	ATT
│  │    │        ┌─►└──	组件      	ATT
│  │    │     ┌─►└─────	价格      	DE 
│  │    │  ┌─►└────────	的       	ATT
│  │    └─►└───────────	上涨      	VOB
│  │                ┌─►	,       	PUN
└─►└─────┬┬─────────┴──	使得      	VOB
         ││        ┌──►	光伏      	ATT
         ││        │┌─►	发电      	ATT
         ││     ┌─►└┴──	终端      	ATT
         ││  ┌─►└──────	市场      	ATT
         │└─►└─────────	需求      	VOB
         └────────────►	低迷      	ACT

我用的tok和dep的包如下:

tok = hanlp.load(hanlp.pretrained.tok.COARSE_ELECTRA_SMALL_ZH)

dep = hanlp.load(hanlp.pretrained.dep.PMT1_DEP_ELECTRA_SMALL)

请问这里是出现了bug还是我对依存树的理解有偏差呢?非常期待和感谢大家的回复。

“与”并不应该对应COO(一般并列),“与”的词性是连词不错,但“电池”和“组件”才构成“一般并列”关系,所以从“组件”到“电池”的依存关系被标注为COO。这是完全正确的,你可能把依存关系理解为词性了。

Dep Tr	To	Rel
──────	──	───
   ┌─►	光伏	DE 
┌─►└──	的 	    ATT
└─────	价格	HED

不能这么看,按照定义(Fraser, 1994): head是决定修饰语(dependent)的词语。

A head determines whether a dependent is optional or obligatory (as modifier of the head), not vice versa.

在因果上,依存关系是非对称的。PMT体系认为,“的”作为head,决定“光伏”可以以DE关系修饰它。类似的例子可以在PMT语料库中找到很多:

1	人类	_	n	_	_	2	DE	_	_
2	的	_	u	_	_	5	ATT	_	_
3	生存	_	n	_	_	5	COO	_	_
4	与	_	c	_	_	5	LAD	_	_
5	发展	_	n	_	_	7	SBV	_	_
6	还	_	d	_	_	7	ADV	_	_
7	面临	_	v	_	_	0	HED	_	_
8	种种	_	q	_	_	11	QUN	_	_
9	威胁	_	n	_	_	11	COO	_	_
10	和	_	c	_	_	11	LAD	_	_
11	挑战	_	n	_	_	7	VOB	_	_
12	。	_	w	_	_	7	PUN	_	_

HanLP 的预测和可视化是正确的,与PMT论文中的实例相同:

hankcs.com 2022-07-30 at 1.52.02 PM

“价格”作为head决定“的”以ATT关系(属性)修饰它,但并不能说“价格”是“的”的属性,而是“光伏的”这个子树的属性,“的”只不过恰好是“光伏的”这个子树的根节点而已。其实PMT这种设计有点非主流,接近成分句法,但偏离了依存句法的本意。

如果你想直接得到“光伏”修饰“价格”,你就不应该用PMT,而应该用SD或UD体系。这两家不愧拥有世界一流的语言学家,对依存体系的设计更合理:

Dep Tr	To	Relati
──────	──	──────
┌─►┌──	光伏	assmod
│  └─►	的 	    assm  
└─────	价格	root  

assmod的SD定义为

associative modifier

关联修饰

例如:

企业的商品
assmod(商品,企业)