このディレクトリの索引

このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1286978599/863
#  [1] 授業単元:自然言語処理  
#  [2] 問題文(含コード&リンク): 
#  ttp://nlp.dse.ibaraki.ac.jp/~shinnou/lecture/nl/rep1.pdf 
#  課題2のみです。 
#  
# 「自然言語処理」第1 回レポート課題
# 〆切: 11 月19 日(金)
# 以下の2つの課題のプログラムをC あるいはJava を用いて作成せよ。プログラムの解説もつ
# けること。提出は、以下の宛先にメールでソースファイルと解説の文書を添付ファイルにして送っ
# て下さい。ただし解説の文書はメール本文に書いても良いです。
# shinnou@mx.ibaraki.ac.jp
# 課題1 日本語の文節は「平仮名以外の文字列+平仮名文字列」から構成されるというヒューリスティ
# クスがある。このヒューリスティクスに基づいて、テキスト内の文章を文節に分割するプロ
# グラムをC あるいはJava で作成せよ。ただしテキストは全角文字と改行だけで記述されて
# いるとする。またテキストはファイルに書かれており、プログラムへの入力はそのファイル
# を与える形にすること。プログラムの解説も書くこと。
# (実行例)
# > type jdata.txt
# 私は茨城県に住んでいる茨城大学の工学部に通う学生です。
# > kadai1.exe jdata.txt (Java では>java Kadai1 jdata.txt )
# 私は
# 茨城県に
# 住んでいる
# 茨城大学の
# 工学部に
# 通う
# 学生です
# 。
# 

'日本語の文節は「平仮名以外の文字列+平仮名文字列」から構成されるというヒューリスティクスがある。このヒューリスティクスに基づいて、テキスト内の文章を文節に分割する'(_文章,_文節ならび) :-
        atom_chars(_文章,Chars),
        テキスト内の文章を文節に分割する(Chars,_文節ならび).

テキスト内の文章を文節に分割する([],[]) :- !.
テキスト内の文章を文節に分割する(L,[S]) :-
        平仮名以外の文字ならび(L),
        atom_chars(S,L),!.
テキスト内の文章を文節に分割する(_文字ならび,[_文節|R]) :-
        append(L0,L1,L2,_文字ならび),
        平仮名以外の文字ならび(L0),
        平仮名の文字ならぴ(L1),
        平仮名文字から始まらない(L2),
        append(L0,L1,L),
        atom_chars(_文節,L),
        テキスト内の文章を文節に分割する(L2,R).

平仮名以外の文字ならび([]) :- !.
平仮名以外の文字ならび([A|R]) :-
        \+(平仮名(A)),
        平仮名以外の文字ならび(R).
        
平仮名の文字ならび([]) :- !.
平仮名の文字ならび([A|R]) :-
        平仮名(A),
        平仮名以外の文字ならび(R).

平仮名文字から始まらない([]) :- !.
平仮名文字から始まらない([A|_]) :-
        \+(平仮名(A)).

平仮名(A) :-
        A @>= あ,
        A @=< ん,!.