프롤로그에 문장 파서를 만들었습니다. 그것은 성공적으로 입력되는 문장 ... ?- sentence([input,sentence,here],Parse).
프롤로그 문장 파서의 정보 처리
이 내가 문장을 구문 분석하는 데 사용하고 코드입니다 구문 분석 :
np([X|T],np(det(X),NP2),Rem):- /* Det NP2 */
det(X),
np2(T,NP2,Rem).
np(Sentence,Parse,Rem):- np2(Sentence,Parse,Rem). /* NP2 */
np(Sentence,np(NP,PP),Rem):- /* NP PP */
np(Sentence,NP,Rem1),
pp(Rem1,PP,Rem).
np2([H|T],np2(noun(H)),T):- noun(H). /* Noun */
np2([H|T],np2(adj(H),Rest),Rem):- adj(H),np2(T,Rest,Rem).
pp([H|T],pp(prep(H),Parse),Rem):- /* PP NP */
prep(H),
np(T,Parse,Rem).
vp([H| []], vp(verb(H))):- /* Verb */
verb(H).
vp([H|T], vp(verb(H), Rem)):- /* VP PP */
vp(H, Rem),
pp(T, Rem, _).
vp([H|T], vp(verb(H), Rem)):- /* Verb NP */
verb(H),
np(T, Rem, _).
내가 언급해야을 출력 될 것이라고 : sentence(np(det(a), np2(adj(very), np2(adj(young), np2(noun(boy))))), vp(verb(loves), np(det(a), np2(adj(manual), np2(noun(problem)))))).
미리 정의 된 어휘 사용 : det(a), adj(very), adj(young), noun(boy), verb(loves), det(a), adj(manual), noun(problem)
.
내가 원하는 것은 단어를 "주체, 동사 및 개체"인 세 가지 범주로 구분할 술어에 구문 분석 된 결과를 전달하는 것입니다.
(1) 제목에는 처음 두 개의 형용사와 명사가 있습니다.
(2) 동사는 "동사구"에서 동사를 보유합니다.
(3) 개체는 "동사구"에서 형용사와 명사를 보유합니다.
모든 결정자는 무시해야합니다.
예를 들어 출력에서 형용사를 찾는 조건자를 원합니다.
나는이 작업을 시도하지만 아무 것도 작동시키지 않으려 고 많은 일을 시도했다. 어떤 도움을 많이 주시면 감사하겠습니다. 문법에서 몇 가지 문제가 있습니다
?- s(Sem,[a,young,boy,loves,a,manual,problem],[]).
Sem = [noun(boy),verb(loves),noun(problem)]
:
좋아. 문장을 구문 분석하는 데 사용하는 코드를 추가했습니다. – Joseph