依存句法分析解析算法之Chu-LiuEdmonds

依存句法分析解析算法之Chu-Liu/Edmonds

之前一直在学习依存句法分析的学习算法,也编程实现了一点。不过,因为当时没有学习解析算法,所以在训练特征权重时没有拿预测的依存树和正确的依存树比较,而是直接将正确依存树中的依存对包含的特征的权重加一,然后再用遍历的方法选出句子的依存树,导致分析结果很差,大部分句子中只有两个依存对是正确的。所以现在决定学习解析算法,希望以后能跟学习算法结合起来,提高系统分析的准确性。

Chu-Liu/Edmonds Algorithm

1、如果有进入根的弧,则将其全部丢弃。对于除根以外的每个节点,选择权重最大的输入弧,让所选的n-1个弧成为集合s;

2、如果上述集合s中没有形成循环,则该集合是一个最大生成树,算法结束。否则,进行下一步;

3、如果上述集合s中包含循环,将循环中的节点看作一个节点c,并留下该节点c指向其他节点权重最大的弧,丢弃其它;

4、如果上述集合s中包含循环,将循环中的节点看作一个节点c,并根据以下内容修改从循环外的某个节点(i)进入循环中的节点(j)的弧的权重:

s(i,c)=s(i,j) - (s(a(j),j) + s(c)

其中s(i,j)表示节点i到节点j弧的权重, (s(a(j),j)表示循环c中到节点j的弧的权重,s(c)表示循环中各个弧权重的总和;

5、对于每个循环,选择具有最大权重的输入弧,并用新的权重替换原来弧的权重;

6、将步骤5得到的有向图返回步骤2.

该算法的关键思想是找到具有最大权重以消除循环c。

等我实现了该算法,下篇博客会给个例子。

猜你喜欢

转载自blog.csdn.net/haoronge9921/article/details/79731560