mecab


【さくら】php-mecabが突然使用できなくなった件

php-mecab を使用してるページがエラーしか表示されなくなった。

表示されたエラー
---------------------------------------------------
Fatal error: Class 'Mecab' not found in /home/username/www/xxxx.html on line 20
---------------------------------------------------

推測だが、さくらインターネットの PHP のバージョンが勝手に変更されたのが原因だと思う。phpinfo で mecab が表示されない。つまり、php-mecab が認識されていない。

解決用法、mecab および php-mecab を入れ直した。

入れ直し時に注意すること。

・mecab と php-mecab の古いファイルは念のため削除しておく。上書きされるかと思ったがうまくいかなかった。(これがうまくいかない原因だったかは不明)

・php-mecab のインストール時に php のバージョンを指定する箇所があるので新しいバージョンに合わせる。

・さくらにデフォルトインストールの mecab に問題があった場合解決が難しいので、自前の mecab を local 領域にいれて使用したほうが解決しやすい。(今回、デフォルト → 自前 に変更した)

mecabで半角記号が名詞,サ変接続になるのを解決する

初期設定のmecabは半角記号がなぜか、名詞,サ変接続になる

-------------------------------
; 名詞,サ変接続,*,*,*,*,*
\ 名詞,サ変接続,*,*,*,*,*
-------------------------------

サ変接続の名詞とは、サ変動詞に繋げることができる名詞のこと。
後ろに「~される」「~した」「~する」「~せよ」などが続いても違和感の無い名詞。「後悔」する、「録画」した、「撮影」される、といった言葉。

記号は記号であって、サ変接続の名詞ではないので、これでは困る。

半角記号を「記号」と認識してしまうのは、半角記号がmecabにとって未定義の文字(未知語)で、未知語の記号を「名詞,サ変接続」に分類するように未知語用のファイルに定義されているからである。

なので、未知語用のファイルをいじれば、問題は解決する。

解決方法

1.未知語用のファイルを開く

ファイル名は、unk.def。
(unk は unknown の略。拡張子「.def」は定義ファイル。(Define))

ここにあった。(インストール前の辞書ディレクトリ内)
--------------------------------------------
/home/username/local/mecab-ipadic-2.7.0-20070801
--------------------------------------------

開くと、こんな感じで未知語の処理方法が書いてある。
--------------------------------------------
KANJI,1292,1292,12649,名詞,固有名詞,組織,*,*,*,*
KANJI,1289,1289,17340,名詞,固有名詞,人名,一般,*,*,*
KANJI,1288,1288,15295,名詞,固有名詞,一般,*,*,*,*
SYMBOL,1283,1283,17585,名詞,サ変接続,*,*,*,*,*
NUMERIC,1295,1295,27386,名詞,数,*,*,*,*,*
ALPHA,1285,1285,13398,名詞,一般,*,*,*,*,*
ALPHA,1293,1293,18706,名詞,固有名詞,地域,一般,*,*,*
ALPHA,1292,1292,13835,名詞,固有名詞,組織,*,*,*,*
--------------------------------------------

「SYMBOL」の部分を変更。

変更後
--------------------------------------------
SYMBOL,1283,1283,17585,記号,一般,*,*,*,*,*
--------------------------------------------

2.辞書を再インストール

辞書を作り直す。

mecab-dict-indexを実行して再作成。
--------------------------------------------
/home/username/local/libexec/mecab/mecab-dict-index
--------------------------------------------

辞書再作成の詳細はこちらの真ん中より下らへんを参照。

参考ページ
こちら1  こちら2

テキストファイルのpythonスクリプトでcabochaがエラーになる

テキストファイルのpythonスクリプトでcabochaがエラーになったときの対処法。

ターミナルではpythonでcabochaが動かせるが、テキストファイルに記述したpythonスクリプトからcabochaを実行するとエラーになった。

【環境と前提】
・さくらスタンダードプラン
・/home/username/localに自前のpython2.7がインストール済み
・/home/username/localにcabochaがインストール済み
・テキストファイルのpythonスクリプトでのみ問題発生。

エラー内容(Apacheのエラーログ)
------------------------------------------------------
Traceback (most recent call last):
File "python_test2.cgi", line 5, in
import CaboCha
File "/home/username/local/lib/python2.7/site-packages/CaboCha.py", line 26, in
CaboCha = swig_import_helper()
File "/home/username/local/lib/python2.7/site-packages/CaboCha.py", line 22, in swig_import_helper
mod = imp.load_module('_CaboCha', fp, pathname, description)
ImportError: Shared object "libcabocha.so.4" not found, required by "_CaboCha.so"
------------------------------------------------------
テキストのpythonスクリプトだと、共有オブジェクトが見つからないよう。パスが通ってないということだろう。

解決方法

スクリプトの先頭の記述を次のように変更した。

------------------------------------------------------
#!/home/username/local/bin/python
------------------------------------------------------

↓↓↓

------------------------------------------------------
#! /usr/bin/env -S LD_LIBRARY_PATH=/home/workroom/local/lib /home/workroom/local/bin/python
------------------------------------------------------

参考:こちらのページの最後ら辺

さくら共用サーバーにcabochaをインストールする

