Loading

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


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

ふぇにば|PhoEniBiR

投稿者プロフィール

わくわくしてて偉い系VTuver ふぇにば です。
少しでもお役に立てておりましたら嬉しいです(。・ω・。)

関連記事

  1. [jQuery] パフォーマンス向上のコツ(処理速度向上・高速化 あれこれ)

    2020.05.17
  2. [PHP] ショートカット(短縮)URL取得 with Google短縮URL …

    2016.05.09
  3. [jQuery] リアルタイムに入力フォームのバリデーションをチェックするコード…

    2018.08.09
  4. [PHP] ソーシャルボタン自作!PHPでSNSのカウント数を取得する(Face…

    2017.11.25
  5. SSHでリモートコマンド実行、成功失敗の返り値(戻り値)取得方法

    2016.06.23
  6. 『Excel VBA』マクロで対象ブックの印刷総枚数を取得する

    2016.06.21

コメント

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

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

CAPTCHA


New Article

  1. ChatGPT × StableDiffusion
  2. ChatGPT VS コンサルタント
  3. 注目したい5つのテクノロジートレンド2023
PAGE TOP