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;
?>
-----------------------------------------------------------------------