さくら共用サーバーにcabochaをインストールした際の覚書。

cabochaのインストールや利用方法についてはこちら

前提として、mecab0.97が入っている。
インストール場所は、/home/username/local とする。

1.CRF++をインストールする

----------------------------------------------------
//ダウンロード。「https」だとエラーが出る。
wget http://crfpp.googlecode.com/files/CRF%2B%2B-0.58.tar.gz

tar xzvf CRF++-0.58.tar.gz //解凍

//「$HOME」が「~(チルダ)」だとエラーが出る。
./configure --prefix=$HOME/local

make install //インストール。
----------------------------------------------------

2.cabochaをインストールする

最新版であった「cabocha-0.67」をダウンロードした。
MeCab (0.993以降)が必要と記述されていたが、構わず進めた。

----------------------------------------------------
wget http://cabocha.googlecode.com/files/cabocha-0.67.tar.bz2
----------------------------------------------------

続けて、以下のコマンド。
----------------------------------------------------
tar xzvf cabocha-0.67.tar.bz2
cd cabocha-0.67
./configure --prefix=$HOME/local --with-charset=utf8 --enable-utf8-only LDFLAGS="-L$HOME/local/lib" CPPFLAGS="-I$HOME/local/include" --with-mecab-config=$HOME/local/bin/mecab-config
make
make install
----------------------------------------------------

すると、make installのところでエラー発生!

エラー内容
----------------------------------------------------
morph.cpp: In member function 'virtual bool CaboCha::MorphAnalyzer::parse(CaboCha::Tree*) const':
morph.cpp:197: error: 'mecab_lattice_new' was not declared in this scope
morph.cpp:203: error: 'MECAB_ALLOCATE_SENTENCE' was not declared in this scope
morph.cpp:203: error: 'mecab_lattice_add_request_type' was not declared in this scope
morph.cpp:207: error: 'mecab_lattice_set_sentence2' was not declared in this scope
morph.cpp:209: error: 'mecab_parse_lattice' was not declared in this scope
morph.cpp:211: error: 'mecab_lattice_strerror' was not declared in this scope
morph.cpp:214: error: 'mecab_lattice_get_bos_node' was not declared in this scope
morph.cpp: In static member function 'static void CaboCha::MorphAnalyzer::clearMeCabLattice(mecab_lattice_t*)':
morph.cpp:223: error: 'mecab_lattice_clear' was not declared in this scope
morph.cpp: In static member function 'static void CaboCha::MorphAnalyzer::deleteMeCabLattice(mecab_lattice_t*)':
morph.cpp:228: error: 'mecab_lattice_destroy' was not declared in this scope
*** [morph.lo] Error code 1

Stop in /home/username/local/cabocha-0.67/src.
*** [all-recursive] Error code 1

Stop in /home/username/local/cabocha-0.67.
*** [all] Error code 1

Stop in /home/username/local/cabocha-0.67.
%
----------------------------------------------------

エラー内容の詳細は不明だが、mecabとcabochaのバージョンが合ってないことがエラー原因と当たりをつけて、cabochaのバージョンを下げてリトライ。
(後日、新しい最新のmecab入りにcabocha-0.67を試みたところ、エラーも出ずインストールできた)

cabocha0.60のインストール
----------------------------------------------------
wget http://cabocha.googlecode.com/files/cabocha-0.60.tar.gz
tar xzvf cabocha-0.60.tar.gz
cd cabocha-0.60
./configure --prefix=$HOME/local --with-charset=utf8 --enable-utf8-only LDFLAGS="-L$HOME/local/lib" CPPFLAGS="-I$HOME/local/include" --with-mecab-config=$HOME/local/bin/mecab-config
(make) ← 実行コマンドを読み返したが抜けていた・・・
make install
----------------------------------------------------

あっさりインストールできた。

cabochaを実行
----------------------------------------------------
/home/username/local/bin/cabocha
----------------------------------------------------

※パスも通しておく。パスが通っているにもかかわらずcabochaが実行できない場合は、サーバーに再ログインする。

テキストファイルに書いたpythonスクリプトからcabochaをimportを試みるとエラーになる場合は、こちら

mecabをインストールしたら、これもやる。
----------------------------------------------------
mecabで半角記号が名詞,サ変接続になるのを解決する
----------------------------------------------------

windows版mecabにutf-8のシステム辞書を追加する

