ブログトップ 記事一覧 ログイン 無料ブログ開設

翡翠はコンピュータに卵を生むか

2016-12-03

Common Lispで書かれた形態素解析器cl-igoを使ってみた

cl-igoはCommon Lispから使える形態素解析器で、辞書にはmecab互換の辞書が使える。

roswellから入るようにgithubにミラーを作ったので、

ros install masatoi/charseq masatoi/cl-igo

でインストールできる。SBCL推奨とのこと。

igoのバイナリ辞書を作る

mecab-ipadic-2.7.0-20070801.tgzとigo-0.4.5.jarが同じディレクトリに入っているとして、

tar xzvf mecab-ipadic-2.7.0-20070801.tar.gz
java -cp ./igo-0.4.5.jar net.reduls.igo.bin.BuildDic ipadic mecab-ipadic-2.7.0-20070801 EUC-JP

でipadicというディレクトリができている。~/igo/ipadicにでも置いておくとする。

使ってみる

(ql:quickload :igo)

;; 辞書を読み込む
(igo:load-tagger "/home/wiz/igo/ipadic/")

(igo:parse "庭には二羽にわとりがいる。")
(("庭" "名詞,一般,*,*,*,*,庭,ニワ,ニワ" 0) ("に" "助詞,格助詞,一般,*,*,*,に,ニ,ニ" 1)
 ("は" "助詞,係助詞,*,*,*,*,は,ハ,ワ" 2) ("二" "名詞,数,*,*,*,*,二,ニ,ニ" 3)
 ("羽" "名詞,接尾,助数詞,*,*,*,羽,ワ,ワ" 4) ("にわとり" "名詞,一般,*,*,*,*,にわとり,ニワトリ,ニワトリ" 5)
 ("が" "助詞,格助詞,一般,*,*,*,が,ガ,ガ" 9) ("いる" "動詞,自立,*,*,一段,基本形,いる,イル,イル" 10)
 ("。" "記号,句点,*,*,*,*,。,。,。" 12))
(igo:wakati "庭には二羽にわとりがいる。")
("庭" "に" "は" "二" "羽" "にわとり" "が" "いる" "。")

mecab-ipadic-neologdのインストール

mecab-ipadic-neologdは新語などを大幅に増やした辞書で、SNSのデータを分析したいようなときに重要になる。

Ubuntu14.04でのインストール例は、

# 必要パッケージをインストール
sudo apt-get install mecab libmecab-dev mecab-ipadic-utf8 git make curl xz-utils file

git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
cd mecab-ipadic-neologd/

# 途中で確認が出るのでyesを入力
./bin/install-mecab-ipadic-neologd -n

# インストール先
echo `mecab-config --dicdir`"/mecab-ipadic-neologd"
# /usr/lib/mecab/dic/mecab-ipadic-neologd

# 動作確認
mecab -d /usr/lib/mecab/dic/mecab-ipadic-neologd

igoのバイナリ辞書を作る

mecab-ipadic-neologdはUTF-8のみ対応ということなので、文字コードにUTF-8を指定してバイナリ辞書を作る。

cd build/
java -cp ../../igo-0.4.5.jar net.reduls.igo.bin.BuildDic ipadic-neologd mecab-ipadic-2.7.0-20070801-neologd-20161201/ UTF-8

これでipadic-neologdというディレクトリができる。これはJava版のIgoからなら以下のようにして使える。

java -cp ../../igo-0.4.5.jar net.reduls.igo.bin.Igo ipadic-neologd

しかしCommon Lisp版はEUC-JPのみ対応のようで、igo:load-taggerで読み込もうとするとエラーになってしまう。うーむ。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/masatoi/20161203/1480691857