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