이 CYK 파서 정확한 결과?
-
13-12-2019 - |
문제
나을 배우려고 노력 CYK 분석하는 알고리즘.
이 설정의 문법 규칙,결과 테이블이 올바른지에 대한 두 개의 주어진 문장은?
S -> NP VP
VP -> VB NP
NP -> DT NN
PP -> IN NP
NP -> NP PP
NP -> NN
VP -> VP PP
IN -> with
NN -> dog
NN -> cat
VB -> ate
NN -> mouse
DT -> the
['S']
[None, None]
[None, None, 'VP']
['NP', None, None, 'NP']
['DT', 'NN', 'VB', 'DT', 'NN']
['the', 'cat', 'ate', 'the', 'dog']
['S']
['NP', None]
['NP', None, 'VP']
['NP', None, None, 'NP']
[None, None, 'VP', None, None]
[None, None, 'VP', None, None, 'PP']
['NP', None, None, 'NP', None, None, 'NP']
['DT', 'NN', 'VB', 'DT', 'NN', 'IN', 'DT', 'NN']
['the', 'cat', 'ate', 'the', 'dog', 'with', 'the', 'cat']
해결책
할 수 있습을 최소화하기 위해 노력의 문법 먼저,몇 가지가 있기 때문에 불필요한 규정 또한 그 이유는 not in CNF
.
그것을 보고 더 많은 간결하게,당신이이 일어날 None
에 첫 번째 예에서,두 번째 행에는 두 번째 열에 있습니다.거기에는 그것이 실제로 가능하가 S
, 지만,이후에 논리 CYK 할 수 없는 추가 등과 같은 최적화 NP->NN
.거기에서 S -> NP VP
앞서 언급한 None
셀룰라가 없습니다.때문에 CYK 수행할 수 없는 그, 문법에 있어야 합니다 CNF.그래서,기본적으로 거칠게 다음과 같를 적용 하려고 하는 C 컴파일러에서는 C++프로그램(이 없는 C++라이브러리)입니다.당신 lucky 도 올바른 결과를 얻을 상단에 있습니다.
는 말했다,나는가에 탐닉하는 두 번째 예는 당신입니다.
을 명확히 하기 위해,문법에 CNF
이 있는 경우 규칙 만 이러한 두 가지 형태:
S->AB
A->a
그래서 명확하게 같은 뭔가 NP -> NN
지에 CNF.
제휴하지 않습니다 StackOverflow