PHPで自作でタグクラウドを作成するためには、まずは文字データを分解して上げる必要があります。その文字分析の手法としてよく利用されるのが、形態素解析と言われる手法です。yahooAPIを利用した形態素解析もありますが、今回はigo-phpを用いた形態素解析に焦点をあてます(。・ω・。)
[PHP] igo-phpを用いた形態素解析〜タグクラウド自作に向けて〜
0. そもそも形態素解析って?
形態素解析とは何なのか、まずは引用で説明します(。・ω・。)
形態素解析(morphological analysis)とは、検索エンジンにも用いられている自然言語処理の手法の一つで、ある文章・フレーズを「意味を持つ最小限の単位(=単語)」に分解し、文章やフレーズの内容を判断するために用いられます。
具体的にどういうことかというと、下記のように名詞や動詞、助詞等で分割しすることです。
すももももももももものうち
↓
すもも/も/もも/も/もも/の/うち
1. 環境
今回は、CentOS上にigo-php環境を構築しています(。・ω・。)
2. 環境構築手順
1. igoのjarファイルをダウンロード
まず、igo利用のためのjarファイルをダウンロードします。httpsサイトのため、wgetに–no-check-certificateを付与してダウンロードしています。
Igoとは:JavaおよびCommon Lispで実装されたミニマムな形態素解析器。 辞書および出力はほぼMeCab互換。
# Igo実行用のjarファイルをダウンロードする wget --no-check-certificate https://osdn.jp/projects/igo/downloads/52344/igo-0.4.3.jar/
2. Mecab用辞書(IPA)ダウンロード
次にIPA辞書をダウンロードします。igo-phpには辞書ファイルは入っていないため、形態素解析用に辞書を準備します。
# IPA辞書をダウンロードする wget --no-check-certificate https://sourceforge.net/projects/mecab/files/mecab-ipadic/2.7.0-20070801/mecab-ipadic-2.7.0-20070801.tar.gz/download # ダウンロードしたIPA辞書を解凍する tar zxfv mecab-ipadic-2.7.0-20070801.tar.gz
3. 1を使って、2でダウンロードした辞書をコンパイル
igo-php自体には辞書ファイルがついていないので、MeCabの辞書を利用する必要があります。下記コマンド後に出てきたipadic/以下が、辞書の本体です。これを適宜好みの場所にコピーし利用します。
コマンド使い方:java -cp [igo のファイルパス] net.reduls.igo.bin.BuildDic ipadic [展開した辞書のディレクトリ] EUC-JP
java -cp igo-0.4.3.jar net.reduls.igo.bin.BuildDic ipadic mecab-ipadic-2.7.0-20070801 EUC-JP
4. igo-phpライブラリをダウンロードする
phpのコード上で形態素解析を利用するために、igo-phpをインストールします。
# igo-phpをサイトからインストール wget --no-check-certificate https://osdn.jp/projects/igo-php/downloads/55036/igo-php-0.1.7.zip/ # ダウンロードしたファイルをzipファイル解凍 unzip igo-php-0.1.7.zip
3. 形態素解析稼働テスト
上記インストールが終わりましたら、早速稼働確認を実施します!下記コマンドを打って、形態素解析された結果が帰ってくるかどうか試してみましょう(。・ω・。)
コマンド使い方:php [igo-phpのファイルパス] [辞書へのパス] [文字列]
# コマンドラインで形態素解析を実施テスト php igo-php-0.1.7/lib/Igo.php ipadic/ "すもももももももものうち"
すもも 名詞,一般,*,*,*,*,すもも,スモモ,スモモ,0
も 助詞,係助詞,*,*,*,*,も,モ,モ,3
もも 名詞,一般,*,*,*,*,もも,モモ,モモ,4
も 助詞,係助詞,*,*,*,*,も,モ,モ,6
もも 名詞,一般,*,*,*,*,もも,モモ,モモ,7
の 助詞,連体化,*,*,*,*,の,ノ,ノ,9
うち 名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ,10
4. PHPサンプルコード -形態素解析-
最後に、igo-phpを利用して、phpのコードで形態素解析を実施した例を下記に記載します。関数はわかち書きをする wakati() と、単語の品詞などを詳細に解析する parse() が利用できます。wakati() は単語ごとの配列、parse() は単語の名前、品詞、活用形、読み方などが細かく分けられた多次元配列を返します。
<?php require_once 'igo-php-0.1.7/lib/Igo.php'; $igo = new Igo("ipadic"); # 単語のみを取得する $result = $igo->wakati("私は誰?"); print_r($result); # 品詞等補足情報も取得する $result = $igo->parse("私は誰?"); print_r($result); ?>
Array
(
[0] => 私
[1] => は
[2] => 誰
[3] => ?
)
Array
(
[0] => Morpheme Object
(
[surface] => 私
[feature] => 名詞,代名詞,一般,*,*,*,私,ワタシ,ワタシ
[start] => 0
)
[1] => Morpheme Object
(
[surface] => は
[feature] => 助詞,係助詞,*,*,*,*,は,ハ,ワ
[start] => 1
)
[2] => Morpheme Object
(
[surface] => 誰
[feature] => 名詞,代名詞,一般,*,*,*,誰,ダレ,ダレ
[start] => 2
)
[3] => Morpheme Object
(
[surface] => ?
[feature] => 記号,一般,*,*,*,*,?,?,?
[start] => 3
)
)
PHP関連記事
PHPのその他記事もまとめてますので、是非お立ち寄りください(。・ω・。)
この記事へのコメントはありません。