windows版mecabにシステム辞書を追加する。(unix版はこちら
unicodeの文字も扱いたいので、辞書の文字コードはutf-8とする。

環境: windows 7 (64bit)

windows版のmecab(辞書の文字コードutf-8)が既にインストールされていることが前提。

1.utf-8で書かれた辞書を用意する

こちらのページの1~3を参考

2.インストール済みmecabの辞書をutf-8に保存し直す

windowsにインストールされたmecabの辞書データはsjisで保存されている(インストール時にutf-8を選んだとしても)。拡張子がCSVとdefのファイルが辞書データなのですべてutf-8に保存し直す。(ディレクトリ全体に対してutf-8変換してもいい) ←ダメだった

辞書CSVファイルのパス
---------------------------------------------
C:\Program Files (x86)\MeCab\dic\ipadic
---------------------------------------------

文字コード一括変換のために使用したソフト
KanjiTranslator
「UTF-8(BOM無し)」「改行=CR+LF」← この設定で行った

utf-8に変換したら、追加用の辞書も同じフォルダに放り込む

3.辞書をコンパイルし直す

mecab-dict-indexを実行するので、mecab-dict-index.exeのあるフォルダまでコマンドプロンプトで移動。

mecab-dict-indexの詳細。こちら

mecab-dict-index.exeはここにあった。
------------------------------------------
C:\Program Files (x86)\MeCab\bin
------------------------------------------

実行。
------------------------------------------
mecab-dict-index -d "C:\Program Files (x86)\MeCab\dic\ipadic" -f utf-8 -t utf-8
------------------------------------------
パスの途中の半角スペースが区切りと誤認されないようにパス全体をダブルクォートでくくる。

「アクセスできない」等のエラーが出たら、フォルダを右クリックしてアクセス権を与えておく。

成功すると、4つのファイルができる

ファイルができる場所
------------------------------------------
C:\Program Files (x86)\MeCab\bin
------------------------------------------

ファイル名
------------------------------------------
char.bin
sys.dic
unk.dic
matrix.bin
------------------------------------------

4.できたファイルを正しい場所に移動させる

移動場所。元あるファイルと置換となる。
------------------------------------------
C:\Program Files (x86)\MeCab\dic\ipadic
------------------------------------------

ファイル移動の際アクセス権限がないとエラーが出たら、フォルダに権限を与えて、一度デスクトップにコピーして、目的のフォルダへ移動。(フォルダからフォルダへの移動ができなかった)
mecabは終了させておく。起動してると元ファイルが削除できない。

以上。

mecabに新しい辞書を追加する

mecabに新しい辞書を追加した際の手順の記録。

1.辞書の元になるデータをダウンロードする

データとしてよく利用されているものに、wikipediaのタイトルリストやはてなキーワード、人名事典などがある。今回はwikipediaのタイトルリストを利用した。(はてなキーワードも追加した。このページの下のほう)

ダウンロード先URL
-------------------------------------

http://dumps.wikimedia.org/jawiki/latest/jawiki-latest-all-titles-in-ns0.gz

-------------------------------------

人名事典ならこちらのページからダウンロードできる
(個人的には人名事典は使わない。人名が普通名詞と結構かぶって、名詞の読みが人名なったり、長めの普通名詞が人名と区切られたりと不都合が起こる)
-------------------------------------

http://www.mwsoft.jp/programming/munou/ime_dictionary_link.html#person

-------------------------------------

2.不要なタイトルは削除する

ここからタイトルリストをCSVファイルに加工していく。保存名はwikipedia.csvとした。
まず秀丸エディタで開き、置換の繰り返しで不要タイトルを削除した。

個人的に削除したタイトルの条件

・数字だけのもの
・「(曖昧さ回避)」を含むもの
・3文字以下のもの

・次の言葉で始まるタイトル
-------------------------------------
「日本の~」「日本に~」「日本と~」「日本で~」
「中国に~」「中国の~」
「アメリカに~」「アメリカの~」
「ヨーロッパに~」「ヨーロッパの~」
「.(ドット)~」
-------------------------------------

次の文字を含むタイトル
-------------------------------------
「,(カンマ)」←あるとフォーマットエラーになる。カンマを残すならエスケープが必要。
-------------------------------------

・次の言葉で終わるタイトル
-------------------------------------
「_(何か)」「一覧」「の登場人物」
-------------------------------------

秀丸エディタのマクロで置換するファイル: 右クリックしてダウンロード

3.辞典に登録できる状態に整形する

辞書に登録されている単語は通常CSVファイルでこのようになっている

-------------------------------------
工藤,1223,1223,6058,名詞,固有名詞,人名,名,*,*,くどう,クドウ,クドウ
-------------------------------------

値の意味は左から
-------------------------------------
表層形,左文脈ID,右文脈ID,コスト,品詞,品詞細分類1,品詞細分類2,品詞細分類3,活用形,活用型,原形,読み,発音
-------------------------------------

なので一旦こうした。(スコア)は後で数字に置き換える。

-------------------------------------
日清どん兵衛
-------------------------------------

↓↓↓

-------------------------------------
日清どん兵衛,0,0,(スコア),名詞,固有名詞,*,*,*,*,日清どん兵衛,*,*,ウィキペディア
-------------------------------------


<20150814 追記>
固有名詞のスコアは1でいいと思う。
-------------------------------------
日清どん兵衛,0,0,1,名詞,固有名詞,*,*,*,*,日清どん兵衛,*,*,ウィキペディア
-------------------------------------

このとき利用した秀丸エディタの正規表現

検索:^(.+)$

置換:¥1,0,0,(スコア),名詞,固有名詞,*,*,*,*,\1,*,*,ウィキペディア


<20150814 追記>
スコア1の場合
-------------------------------------

置換:¥1,0,0,1,名詞,固有名詞,*,*,*,*,\1,*,*,ウィキペディア
-------------------------------------

次にスコアを登録する。
コストは、その単語がどれだけ出現しやすいかを示していて、小さいほど出現しやすいという意味になるらしい。

長いキーワードが優先されるよう設定したいので、文字数に比例してコストが小さくなるように設定した。こちらのサイトにある式を参考にコスト値を求める。

コストを求める式
-----------------------------------------
コスト値 = -400 * (文字の長さの1.5乗)の整数
但し、最小で-36000
-----------------------------------------

スコアの登録はUWSCでファイルから一行ずつ読み込んで置換。(秀丸エディタでの計算がよくわからなかったので)

//UWSCファイルの一部抜粋
///////////////////////////////////////////////////////

//タイトルの文字数
moji_suu = POS(",0,0,(スコア)",Line_data) - 1

cost = 0 //初期化

//文字数がマイナス(取得失敗)でべき乗するとエラーが出るようなのでIFで回避
IFB moji_suu > 0
cost = INT(-400 * POWER(moji_suu, 1.5))
 IF cost < -36000 THEN cost = -36000 ENDIF Line_data = REPLACE(Line_data,"(スコア)", cost) /////////////////////////////////////////////////////// 最初からすべてUWSCでやればよかったとも思った。秀丸エディタで面倒な置換を何度も繰り返す必要なかったなと。 4.辞書のコンパイルとインストール

これ以降の作業は必要な辞書を全部そろえてからでいい。

参考サイト

辞書登録には「システム辞書」と「ユーザー辞書」があるが今回はシステム辞書に追加する。(登録に時間はかかるが解析は早い)

csvファイルをmecab-ipadic-2.7.0-20070801ディレクトリに移動する。
ここにcsvファイルも入れておく。この際、改行コードも「LF」になってることを確認した。

自分の環境のパス(cd でココに移動
--------------------------------------------
/home/username/local/mecab-ipadic-2.7.0-20070801
--------------------------------------------
※↑おそらくこのパスは、辞典CSVファイルが入ったディレクトリならどこでもいい。既に消去してしまっていたら、一時ファイルを作ればいいと思う。そこで次のコマンドを実行する。

mecab-dict-indexを実行するので場所を確認
--------------------------------------------
/home/username/local/libexec/mecab/mecab-dict-index
--------------------------------------------
mecabが使える状態ならどこかにあるはず

コマンドを実行する。

実際のコマンド
--------------------------------------------
/home/username/local/libexec/mecab/mecab-dict-index -f utf8 -t utf8
--------------------------------------------
「-f」はCSVの文字コード、-「t」はバイナリ辞書の文字コードを指定。
「mecab-ipadic-2.7.0-20070801」がカレントディレクトリでないとエラーが出る

また、最初に実行した際、こんなエラーも出た
--------------------------------------------
reading ./wikipedia.csv ... dictionary.cpp(167) [n == 5] format error:
--------------------------------------------

「,」を含むタイトルが残っていて、削除することでうまくいった。

最後にインストールも忘れずに行う
--------------------------------------------
make install
--------------------------------------------
※もし、インストール前のmecabディレクトリを消してしまっていた場合、インストールはできない。そのときはインストールは諦めて、新しくできた辞書ファイルを所定の場所に移動させる(置換)で辞書を追加することができる。

移動させるファイル名
------------------------------------------
char.bin
sys.dic
unk.dic
matrix.bin
------------------------------------------

移動前(ファイルができる場所)
------------------------------------------
/home/username/local/mecab-ipadic-2.7.0-20070801
------------------------------------------
↓↓↓

移動先
------------------------------------------
/home/username/local/lib/mecab/dic/ipadic
------------------------------------------

はてなキーワードの登録もやってみた

やりかたはwikipediaのときとほぼ一緒。

1.データをダウンロード

ダウンロード元
----------------------------
•http://d.hatena.ne.jp/images/keyword/keywordlist_furigana.csv
----------------------------

2.CSVファイルの整形

次の条件のタイトルは削除。

・「,(カンマ)」を含むもの
・「2001-01-01」のような日付だけのもの
・数値文字参照「&#~」を含むもの
・「ぱーせんとぜろぜろ」のタイトル(UTF-8に文字コード変換するとタイトルの%00(?
)が半角スペースに置き換わり、インストールエラーが出る。こんなの→「empty word is found, discard this line」)
・「明日(ぬくい)」という人名。残しておくと、「明日(あした)」が「ぬくい」と解釈されて邪魔
・「???」という項目

秀丸エディタのマクロで置換するファイル: 右クリックしてダウンロード

そして、辞書用に並び替え。
-----------------------------------------------------------------
ひかりのもり(タブ)光の森
-----------------------------------------------------------------

↓↓↓

-----------------------------------------------------------------
光の森,0,0,(スコア),名詞,固有名詞,*,*,*,*,光の森,ひかりのもり,ひかりのもり,はてなキーワード
-----------------------------------------------------------------

wikipediaのタイトルリストと違い、多くのタイトルにふりがな情報がある。

実際に使った秀丸エディタの正規表現

ふりがながある項目に対して有効
-----------------------------------------------------------------
検索:^(.+)\t(.+)$

置換:\2,0,0,(スコア),名詞,固有名詞,*,*,*,*,\2,\1,\1,はてなキーワード
-----------------------------------------------------------------

ふりがながない項目用に次の置換も実行
-----------------------------------------------------------------
検索:^\t(.+)$

置換:\1,0,0,(スコア),名詞,固有名詞,*,*,*,*,\1,*,*,はてなキーワード
-----------------------------------------------------------------

上記の正規表現で置換すると、ふり仮名のないタイトルにおいて、空欄「,,(連続カンマ)」ができてしまう。空欄は「*」に置き換える「,,」→「,*,」

あとは(COST)の部分を数値に置き換えて「mecab-dict-index」を実行、そしてインストール「make install」。(もしくは、ファイル移動)

さくら共用サーバーにmecabをインストールする

さくら共用サーバーで php-mecab を使うだけならサービスに元々含まれている mecab を利用できる。自前の mecab は不要なのでこのエントリーの作業は不要。自前で mecab はインストールすべき。デフォルトの mecab は php のバージョンアップなどでフォルダが変わることがある。php-mecab は mecab のフォルダを指定してるので不具合が起こる。

さくら共用サーバーにmecabをインストールに至った経緯↓↓

=========================================
さくら共用サーバーには最初からmecabが入っている。但し辞書はEUC-JPなのでUTF-8で利用するには自前で辞書を用意しなくてはならない。で、辞書のみをインストールしたがどうもうまくいかない。UTF-8でインストールしても文字化け、EUC-JPで文字を扱ってしまう。
いろいろ調べると、当方サーバーにインストールされているmecabのバージョンは、「0.995」で、このバージョンはUTF-8の辞書をうまく使えないバグがあるらしい。
ということで別バージョンのmecabを共用サーバーにインストールした。
=========================================
↑こう書いたもののいざやってみると、v0.97でも辞書のutf-8化ができない場面に遭遇。mecab本体のインストールは問題なし。mecabのバージョンと辞書の文字コードは関係ないのかもと思い始める。ただutf-8の文字コードで動かすことはできた。詳しくは下記のリンク。

utf-8の辞書、インストール方法はこちら

インストールするmecabのバージョン
-----------------------------------------
mecab 0.97 ←別サーバーでバグがないことを確認済み
-----------------------------------------

インストール先(localは自分で作る)
-----------------------------------------
/home/username/local/
-----------------------------------------

1.ダウンロードしたファイルを解凍
-----------------------------------------
tar xzvf mecab-0.97.tar.gz
-----------------------------------------

2.「configure」実行
-----------------------------------------
cd mecab-0.97 ←フォルダ移動

./configure --prefix=$HOME/local --with-charset=utf8 --enable-utf8-only
-----------------------------------------
※「configure」というシェルスクリプトを実行することで、ソースファイルをコンパイルする前に、インストール対象となるシステム特有の機能/情報をチェックし、チェック状況を記述したMakefileが作成される。

3.コンパイルとインストール
-----------------------------------------
make ← コンパイル

make install ← インストール
-----------------------------------------

すると、インストール時にエラーが出る。

エラー内容
-----------------------------------------
%make install
.././install-sh: Permission denied
*** Error code 126
-----------------------------------------

mecab-0.97フォルダ内のinstall-shファイルにアクセス権限がないとのことで、確認してみる
-----------------------------------------
ls -l install-sh
-----------------------------------------
こう表示された
-----------------------------------------
-rw-r--r-- 1 username users 5569 Jan 29 2007 install-sh
-----------------------------------------

アクセス権限を変更(「install-sh」は「install -sh」でないよ。ハマッた)
-----------------------------------------
chmod 755 install-sh
-----------------------------------------

再びインストールを試みる
-----------------------------------------
make install
-----------------------------------------
(make cleanで不要はファイルは消せる)

インストール成功。

接続し直してバージョンを確認。binフォルダはインストールが成功するとできる。
-----------------------------------------
~/local/bin/mecab -v
-----------------------------------------
~(チルダ)は、ユーザのホームディレクトリ(home/username)のこと。$HOMEも同じ。

4.簡単に使えるようにパスを通す

現在のPATHを確認してみる
-----------------------------------------
echo $PATH
-----------------------------------------

結果
-----------------------------------------
/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/home/username/bin
-----------------------------------------
:」は区切り。

パスを書き換えるため、exportを実行するがエラーが出る

コマンド
-----------------------------------------
export PATH=~/local/bin:$PATH
-----------------------------------------

結果
-----------------------------------------
export: Command not found.
-----------------------------------------

ファイルを直接書き換えることにする。
利用しているシェルを確認してみる

コマンド
-----------------------------------------
echo $SHELL
-----------------------------------------

結果
-----------------------------------------
/bin/csh
-----------------------------------------

この場合、ホームディレクトリ直下にある.cshrcファイルを編集することになる。
パスは左から優先されるので、自前のmecabが選択されるよう、一番左にパスを追加する。

編集内容
-----------------------------------------
#set path = (/sbin /bin /usr/sbin /usr/bin /usr/local/sbin /usr/local/bin $HOME/bin) ←コメントアウト
set path = ($HOME/local/bin /sbin /bin /usr/sbin /usr/bin /usr/local/sbin /usr/local/bin $HOME/bin) ←追加行
-----------------------------------------

(エックスサーバーは bash なので .bashrc に↓追記)
-----------------------------------------
export PATH=$HOME/local/bin:$PATH
-----------------------------------------

PATHが通ったことを確認
-----------------------------------------
echo $PATH
-----------------------------------------

mecabのバージョンを確認
-----------------------------------------
mecab -v
-----------------------------------------

なお辞書をインストールしていないとエラーが出る
-----------------------------------------
param.cpp(69) [ifs] no such file or directory: /home/username/local/lib/mecab/dic/ipadic/dicrc
-----------------------------------------

辞書のインストールはこちら

php_mecabの使い方、サンプルコード

php_mecabの簡単なサンプルコード集です。

単語ごとに区切るサンプルコード
-------------------------------------------------------------------------
<?php
$str = "MeCabを使って文章を単語ごとに区切ります。";
$result = mecab_split($str); //区切って配列に入れる。単語で分割。
foreach ($result AS $value) {
echo $value ."<br>";
}
?>
-------------------------------------------------------------------------

結果
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
MeCab

使っ

文章

単語
ごと

区切り
ます
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

形態素解析を行って結果を表示するサンプルコード
-----------------------------------------------------------------------
<?php
$t = new MeCab_Tagger();
$str = 'PHPのMeCabエクステンションで形態素解析を行ってみました。';
$kekka = $t->parse($str); //解析して結果を返す。
print("<pre>");
echo $kekka;
print("</pre>");
}
?>
-----------------------------------------------------------------------

結果
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
PHP 名詞,固有名詞,組織,*,*,*,*
の 助詞,連体化,*,*,*,*,の,ノ,ノ
MeCab 名詞,一般,*,*,*,*,*
エクステンション 名詞,一般,*,*,*,*,*
で 助詞,格助詞,一般,*,*,*,で,デ,デ
形態素 名詞,一般,*,*,*,*,形態素,ケイタイソ,ケイタイソ
解析 名詞,サ変接続,*,*,*,*,解析,カイセキ,カイセキ
を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
行っ 動詞,自立,*,*,五段・ワ行促音便,連用タ接続,行う,オコナッ,オコナッ
て 助詞,接続助詞,*,*,*,*,て,テ,テ
み 動詞,非自立,*,*,一段,連用形,みる,ミ,ミ
まし 助動詞,*,*,*,特殊・マス,連用形,ます,マシ,マシ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
。 記号,句点,*,*,*,*,。,。,。
EOS
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

形態素の詳細情報を配列で取得するサンプルコード
-----------------------------------------------------------------------
<?php
$text = "親と健康は、失って初めてそのありがたみがわかるもの、なんてよくいわれる。";
$mecab = new Mecab();

$nodes = $mecab->parseToNode($text); //形態素の詳細情報を配列で取得
foreach ($nodes as $node) {
echo $node->surface . "<br>"; //表層形(単語そのもの)を取得

echo $node->feature . "<br>"; //形態素情報を取得

echo $node->cost . "<br>"; //形態素までのコスト

echo $node->posid . "<br><br>"; //ステータス番号を取得
}
?>
-----------------------------------------------------------------------

//バージョンを出力
-----------------------------------------------------------------------
echo mecab_version();
-----------------------------------------------------------------------

//読み方だけ表示
-----------------------------------------------------------------------
<?php
$text = "親と健康は、失って初めてそのありがたみがわかるもの、なんてよくいわれる。";
$mecab = new Mecab();

$nodes = $mecab->parseToNode($text); //形態素の詳細情報を配列で取得

$kana = "";
foreach ($nodes as $node) {

$surface = $node->surface; //表層面。単語だけ。
$feature = $node->feature; //形態素情報を取得

//ひらがなかカタカナならそのまま
if(preg_match("/^[ぁ-ゞァ-ヾー]+$/u",$surface)) {

$kana .= $surface;

//ひらがなでもカタカナでもないなら読みを取り出す
} else {
//8番目の情報だけ残す。
$kana .= preg_replace('/^.*?,.*?,.*?,.*?,.*?,.*?,.*?,(.*?),.*$/su','$1', $feature);
//$kana .= preg_split('/,/u',$feature)[7]; // ←こっちでも可。
} //if
//BOS/EOSの場所につく「*」を削除。
$kana = preg_replace('/^\*/u','',$kana);
$kana = preg_replace('/\*$/u','',$kana);
}

echo $kana;
?>
-----------------------------------------------------------------------

さくら共有サーバー、php_mecabのインストール方法

さくら共有サーバー、php_mecabのインストール方法

前提として、mecab の辞書にアクセスする必要があるので辞書をローカルフォルダ以下にインストールしておく必要があ(さくらに最初から入っている辞書を使うこともできるが、htmlファイルが UTF-8 の場合、デフォルトの辞書が EUC なので文字化けしてしまう)。
さくら共有サーバー、UTF-8の辞書でmecabを使う方法 ←この作業を済ませておく

1.ファイルを解凍してビルド
///////////////////////////////////////////////////
tar xvfz php-mecab-0.5.0.tgz ←解凍

cd php-mecab-0.5.0 ←ディレクトリ移動

phpize ←拡張モジュールをビルド(ソースファイルから実行可能なファイルを作成。configureファイルができる)
※-ize(アイズ)・・・~化する。~で扱う。

※エックスサーバーでは phpize は使えないので php_mecab はインストールできない。yum や rpm コマンドが使えないので phpize の追加もできない。どうしても phpize が使えない環境で PHP + mecab を実行したいなら PHP の EXEC 関数でコマンドラインを操作してすることならできそう?
///////////////////////////////////////////////////

2.「configure」を実行
///////////////////////////////////////////////////
./configure --with-mecab=/usr/local/bin/mecab-config --with-php-config=/usr/local/php/5.3.27/bin/php-config
///////////////////////////////////////////////////
php-configのバージョンは必ずあわせる。現在使用しているphpのバージョンをphpinfoで確認。今回は「5.3.27」。指定しなくてデフォルトのバージョンが呼び出されるとうまくいかない。phpのバージョンはターミナルから「php -v」でも調べられるが出てきたバージョンのフォルダ名がない場合がある(php -v で「5.45」と出たが存在するフォルダは「5.4」だった)。使用しているphp のバージョンはサーバーコントロールにログインして調べるといい。
mecab-configの場所は「which mecab-config」で特定できる。自前の mecab をインストールしている場合はそちらのパスを指定する。

3.コンパイルとインストール
///////////////////////////////////////////////////
make ←コンパイル
make install ← インストール
///////////////////////////////////////////////////

インストールするとエラーメッセージが出た
----------------------------------------------------------------------
Installing shared extensions: /usr/local/php/5.3.27/lib/php/extensions/no-debug-non-zts-20090626/
cp: /usr/local/php/5.3.27/lib/php/extensions/no-debug-non-zts-20090626/#INST@99219#: Permission denied
----------------------------------------------------------------------
権限のないところにインストールを試みているよう。
ローカルフォルダにインストールするように、Makefileをいじる。(make実行後に作成されるファイル)

Makefileの変更箇所
----------------------------------------------------------------------
#EXTENSION_DIR = /usr/local/php-5.x.x/lib/php/extensions/no-debug-non-zts-20060613 ←コメントアウト
EXTENSION_DIR = $(HOME)/local/lib/php/extensions/no-debug-non-zts-20060613 ←追記
※「20060613」とかフォルダ名は合わせるといい。
----------------------------------------------------------------------

再びmake installすると無事にインストールが完了するはず。

4.続いて、PHPの起動時に読み込まれる拡張モジュールを設置するディレクトリの設定

PHP.iniに拡張モジュールの置き場を記述する

PHP.iniに記述(追記)する内容
----------------------------------------------------------------------
extension_dir="/home/username/local/php-mecab-0.5.0/modules"
extension=mecab.so
----------------------------------------------------------------------
※拡張子 so は shared object の略。UNIX系OSの共有ライブラリのファイル形式。

最初、こう書いたら動かなかくてハマった。
----------------------------------------------------------------------
extension_dir="/home/username/local/lib/php/extensions"
extension=mecab.so
----------------------------------------------------------------------

作業時に出力されたメッセージを見てとりあえず動くところまで持ってこれた。
----------------------------------------------------------------------
Libraries have been installed in:
/home/sunsdoor/local/php-mecab-0.5.0/modules

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,--rpath -Wl,LIBDIR' linker flag

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------

UTF-8の辞書を使いたいのでphp.iniに追記
----------------------------------------------------------------------
mecab.default_dicdir=/path/ ←辞書
mecab.default_userdic=/path/ ←ユーザ辞書
----------------------------------------------------------------------
※UTF-8 の辞書を使う場合は phpファイルの保存形式やメタタグ(headタグ内)の文字コードも UTF-8 に揃える必要がある。

自分の環境だといずれか(dicrcとかsys.dicがあるフォルダ)
----------------------------------------------------------------------
mecab.default_dicdir="/home/username/local/mecab-dic/ipadic-utf8"
mecab.default_dicdir="/home/username/local/lib/mecab/dic/ipadic"
----------------------------------------------------------------------

うまくいっていたらphpinfoにmecabの項目が表示されている。

さくら共有サーバー、UTF-8の辞書でmecabを使う方法

(mecab本体のインストールはこちら。ただしさくら共用にはあらかじめ mecab がインストールされているので不要。php-mecab を使用する場合も不要。)
さくら共用サーバーにmecabをインストールする

さくらインターネットにはmecabが最初からインストールされている。
しかし辞書の文字コードがEUC-JPなので自分の環境では文字化けしてしまう。

これを解決するためには、UTF-8の辞書をインストールする。以下、その方法。

まず、インストール先を決める。さくら共有サーバーでインストール権限があるのは、ホームディレクトリ以下。
自分でコンパイルしたアプリケーションをインストールする場所は、ホームディレクトリ以下のlocalフォルダが一般的のよう。

0.インストールするディレクトリを作成しておく
------------------------------------------------
/home/username/local/mecab-dic/ipadic-utf8 ←localディレクトリはないので新規作成
------------------------------------------------

1.辞書のダウンロードと解凍を行う
------------------------------------------------
(ポデローサで打ったコマンド)
cd local ←ローカルディレクトリに移動(ダウンロード先)

wget http://sourceforge.net/projects/mecab/files/mecab-ipadic/2.7.0-20070801/mecab-ipadic-2.7.0-20070801.tar.gz ← 辞書をダウンロード

tar xvzf mecab-ipadic-2.7.0-20070801.tar.gz ←解凍
------------------------------------------------

2.「configure」の実行

2-1
------------------------------------------------
cd mecab-ipadic-2.7.0-20070801 ←configureファイルのあるディレクトリに移動
------------------------------------------------

2-2
------------------------------------------------
自前のmecabがある場合
./configure --with-charset=utf8
※「/home/username/local/lib/mecab/dic/」以下に ipadic フォルダがインストール先される

インストール先としてipadic-utf8というフォルダが作ってある場合
./configure --with-charset=utf8 --with-dicdir=~/local/mecab-dic/ipadic-utf8 ←実行。
------------------------------------------------
※インストール先を、今後辞書を追加する可能性も考慮し「~/local/mecab-dic/ipadic-utf8」にする場合、フォルダはあらかじめ作っておく必要がある。
ホームディレクトリ以下に自前のmecabをインストールしている場合「--with-dicdir=~/local/mecab-dic/ipadic-utf8」を書くとmake install時にエラーになった。その場合は、インストールは指定しないことでやり過ごせる。

※「configure」というシェルスクリプトを実行することでMakefileが作成される。Makefileは、ソースファイルをコンパイルする前にインストール対象となるシステム特有の機能/情報をチェックし、チェック状況を記述したファイル。

以下の2ファイルは元々ある
------------------------------------------------
Makefile.in
Makefile.am
------------------------------------------------

configureを実行すると3つファイル増える
------------------------------------------------
config.log
config.status
Makefile
------------------------------------------------

3.インストールの実行
------------------------------------------------
make ←「configure」の実施で作られた「Makefile」を元にコンパイルを実行
make install ← インストールを実行
------------------------------------------------

4.動作テスト
------------------------------------------------
mecab -d ~/local/mecab-dic/ipadic-utf8 ←辞書を指定
これはテストです
------------------------------------------------

結果
------------------------------------------------
これ 名詞,代名詞,一般,*,*,*,これ,コレ,コレ
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
テスト 名詞,サ変接続,*,*,*,*,テスト,テスト,テスト
です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
------------------------------------------------

↓ターミナル経由でmecabを実行して解析結果が空欄だった場合、ターミナルの文字コードが違う可能性が考えられる。
自分の場合、辞書をUTF-8にしてもターミナルの文字列はEUC-JPに設定する必要があった。
------------------------------------------------
これはテストです
これは ̾,,*,*,*,*,*
テスト ̾,,*,*,*,*,*
です ̾,,*,*,*,*,*
------------------------------------------------

mecab -d ~/local/mecab-dic/ipadic-utf8 -D
これで辞書情報が確認できる。charsetがutf8であればOK

問題なく動くことを確認する。

mecabを終了するときは、「Ctrl + D」

本来ここまでの作業でUTF-8化した辞書がインストールできているはず。が、別アカウントのサクラサーバーで同じように辞書をインストールするとうまくいかない。手順どおり辞書のインストールを行うと滞りなく進むのだが、いざmecabで形態素解析を行うと、UTF-8を認識しない。EUC-JPで辞書がインストールされているようだ。
いろいろ調べたが根本的理由はわからず。バグかな?
下記の方法を行えばとりあえずUFT-8でmecabを動かせるようになります。

辞書インストール時、辞書のフォルダを解凍した後(configure実行の前)に2つのことを行う。

1.辞書フォルダ内の「csv」と「def」の拡張子のファイルをUTF-8に変換して上書きする。

テキストファイルで保存しなおしてもいいし、コマンドラインなら次のように打つ(cshellの場合)。

//まず、今の文字コードを確認
------------------------------------------------
cd mecab-ipadic-2.7.0-20070801 ← 辞書フォルダ内に移動

nkf -g Noun.csv ← とりあえずひとつのファイルの文字コードを確認してみる。gオプションは文字コードを出力。この時点ではEUC-JPが返るはず。
------------------------------------------------

//「csv」のファイルをUTF-8に変更
------------------------------------------------
foreach f ( *csv ) ← フォルダ内のcsvファイルに対して繰り返す(fは何の文字でもいい)

nkf -w --overwrite $f ← UTF-8に変更して上書き

end ← 「foreach?」と出てるはずなので終える
------------------------------------------------

//UTFになっていることを確認
------------------
foreach f ( *csv )
nkf -g $f
end
------------------

//「def」も同じようにUTF-8に変更する
------------------------------------------------
foreach f ( *def )

nkf -w --overwrite $f ← UTF-8に変更して上書き

end ← 「foreach?」と出てるはずなので終える
------------------------------------------------

2.dicrcファイルを書き換える

dicrcファイルは辞書フォルダ内にある
------------------------------------------------
config-charset = EUC-JP ← 書き換え前

 ↓↓↓

config-charset = UTF-8 ← 書き換え後
------------------------------------------------

この後は、configure → make → make install の順でインストールを済ませばいい。