Category: AZ-Prolog全般

回答:

/*
Win版Mecab,Cabochaの提供ライブラリは32ビットアプリのため、2011年現在、AZ-PrologX64にリンクして利用することができませんが、
次のような簡単なプログラムによってMecab,Cabochaを子プロセスとして立ち上げ、利用することができます。
*/

:-kanji_mode(_,off).

:- public launch_put/2.

launch_put(I,[]) :- !,nl(I).
launch_put(I,[A|L]) :-put(I,A),launch_put(I,L).

:- public launch_get/2.

launch_get(O,L):- launch_get2(O,dummy,[_|L]).

launch_get2(O,[‘EOS’] ,[] ):-!.
launch_get2(O,X, [X|L]):- get0(O,S),m_get(O,S,Q-Q,Y),launch_get2(O,Y,L).

m_get(O,31,Q-[], W):- !,m_to_atom(Q,W-[]). % End Of Line
m_get(O,D, Q-[], W):- (D=32;D=9;D=44),!,m_to_atom(Q,W-L),get0(O,Y),m_get(O,Y,R-R,L). % Delimita
m_get(O,X, Q-[X|R],W):- get0(O,Y),m_get(O,Y,Q-R,W). % Word Proceeding

m_to_atom([],L-L):-!.
m_to_atom(X,[A|L]-L):-name(A,X).

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% Launcher Test Program ( How To Use ) %%%%

test_mecab:- test(mecab,[]).
test_cabocha1:- test(cabocha,[]).
test_cabocha2:- test(cabocha,[‘-f1’]).

test(Exe,Param):-
s_child(Exe,Param,I,O,D),
launch_put(I,”私の名前は稲葉です”),
launch_get(O,L),
s_kill(D,9),              
m_write(L).

m_write([]):-!,nl.
m_write([X|L]):- write(X),nl,m_write(L).

/*
<実行例>

| ?-test_mecab.
[私,名詞,代名詞,一般,*,*,*,私,ワタシ,ワタシ]
[の,助詞,連体化,*,*,*,*,の,ノ,ノ]
[名前,名詞,一般,*,*,*,*,名前,ナマエ,ナマエ]
[は,助詞,係助詞,*,*,*,*,は,ハ,ワ]
[稲葉,名詞,固有名詞,人名,姓,*,*,稲葉,イナバ,イナバ]
[です,助動詞,*,*,*,特殊・デス,基本形,です,デス,デス]
*/

上部へスクロール