PHPとMeCabでオートリンクの実装をする の続きエントリー.
上ではMeCabを用いてオートリンクを行う仕組みを作ったので,これをPHPで使うのがこのエントリーの目的.
まず,ウノウではPHPのMecab拡張モジュールを用いている.
ただ俺はPHPからコマンドプロンプトに処理を投げる方式を用いる.
利用する関数はshell_execです.
ポイントはコマンドプロンプトから入力したコマンド
mecab -d.
にある.
このコマンドのドットがカレントディレクトリを指しているので,PHPから利用する場合は絶対パス指定をしてやればOK.
つまり
mecab -d "C:\Program Files\MeCab\dic\autolink"
と同義であるということ.
これを踏まえて簡単なPHPで実装する.
<?php
echo mecab("京都に行きたいな");
function mecab($input){
$mecab = '"C:\Program Files\MeCab\bin\mecab.exe"';
$mecab2 = '"C:\Program Files\MeCab\dic\autolink"';
$str= shell_exec('echo '.$input.' '.$mecab." -d ".$mecab2);
return $str;
}
?>
で実装ができる.
ソースは適宜変更するべし.
以上.
2008/01/31
PHPとMeCabでオートリンクの実装をする2
PHPとMeCabでオートリンクの実装をする
ウノウラボ
PHPとMecabでキーワード自動リンクを実装する(以下,ウノウ)
を参照して,PHPとMeCabを用いたオートリンクの実装をWindowsで試みる.
知識不足のせいでいろいろ戸惑った箇所があったので,俺のようなダメ院生でも理解できるように書く.アドバイスを頂いた研究室の先輩には大感謝.
------
MeCabインストールに関しては割愛.
今回俺は C:\Program Files\MeCab にインストールをした.
-----
自動リンク用辞書の作成
ここはウノウを参照して同じものを作成する.
- 単語辞書(url.csv)
- 連接表(matrix.def)
- 未知語の文字定義(char.def)
- 未知語用品詞定義(unk.def)
- 設定ファイル(dicrc)
拡張子はありません.
俺は C:\Program Files\MeCab\dic\ipadic の中のdicrcをコピーして中を書き換えた.
もしくは,コマンドプロンプトから C:\Program Files\MeCab\dic\autolink>ren dicrc.txt dicrc とリネームしてもOK.
-----
さて,これらのファイルを用いて辞書のコンパイルを行う.
ウノウの例を見てみると1行目に
# /usr/libexec/mecab/mecab-dict-index -f utf-8 -c utf-8
とある.正直意味不明だった.
この例はLinuxで行ってるため,今回のようにWindowsで行う場合は以下の方法を試す.
まず,1行目にあるmecab-dict-indexに注目する.
C:\Program Files\MeCab\bin の中にmecab-dict-index.exeがあることを確認して欲しい.
他にはmecab.exeなどもある.
ここで確認しておく.
MeCabを使うためのPATHは通してあるだろうか?
俺のインストール先を例にするならば c:\program files\mecab\bin とPATHを通す.
これ必須.
試しにプロンプトでmecab-dict-indexと入力してみる.
C:\>mecab-dict-index
'mecab-dict-index' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
と出るのであれば,PATHが通ってない.
コマンドプロンプトを立ち上げたり,PATHを見直してみることをお薦めする.
C:\>mecab-dict-index
dictionary_compiler.cpp(70) [param.load(DCONF(DICRC))] no such file or directory: .\dicrc
と表示されるならOKである.
ということで,コンパイルをはじめる.
今回作成したautolinkフォルダまでカレントディレクトリを移動させる.
そこで,以下のコマンドを使用.
C:\Program Files\MeCab\dic\autolink>mecab-dict-index -f shuft-jis -c shuft-jis
エンコードは適宜
C:\Program Files\MeCab\dic\autolink>mecab-dict-index -f UTF-8 -c UTF-8
のように変更すること.
すると何かぐちゃぐちゃと表示された後,最後に「done!」と表示されれば成功だ.
autolinkフォルダのファイルが増えていることを確認しよう.
--
コンパイルに成功したところで,さっそく使ってみる.
コマンドは
C:\Program Files\MeCab\dic\autolink>mecab -d .
である.
その後待機状態になるので入力文を入力する.
C:\Program Files\MeCab\dic\autolink>mecab -d.
京都でムフフなことしたいどすえ
京都でムフフなことしたいどすえ
大成功である.
ちなみに mecab -d . のドットはカレントディレクトリを指すので重要.
ゴミと思って入力し忘れないように.
MeCabを用いたオートリンクの実装に成功した.
ウノウの例では,PHPのMeCab拡張モジュールを用いてPHPの実装を行っているが,今回はコマンドプロンプトを直接介して処理を行う.
これに関しては以下の別エントリーで解説します.
PHPとMeCabでオートリンクの実装をする2
--
参考リンク
http://labs.unoh.net/2008/01/keyword-autolink-using-php-and-mecab.html
http://mecab.sourceforge.net/dic-detail.html
http://d.hatena.ne.jp/tokushiman/20071024/1198588473
http://ratti.kachoufuugetu.net/diary/diary_archive/0710.html(10/25(10/25)の記事
2008/01/22
RDFGravityに投げてみた
今日は他研究室の先輩に研究のお話をして頂いた.
大変貴重なお話や提案をして頂き,研究が一歩前進したと思う.
ありがとうございました.
--
今構築しているオントロジーをRDF Gravity(RDFファイル可視化ツールのようなもの)に投げてみたら凄いことになった笑
Subscribe to:
Posts (Atom)