我试图使用ViterbiParser和ChartParser解析句子" Bird fly。"跟踪过程似乎应该有效,但始终返回None
以下是痕迹。 (维特比):
Inserting tokens into the most likely constituents table...
Insert: |=.| Birds
Insert: |.=| fly
Finding the most likely constituents spanning 1 text elements...
Insert: |=.| NNS -> 'Birds' [1.0]
Insert: |=.| NP -> NNS [0.206897]
Insert: |.=| VB -> 'fly' [1.0]
Insert: |.=| VP -> VB [0.21875]
Finding the most likely constituents spanning 2 text elements...
Insert: |==| S -> NP VP [1.0]
ChartParser:
|. Birds . fly .|
Leaf Init Rule:
|[---------------] .| [0:1] 'Birds'
|. [---------------]| [1:2] 'fly'
Bottom Up Predict Combine Rule:
|[---------------] .| [0:1] NNS -> 'Birds' *
Bottom Up Predict Combine Rule:
|[---------------] .| [0:1] NP -> NNS *
Bottom Up Predict Combine Rule:
|[---------------> .| [0:1] NP -> NP * NP
|[---------------> .| [0:1] S -> NP * VP
Bottom Up Predict Combine Rule:
|. [---------------]| [1:2] VB -> 'fly' *
Bottom Up Predict Combine Rule:
|. [---------------]| [1:2] VP -> VB *
|. [--------------->| [1:2] VP -> VB * VP
|. [--------------->| [1:2] VP -> VB * ADJP
|. [--------------->| [1:2] VP -> VB * PP
Bottom Up Predict Combine Rule:
|. [--------------->| [1:2] VP -> VP * PP
|. [--------------->| [1:2] VP -> VP * NP
|. [--------------->| [1:2] VP -> VP * VP
Single Edge Fundamental Rule:
|[===============================]| [0:2] S -> NP VP *
两个解析器似乎都正确构建了句子,但仍然返回None。发生了什么事?
答案 0 :(得分:1)
经过几个小时的努力,我实际上发现了问题。我正在使用PCFG语法。语法中加载的第一个规则需要将左侧设置为语法的起始状态。没有明确的方法可以覆盖它。我改变了语法规则的顺序,现在它正在运作。
问题的确切原因...... PCFG正试图想出一条规则,这些规则会创建一个植根于“开始状态”的树。在我的情况下,它是“S”(对于句子)我已经无序地加载规则,所以它试图找到一个名词短语,因此无法提出一个有效的树。