mecab + PHP で形態素解析(出現頻度)
mecab + PHP で形態素解析をやってみたときのメモです。Yahoo!さんの日本語形態素解析API や mecab PHP 用の拡張モジュールもありますが、windows vista PC にインストールした mecab を直接使用し、その結果をPHPでパースして出現頻度を算出する、ということをやってみました。
-
- -
※もしかしてはまった人も??
手元の Windows Vista PC では、mecab を 「C:\Program Files」フォルダ以下にインストールしたところ、mecab を実行できませんでした。「C:\myapp\mecab」のようにスペースを含まないフォルダにインストールしたら実行できました。
-
- -
参考にしたのは以下の人力検索。
PHPについて質問致します。 形態素解析を行うにあたっていくつかの形態素解析エンジンを比較していった結果、 MeCab(http://mecab.sourceforge.jp/)を使用することに致しま.. - 人力検索はてな
(どうでもいいですけどTITLEが長する・・・)
<?php $mecabpath = 'C:\..省略..\MeCab\bin\mecab.exe' ; // mecab.exe のパス $inputfile = 'C:\..省略..\test.txt' ;// 解析対象の文書ファイル exec("$mecabpath $inputfile", $result); $word_list_index = $word_list = array(); foreach ($result as $val) { $tmp = explode(",", $val); $tmp = explode("\t", $tmp[0]);// $tmp[0]: 要素, $tmp[1]: 品詞 if ($tmp[1] == '名詞') { $key = array_search($tmp[0], $word_list_index); if ($key === false) {// 新出 $word_list[] = array('num' => 1, 'word' => $tmp[0]); $word_list_index[] = $tmp[0]; } else {// 既出 $word_list[$key]['num'] = $word_list[$key]['num'] + 1; } } } unset($word_list_index); arsort($word_list); echo '<table border="1" cellpadding="5">'; foreach ($word_list as $val) { echo "<tr><td>{$val['num']}</td><td>{$val['word']}</td></tr>\n"; } echo "</table>"; ?>
以下の文書ファイル(wikipedia の PHP)を上記スクリプトで解析してみました。
PHP: Hypertext Preprocessor(ピー・エイチ・ピー ハイパーテキスト プリプロセッサー)とは、動的にHTMLデータを生成することによって、動的なウェブページを実現することを主な目的としたプログラミング言語、およびその言語処理系である。 PHPは、HTML埋め込み型のサーバサイド・スクリプト言語として分類される。この言語処理系自体は、C言語で記述されている。 ウェブサーバ上で動作し、ウェブサーバ上の文書が要求されるたびに、この文書に記述されたPHPのプログラムを実行し、その結果をウェブブラウザに対して送信する。 ウェブブラウザに送信されるデータは通常のHTMLであり、PHPのプログラムを含まない。この点でHTML埋め込み型のクライアントサイド・スクリプト言語(JavaScriptなど)と本質的に異なっている。 平易な文法のため初心者でも習得しやすく、また大規模な開発にも多く用いられている。多くのフレームワークやライブラリが存在し、開発の手助けとなっている。 数多くのオープンソースウェブアプリケーションに利用されている一方、しばしば脆弱性の報告がなされ、過去に深刻なセキュリティホールが何度か報告されている。
6 | 言語 |
4 | PHP |
4 | HTML |
2 | 報告 |
2 | 文書 |
2 | 動的 |
2 | 送信 |
2 | 上 |
2 | 処理 |
2 | 系 |
2 | 型 |
2 | 記述 |
2 | 開発 |
2 | プログラム |
2 | データ |
2 | ウェブブラウザ |
2 | ウェブサーバ |
2 | こと |
1 | 利用 |
1 | 要求 |
1 | 目的 |
1 | 本質 |
1 | 平易 |
1 | 文法 |
1 | 分類 |
1 | 動作 |
1 | 度 |
1 | 点 |
1 | 的 |
1 | 通常 |
1 | 多く |
1 | 存在 |
1 | 脆弱 |
1 | 生成 |
1 | 性 |
1 | 深刻 |
1 | 初心者 |
1 | 習得 |
1 | 手助け |
1 | 主 |
1 | 実行 |
1 | 実現 |
1 | 自体 |
1 | 結果 |
1 | 規模 |
1 | 過去 |
1 | 何 |
1 | 一方 |
1 | ワーク |
1 | ライブラリ |
1 | ホール |
1 | プログラミング |
1 | プリプロセッサー |
1 | フレーム |
1 | ピー・エイチ・ピー |
1 | ハイパーテキスト |
1 | セキュリティ |
1 | スクリプト |
1 | サイド |
1 | サーバ |
1 | クライアントサイド・スクリプト |
1 | オープンソースウェブアプリケーション |
1 | ウェブページ |
1 | ため |
1 | たび |
1 | Preprocessor |
1 | JavaScript |
1 | Hypertext |
1 | C |
1 | : |