平成19年11月19日の講義メモです。


[今日の目標]
構文解析プログラムの作成
 処理対象:英文と日本語文
  (なお、日本語は形態素も可能な
  プログラムを作成する。)

[処理手順] 1.処理対象文の決定 2.処理対象文の分析  (IC分析とも言う) 3.単語の抽出 4.品詞の決定 5.構文規則の設定 6.単語辞書の設定 7.Prologへの変換 8.動作確認
【文法の設定】 処理対象文: Tom broke the cup. <= 本当はこちらを処理したい tom broke the cup <= prologの都合で、各単語は小文字から始まらなければならない。 文法: 文 -> 主語 動詞 目的語 主語 -> 名詞 目的語 -> 名詞句 名詞句 -> 冠詞 名詞 名詞 -> [tom] 名詞 -> [cup] 動詞 -> [broke] 冠詞 -> [the] Prologのプログラム作成 英文を処理するもの [Version1] 文(A,D):- 主語(A,B),動詞(B,C),目的語(C,D). 主語(A,B):-名詞(A,B). 目的語(A,B):-名詞句(A,B). 名詞句(A,C):-冠詞(A,B),名詞(B,C). 名詞([tom|T],T). 名詞([cup|T],T). 動詞([broke|T],T). 冠詞([the|T],T). [Version2(構文構造を出力)] 文(A,D,文(_主語,_動詞,_目的語)):- 主語(A,B,_主語), 動詞(B,C,_動詞), 目的語(C,D,_目的語). 主語(A,B,主語(_名詞)):- 名詞(A,B,_名詞). 目的語(A,B,目的語(_名詞句)):- 名詞句(A,B,_名詞句). 名詞句(A,C,名詞句(_冠詞,_名詞)):- 冠詞(A,B,_冠詞), 名詞(B,C,_名詞). 名詞([tom|T],T,名詞(tom)). 名詞([cup|T],T,名詞(cup)). 動詞([broke|T],T,動詞(broke)). 冠詞([the|T],T,冠詞(the)). 日本語を処理するもの  処理対象文:メロスは走る [Version1] 文 -> 主語 述語 主語 -> 名詞 助詞 述語 -> 動詞 名詞 -> [メロス] 助詞 -> [は] 動詞 -> [走る] [Version2] 文(A,C,文(_主語,_述語)):- 主語(A,B,_主語), 述語(B,C,_述語). 主語(A,C,主語(_名詞,_助詞)):- 名詞(A,B,_名詞), 助詞(B,C,_助詞). 述語(A,B,述語(_動詞)):- 動詞(A,B,_動詞). 名詞([メロス|T],T,名詞(メロス)). 助詞([は|T],T,助詞(は)). 動詞([走る|T],T,動詞(走る)). [Version3(形態素解析もできる例)] 文(A,C,文(_主語,_述語)):- 主語(A,B,_主語), 述語(B,C,_述語). 主語(A,C,主語(_名詞,_助詞)):- 名詞(A,B,_名詞), 助詞(B,C,_助詞). 述語(A,B,述語(_動詞)):- 動詞(A,B,_動詞). 名詞([メ,ロ,ス|T],T,名詞(メロス)). 助詞([は|T],T,助詞(は)). 動詞([走,る|T],T,動詞(走る)). %うまく処理できる例 test(A) :- 文([メ,ロ,ス,は,走,る],[],A). %このプログラムでは処理できない例 %(未知語「新幹線」があるため) test(A) :- 文([新,幹,線,は,走,る],[],A). (以上)