Skip to content

Instantly share code, notes, and snippets.

@masayuki5160
Last active August 29, 2015 14:05
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save masayuki5160/4ef3606257af9a1df1d4 to your computer and use it in GitHub Desktop.
Save masayuki5160/4ef3606257af9a1df1d4 to your computer and use it in GitHub Desktop.
<?php
/**
* @var object php_mecab の Mecab_Tagger オブジェクト
*/
$mecab = new MeCab_Tagger();
if( is_object( $mecab ) ){
while( true )
{
printf( '形態素解析する文章を入力して下さい:' );
/**
* @var string 形態素解析にかける文
*/
$textInput = null;
/* 標準入力を利用し、キーボードからの入力を受け付ける */
$stdin = fopen( 'php://stdin' , 'r' );
$textInput = fgets( $stdin );
fclose( $stdin );
$textInput = rtrim( $textInput );
var_dump($mecab->parse($textInput));
$resultSet = explode( "\n" , $mecab->parse( $textInput ) );
printf( "\n\n" );
printf( "[形態素に分解した結果]\n" );
foreach( $resultSet as $eachResult )
{
if( substr( $eachResult , 0 , 3 ) !== 'EOS' ){
list( $eachMorpheme , $eachInfo ) = explode( "\t" , $eachResult );
printf( "%s\n" , $eachMorpheme );
}else{
break;
}
}
printf( "\n\n" );
}
}else{
printf( "Mecab_Tagger オブジェクトを作成できません。処理を中断します。\n" );
exit();
}
?>
とりあえずupdate
# sudo yum update -y
必要なもんを用意
# wget https://mecab.googlecode.com/files/mecab-0.996.tar.gz
# wget https://mecab.googlecode.com/files/mecab-ipadic-2.7.0-20070801.tar.gz
解凍
# tar xvfz mecab-0.996.tar.gz
# tar xvfz mecab-ipadic-2.7.0-20070801.tar.gz
必要なもの用意
# sudo yum install -y gcc-c++ gcc-objc++ gcc41-c++ make
順番にセットアップ
# cd mecab-0.996
# sudo ./configure --enable-utf8-only --with-charset=utf8
# sudo make
# sudo make install
mecabインストールチェック
# which mecab
辞書のセットアップ
# cd mecab-ipadic-2.7.0-20070801
# PATH=$PATH:/usr/local/bin;export PATH
# sudo ./configure --with-mecab-config=/usr/local/bin/mecab-config --with-charset=utf8
# sudo make
# sudo make install
動作チェック
# mecab
php_mecabをセットアップ
#sudo yum install php-pear php-devel
#pear channel-discover pecl.opendogs.org
#sudo pear install opendogs/mecab-beta
#sudo vi /etc/php.d/mecab.ini
extension=mecab.so
※エラーになった場合などはmecab.configのPATH指定をするex./home/ec2-user/mecab-0.996/mecab-configとか
【参考】
1. PHPによる機械学習入門
2. http://d.hatena.ne.jp/hase1031/20111005/1317808636
@masayuki5160
Copy link
Author

実行結果はこれ

$ php mecab_001.php
形態素解析する文章を入力して下さい:Mecabのテストです
string(224) "Mecab 名詞,固有名詞,組織,,,,
の 助詞,連体化,,,,,の,ノ,ノ
テスト 名詞,サ変接続,,,,,テスト,テスト,テスト
です 助動詞,,,*,特殊・デス,基本形,です,デス,デス
EOS
"

[形態素に分解した結果]
Mecab

テスト
です

@masayuki5160
Copy link
Author

var_dumpでだしている結果のとおり、parse()した結果は"形態素¥t品詞情報"となっている。
なので下記のようにlist()を用いて$eachResultを¥tで分割してできた配列を$eachMorpheme(形態素), $eachInfo(品詞情報)として変数を宣言している.

list( $eachMorpheme , $eachInfo ) = explode( "\t" , $eachResult );

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment