s_childを使ったcabocha使用例

2014.05.07 現在 64bit版windows&Linux両方ともcabocha組み込み述語が無いので、
代用としてs_child述語を使用して対応しています。

test:-
kanji_mode(_,on),s_child(cabocha,['-f1','-d','/unidic'],A,B,C),
 see('test.txt',S),
  repeat,gets(S,D,N),f(A,B,D,E),write(E),N=:=1,
 seen(S),seen(B),told(A),told,s_kill(C,15).

f(A,B,[],[]):-!.
f(A,B,T,F):-puts(A,T),gets2(B,[0,0,0,0],D-D,E-E,F).

%%util
gets(S,L,N):-get0(S,X),gets(S,X,L,N).
gets(S,4,[],1):-!.
gets(S,26,[],1):-!.
gets(S,10,[],0):-!.
gets(S,13,[],0):-!.
gets(S,31,[],0):-!.
gets(S,14909570,[14909570],0):-!.
gets(S,14909569,[14909569],0):-!.
gets(S,X,[X|L],N):-gets(S,L,N).

gets2(S,[A,B,C,D],L,L2,E):-!,get0(S,X),gets2a(S,[A,B,C,X],L,L2,E).
gets2a(S,[69,79,83,31],_      ,_        ,[]   ):-!. %EOS\n
gets2a(S,[_,_,_,31]   ,T-[]   ,X-[U]    ,[A|E]):-!,name(U,T),nativ_cabocha_formattype(X,A),gets2(S,[0,0,0,0],Y-Y,Z-Z,E).
gets2a(S,[_,_,_,9]    ,T-[]   ,X-[U|Z]  ,E    ):-!,name(U,T),gets2(S,[0,0,0,0],Y-Y,X-Z,E).
gets2a(S,[_,_,_,32]   ,T-[]   ,X-[U|Z]  ,E    ):-!,name(U,T),gets2(S,[0,0,0,0],Y-Y,X-Z,E).
gets2a(S,[_,_,_,44]   ,[]-[]  ,X-['*'|Z],E    ):-!,gets2(S,[0,0,0,0],Y-Y,X-Z,E).
gets2a(S,[_,_,_,44]   ,T-[]   ,X-[U|Z]  ,E    ):-!,name(U,T),gets2(S,[0,0,0,0],Y-Y,X-Z,E).
gets2a(S,[A,B,C,D]    ,T-[D|L],X        ,E    ):-!,gets2(S,[B,C,D,0],T-L,X,E).

puts(I,[]):-!,nl(I).
puts(I,[A|L]):-put(I,A),puts(I,L).
%%%
nativ_cabocha_formattype([],[]):-!.
nativ_cabocha_formattype(['*'|L],['*'|L]):-!.
nativ_cabocha_formattype([A|L],B):-!,nativ_mecab_formattype([A,L],B).

nativ_mecab_formattype([ %unk
 A,[ %00.被形態素単語
 B,  %01.品詞大分類 ;pos1    
 C,  %02.品詞中分類 ;pos2    
 D,  %03.品詞小分類 ;pos3    
 E,  %04.品詞細分類 ;pos4    
 F,  %05.活用型     ;cType   
 G   %06.活用形     ;cForm
 ]],[A,B,C,D,E,F,G,'*',"*",'*','*']) :-!,name(A,A2).

nativ_mecab_formattype([ %nativ-mecab function
 A,[ %00.被形態素単語
 '名詞',  %01.品詞大分類               ;pos1
 C,  %02.品詞中分類                    ;pos2
 D,  %03.品詞小分類                    ;pos3
 E,  %04.品詞細分類                    ;pos4
 F,  %05.活用型                        ;cType
 G,  %06.活用形                        ;cForm
 H,  %07.語彙素読み                    ;lForm
 I,  %08.語彙素(語彙素表記+語彙素細分類);lemma
 J,  %09.書字形出現形                  ;orth
 K,  %10.発音形出現形                  ;pron
 L,  %11.書字形基本形                  ;orthBase
 M,  %12.発音形基本形                  ;pronBase
 N,  %13.語種                          ;goshu
 O,  %14.語頭変化型                    ;iType
 P,  %15.語頭変化形                    ;iForm
 Q,  %16.語末変化型                    ;fType
 R,  %17.語末変化形                    ;fForm
 S,  %18.仮名                          ;kana
 T,  %19.仮名形基本形                  ;kanaBase
 U,  %20.語形                          ;form
 V,  %21.語形基本形                    ;formBase
 W,  %22.語頭変化結合型                ;iConType
 X,  %23.語末変化結合型                ;fConType
 Y,  %24.アクセント型                   ;aType
 Z,  %25.アクセント結合型               ;aConType
 AA, %26.アクセント修飾型               ;aModType
 |_]],[A,'名詞',C,D,E,F,G,L,Z,AA]):-!.

nativ_mecab_formattype([ %nativ-mecab function
 A,[ %00.被形態素単語
 B,  %01.品詞大分類                    ;pos1
 C,  %02.品詞中分類                    ;pos2
 D,  %03.品詞小分類                    ;pos3
 E,  %04.品詞細分類                    ;pos4
 F,  %05.活用型                        ;cType
 G,  %06.活用形                        ;cForm
 H,  %07.語彙素読み                    ;lForm
 I,  %08.語彙素(語彙素表記+語彙素細分類);lemma
 J,  %09.書字形出現形                  ;orth
 K,  %10.発音形出現形                  ;pron
 L,  %11.書字形基本形                  ;orthBase
 M,  %12.発音形基本形                  ;pronBase
 N,  %13.語種                          ;goshu
 O,  %14.語頭変化型                    ;iType
 P,  %15.語頭変化形                    ;iForm
 Q,  %16.語末変化型                    ;fType
 R,  %17.語末変化形                    ;fForm
 S,  %18.仮名                          ;kana
 T,  %19.仮名形基本形                  ;kanaBase
 U,  %20.語形                          ;form
 V,  %21.語形基本形                    ;formBase
 W,  %22.語頭変化結合型                ;iConType
 X,  %23.語末変化結合型                ;fConType
 Y,  %24.アクセント型                    ;aType
 Z,  %25.アクセント結合型               ;aConType
 AA, %26.アクセント修飾型               ;aModType
 |_]],[A,B,C,D,E,F,G,I,Z,AA]):-!.
最終更新:2014年05月07日 16:42