Loading

[PHP] igo-phpを用いた形態素解析〜タグクラウド自作に向けて〜

tagcloud

PHPで自作でタグクラウドを作成するためには、まずは文字データを分解して上げる必要があります。その文字分析の手法としてよく利用されるのが、形態素解析と言われる手法です。yahooAPIを利用した形態素解析もありますが、今回はigo-phpを用いた形態素解析に焦点をあてます(。・ω・。)

[PHP] igo-phpを用いた形態素解析〜タグクラウド自作に向けて〜

0. そもそも形態素解析って?

形態素解析とは何なのか、まずは引用で説明します(。・ω・。)

形態素解析(morphological analysis)とは、検索エンジンにも用いられている自然言語処理の手法の一つで、ある文章・フレーズを「意味を持つ最小限の単位(=単語)」に分解し、文章やフレーズの内容を判断するために用いられます。

SEO HACKS

具体的にどういうことかというと、下記のように名詞や動詞、助詞等で分割しすることです。

すももももももももものうち

すもも/も/もも/も/もも/の/うち

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/

igo Download Site

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

IPA辞書 Download Site

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

igo-php Download Site

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のその他記事もまとめてますので、是非お立ち寄りください(。・ω・。)

[神作品・隠れ名作] #02_ミステリーアニメ 人気ランキングTOP25(随時更新)

[PHP] ショートカット(短縮)URL取得 with Google短縮URL API

関連記事

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

CAPTCHA


New Article

  1. 三国天武 破浪先駆
  2. 白衣呂蒙 専用神器
  3. ドラクエ ナンバリングタイトル 英語
  4. 三国天武 夏侯惇 神器
  5. 鬼滅の刃 柱人気ランキング

人気記事

  • 該当なし
PAGE TOP