Python列表到解析树

时间:2018-06-14 23:12:59

标签: parsing recursion grammar parse-tree cyk

在Python中,我有一个如下列表的输入 -

[('S', ['NP', 'VP']),
('A', ['V', 'NP']),
('VP', ['V', 'NP']),
('NP', ['DET', 'NP']),
('N', "'mouse'"),
('NP', "'mouse'"),
('DET', "'the'"),
('V', "'saw'"),
('N', "'Ron'"),
('NP', "'Ron'")]

这是以下CYK算法的结果 -

S -> NP VP
VP -> A NP | V NP
NP -> N N | DET NP | 'chocolate' | 'cat' | 'John' | 'Ron' | 'mouse'
DET -> 'the'
N -> 'chocolate' | 'cat' | 'John' | 'Ron' | 'mouse'
V -> 'saw' | 'bought' | 'ate'
A -> V NP

我想要匹配的字符串是“Ron看到鼠标”

我想将输出关联起来 -

(S (NP Ron) (VP (V saw) (NP (DET the) (NP mouse))))

我不确定应该如何构造算法,特别是使用可能包含多个输出的模糊算法。 我该如何构建代码?有/或没有递归的任何建议应该是更好的方法吗?

UPDATE ---

在使用输入列表添加额外的父节点和子节点位置值后,我设法获得了一个完全解析树。但我的问题并没有解决模棱两可的句子。

0 个答案:

没有答案