「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
AB %27.AI-TALK用中間言語
%XXX %素性構造パラメータ
|_]],[A,'名詞',C,D,E,F,G,L,AB2,Z,AA]):-!,name(AB,AB2).
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
AB %27.AI-TALK用中間言語
%XXX %素性構造パラメータ
|_]],[A,B,C,D,E,F,G,I,AB2,Z,AA]):-!,name(AB,AB2).
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]):-!.