txqz memo

XREAでPHPからChasenを使う

MeCabは利用できないみたい。SSH経由でいろいろ見てみたけれどもMeCabはインスコされていないぽい。なのでChasenを使う。Chasenは連続する数字を一塊にしてくれないのが残念。あと半角英単語もそうなるので、半角文字については適宜全角に置き換えるようにする。

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
<title>Chasenテスト</title>
<table>
<?php
$path = '/usr/local/php/bin/chasen';
$str = "浜松駅の耐震工事のために長いこと利用できなかったekimachi eastの工事が、予定通り3月15日までに終了した。これでマクドナルドやミスドにまた行けるようになったし、地下の谷島屋も復活した。足しげくフレッシュネスバーガーに通っていた私だが、それは最初はマクドナルドが復活するまでの腰掛けのつもりだった。セットは昼だけだし、一番安いバーガーでも200円後半、高いのは単品で680円という、マクドナルド物価に慣らされていた私にはきつい値段設定。一応喫煙席も用意されてはいるが積極的に分煙をする気もない。でも、何回か食べていくうちに、作り置きをせず、できたてを提供し、ありきたりでないドリンクを揃えるフレッシュネスバーガーのファンになっていった。てりやきチキンバーガーを頼むと、あきらかにマックのチキンとは質の異なる、よりホンモノめいたチキンを味わえるし、やっぱりあのナマにちかいタマネギがもたらすアクセント、トマトの厚さ、カボチャの練り混まれたパンズなど、ポテトがなくてプラス100円程度でこれだけのものを出してくれるならフレバのほうが良い。最近はそう思えてきた。マクドナルドは大勢の客が来ることを予定し、それに応えるために商品をあらかじめ用意している。それのおかげで、注文すればすぐ食べられるし、大勢の客をさばける。フレッシュネスバーガーにマクドナルド並の客が来たら待ち行列がオーバーフローしてしまう。この値段設定は需要調整なのかしら。ともあれ、マックのいない間にどれだけの客をフレバの虜にしたかで、マック復活後のフレバの運命が決まるのかなぁ。客層は最初から重なっていないだろうけど、マックはをどれだけフレバ派に転向させれたかが気になる。";
$str = mb_convert_kana($str,'A',"EUC-JP");
$results = popen ("echo $str | $path ", 'r');

$target = array("","名詞","未知","形容");
$result = array();
while ($chasen_result = fgets($results)) {
    $r = split("\\t",$chasen_result);
    $name = $r[2] ? $r[2] : $r[0];
    if(array_search(mb_substr($r[3],0,2),$target) &amp;&amp; mb_strlen($name)>1){
        $result[$name]++;
    }
}

foreach($result as $key => $count){
    echo "<tr><td>".$key."</td><td>".$count."</td></tr>\\n";
}

pclose ($results);
?>
</table>

結果

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
<title>Chasenテスト</title>
<table>
<tr><td>浜松</td><td>1</td></tr>
<tr><td>耐震</td><td>1</td></tr>
<tr><td>工事</td><td>2</td></tr>
<tr><td>ため</td><td>2</td></tr>
<tr><td>長い</td><td>1</td></tr>
<tr><td>こと</td><td>2</td></tr>
<tr><td>利用</td><td>1</td></tr>
<tr><td>ekimachi</td><td>1</td></tr>
<tr><td>east</td><td>1</td></tr>
<tr><td>予定</td><td>2</td></tr>
<tr><td>通り</td><td>1</td></tr>
<tr><td>3月</td><td>1</td></tr>
<tr><td>終了</td><td>1</td></tr>
<tr><td>これ</td><td>2</td></tr>
<tr><td>マクドナルド</td><td>5</td></tr>
<tr><td>ミス</td><td>1</td></tr>
<tr><td>よう</td><td>1</td></tr>
<tr><td>地下</td><td>1</td></tr>
<tr><td>谷島</td><td>1</td></tr>
<tr><td>復活</td><td>3</td></tr>
<tr><td>しげい</td><td>1</td></tr>
<tr><td>フレッシュ</td><td>3</td></tr>
<tr><td>ネス</td><td>3</td></tr>
<tr><td>バーガー</td><td>5</td></tr>
<tr><td>それ</td><td>3</td></tr>
<tr><td>最初</td><td>2</td></tr>
<tr><td>腰掛け</td><td>1</td></tr>
<tr><td>つもり</td><td>1</td></tr>
<tr><td>セット</td><td>1</td></tr>
<tr><td>一番</td><td>1</td></tr>
<tr><td>安い</td><td>1</td></tr>
<tr><td>後半</td><td>1</td></tr>
<tr><td>高い</td><td>1</td></tr>
<tr><td>単品</td><td>1</td></tr>
<tr><td>物価</td><td>1</td></tr>
<tr><td>きつい</td><td>1</td></tr>
<tr><td>値段</td><td>2</td></tr>
<tr><td>設定</td><td>2</td></tr>
<tr><td>喫煙</td><td>1</td></tr>
<tr><td>用意</td><td>2</td></tr>
<tr><td>積極</td><td>1</td></tr>
<tr><td>分煙</td><td>1</td></tr>
<tr><td>ない</td><td>2</td></tr>
<tr><td>うち</td><td>1</td></tr>
<tr><td>たて</td><td>1</td></tr>
<tr><td>提供</td><td>1</td></tr>
<tr><td>ドリンク</td><td>1</td></tr>
<tr><td>ファン</td><td>1</td></tr>
<tr><td>チキン</td><td>3</td></tr>
<tr><td>マック</td><td>4</td></tr>
<tr><td>ホンモノ</td><td>1</td></tr>
<tr><td>ナマ</td><td>1</td></tr>
<tr><td>ちかい</td><td>1</td></tr>
<tr><td>タマネギ</td><td>1</td></tr>
<tr><td>アクセント</td><td>1</td></tr>
<tr><td>トマト</td><td>1</td></tr>
<tr><td>厚い</td><td>1</td></tr>
<tr><td>カボチャ</td><td>1</td></tr>
<tr><td>パンズ</td><td>1</td></tr>
<tr><td>ポテト</td><td>1</td></tr>
<tr><td>プラス</td><td>1</td></tr>
<tr><td>程度</td><td>1</td></tr>
<tr><td>もの</td><td>1</td></tr>
<tr><td>フレバ</td><td>4</td></tr>
<tr><td>ほう</td><td>1</td></tr>
<tr><td>良い</td><td>1</td></tr>
<tr><td>最近</td><td>1</td></tr>
<tr><td>大勢</td><td>2</td></tr>
<tr><td>商品</td><td>1</td></tr>
<tr><td>おかげ</td><td>1</td></tr>
<tr><td>注文</td><td>1</td></tr>
<tr><td>行列</td><td>1</td></tr>
<tr><td>オーバー</td><td>1</td></tr>
<tr><td>フロー</td><td>1</td></tr>
<tr><td>需要</td><td>1</td></tr>
<tr><td>調整</td><td>1</td></tr>
<tr><td>かしら</td><td>1</td></tr>
<tr><td>どれ</td><td>2</td></tr>
<tr><td>運命</td><td>1</td></tr>
<tr><td>客層</td><td>1</td></tr>
<tr><td>転向</td><td>1</td></tr>
</table>