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

この記事について

環境PHP、php_mecab
目的php_mecabの基本的な使い方を確認する
結果mecab_splitで分割、MeCab_Taggerのparseで解析、parseToNodeで詳細情報を取得できる

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

関連記事

タイトルとURLをコピーしました