組み込みmecab使用例

「組み込みmecab使用例」の編集履歴(バックアップ)一覧はこちら

組み込みmecab使用例」(2014/05/15 (木) 14:29:00) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

az-prologではオープンソースの形態素解析ツールMecabを簡単に使える ライブラリがあります。 ここでは簡単にテキストデータから名詞の表層系のみを抽出するプログラムを作ってみましょう。 windowsの場合は,Babbageを使ってUTF-8形式に対応する必要があります。 .plファイルもutf8形式で保存して下さい。 C:\prolog>prolog_c -utf8 :-dlib_require(mecab). test:-init, see('Input.txt',S), repeat,gets(S,X,N),f(X),N=:=1, seen(S),told. init:- [-'my_mecab.pl'], kanji_mode(_,on), abolish(mecabID,2),mecab_init. f([]):-!. f(X):-!,name(Y,X),is_atom(Y),mecab_get(Y,B),nlist(B,C),f2(C). is_atom(Y):-var(Y),!,fail. is_atom(Y):-integer(Y),!,fail. is_atom(Y):-atom(Y),!. f2([]):-!. f2([[A,'名詞'|_]|L]):-!,tella('Output.txt'),write(A),nl,told,f2(L). f2([A|L]):-!,f2(L). %%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). %my_mecab.pl /* %組み込みmecab述語一覧 mecab_new mecab_strerror mecab_destroy mecab_sparse_tonode mecab_sparse_tostr mecab_nbest_init mecab_nbest_next_tonode mecab_nbest_end mecab_version */ %use mecab with single dictionary :- extern det:mecab_sparse_tonode/4. :- extern det:mecab_new/2. :- extern det:mecab_destroy/1. mecab_init:-mecab_new(M,['M','-d','/dictionary']),assertz(mecabID(M,3)). %3=col size mecab_get(S,N):-mecabID(M,A),!,mecab_sparse_tonode(M,S,A,N). mecab_end:-retract(mecabID(M,S)),!,mecab_destroy(M). 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,'*','*','*']) :-!. 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 ;fForm S, %18.kana ;kana T, %19.kanaBase ;kanaBase U, %20.form ;form V, %21.formBase ;formBase W, %22.iConType ;iConType X, %23.fConType ;fConType Y, %24.aType ;aType Z, %25.aConType ;aConType AA, %26.aModType ;aModType |_]],[A,B,C,D,E,F,G,H,I,J]). Mecabのフォーマットについては以下を参照して下さい。 http://www.az-prolog.com/manual/manuals/manual_mecab-cabocha.html#mecab 9-5-3.Mecabインタフェース
az-prologではオープンソースの形態素解析ツールMecabを簡単に使える ライブラリがあります。 ここでは簡単にテキストデータから名詞の表層系のみを抽出するプログラムを作ってみましょう。 windowsの場合は,Babbageを使ってUTF-8形式に対応する必要があります。 .plファイル、入力ファイル、辞書データはutf8形式で使用して下さい。 C:\prolog>prolog_c -utf8 :-dlib_require(mecab). test:-init, see('Input.txt',S), repeat,gets(S,X,N),f(X),N=:=1, seen(S),told. init:- [-'my_mecab.pl'], kanji_mode(_,off), abolish(mecabID,2),mecab_init. f([]):-!. f(X):-!,name(Y,X),is_atom(Y),mecab_get(Y,B),nlist(B,C),f2(C). is_atom(Y):-var(Y),!,fail. is_atom(Y):-integer(Y),!,fail. is_atom(Y):-atom(Y),!. f2([]):-!. f2([[A,'名詞'|_]|L]):-!,tella('Output.txt'),write(A),nl,told,f2(L). f2([A|L]):-!,f2(L). %%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). %my_mecab.pl /* %組み込みmecab述語一覧 mecab_new mecab_strerror mecab_destroy mecab_sparse_tonode mecab_sparse_tostr mecab_nbest_init mecab_nbest_next_tonode mecab_nbest_end mecab_version */ %use mecab with single dictionary :- extern det:mecab_sparse_tonode/4. :- extern det:mecab_new/2. :- extern det:mecab_destroy/1. mecab_init:-mecab_new(M,['M','-d','/dictionary']),assertz(mecabID(M,3)). %3=col size mecab_get(S,N):-mecabID(M,A),!,mecab_sparse_tonode(M,S,A,N). mecab_end:-retract(mecabID(M,S)),!,mecab_destroy(M). 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,'*','*','*']) :-!. 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 ;fForm S, %18.kana ;kana T, %19.kanaBase ;kanaBase U, %20.form ;form V, %21.formBase ;formBase W, %22.iConType ;iConType X, %23.fConType ;fConType Y, %24.aType ;aType Z, %25.aConType ;aConType AA, %26.aModType ;aModType |_]],[A,B,C,D,E,F,G,H,I,J]). Mecabのフォーマットについては以下を参照して下さい。 http://www.az-prolog.com/manual/manuals/manual_mecab-cabocha.html#mecab 9-5-3.Mecabインタフェース

表示オプション

横に並べて表示:
変化行の前後のみ表示: