Help us understand the problem. What is going on with this article?

自然言語処理をテストする環境を整えるまでの手順①

More than 1 year has passed since last update.

自然言語処理関係を行なっていくことになりましたので、まずは環境からと色々やっていったことをまとめた備忘録的なものです。

macOS High Sierra 10.13
Python 3.6.5

基本的な環境構築

HomebrewとWgetのインストール

#Homebrew インストール
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
#確認
brew --version
#最新版に更新
brew update
#Wget インストール
brew install wget
#確認
wget --version

mecab環境構築

mecabのインストール

cd /tmp
wget -O mecab-0.996.tar.gz "https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7cENtOXlicTFaRUE"
tar xzf mecab-0.996.tar.gz
cd mecab-0.996
./configure
make
sudo make install

ipa辞書のインストール

cd /tmp
wget -O mecab-ipadic-2.7.0-20070801.tar.gz "https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7MWVlSDBCSXZMTXM"
tar xzf mecab-ipadic-2.7.0-20070801.tar.gz
cd mecab-ipadic-2.7.0-20070801
./configure --with-charset=utf8
make
sudo make install
#ダウンロードしたファイルを削除
rm -rf /tmp/mecab-*

NEologd辞書のインストール
gitから。

cd /tmp
sudo git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
cd mecab-ipadic-neologd
$ ./bin/install-mecab-ipadic-neologd -n -a
[install-mecab-ipadic-NEologd] : Start..
[install-mecab-ipadic-NEologd] : Check the existance of libraries
[install-mecab-ipadic-NEologd] : find => ok
ーーー
[install-mecab-ipadic-NEologd] : tar => ok
[install-mecab-ipadic-NEologd] : unxz is not found.

エラー。。。
どうも必要なライブラリがなかったようでしたので、インストールしたら無事インストール出来ました。

brew install xz

NEologd辞書を使いたい場合は、-dオプションを付けてパスを付ければOKです。

mecab -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd/
ピコ太朗
ピコ太郎
ピコ太郎    名詞,固有名詞,人名,一般,*,*,ピコ太郎,ピコタロウ,ピコタロー

ちなみにNEologdのパスの確認は下記コマンドでできます。

echo `mecab-config --dicdir`"/mecab-ipadic-neologd"

自分で作成した辞書のインストール
mecabは自身で辞書を作ることもできます。

ユーザ辞書はcsv形式で作成。utf-8で作る。

user.csv
大和D太朗,1223,1223,5000,名詞,固有名詞,人名,*,*,*,だいわDたろう,ダイワDタロウ,ダイワDタロウ

そしてコンパイル。user.csvからuser.dicが出来上がります。

sudo /usr/local/libexec/mecab/mecab-dict-index -d /usr/local/lib/mecab/dic/ipadic/ -u user.dic -f utf-8 -t utf-8 user.csv

ユーザ辞書のパスをmecabの設定ファイルに追記
vi /usr/local/etc/mecabrc

;
; Configuration file of MeCab
;
; $Id: mecabrc.in,v 1.3 2006/05/29 15:36:08 taku-ku Exp $;
;
dicdir =  /usr/local/lib/mecab/dic/ipadic

;追記部
userdic = /usr/local/lib/mecab/dic/userdic/user.dic

確認。ちゃんと反映されてることを確認できました。

$ mecab
大和D太朗
大和D太朗   名詞,固有名詞,人名,*,*,*,だいわDたろう,ダイワDタロウ,ダイワDタロウ

■参考サイト
https://qiita.com/spiderx_jp/items/7f8cbfd762c9abab660b
https://qiita.com/spiderx_jp/items/6bb3fe74eed9d197c86a
https://qiita.com/hiro0217/items/cfcf801023c0b5e8b1c6
https://github.com/neologd/mecab-ipadic-neologd/blob/master/README.ja.md

pythonでmecabを使えるようにする

下記サイトからmecab-python-xxxxをダウンロード(curlコマンドではうまく取得できなかったので直接ダウンロード)

https://drive.google.com/a/n1n9.jp/folderview?id=0B4y35FiV1wh7fjQ5SkJETEJEYzlqcUY4WUlpZmR4dDlJMWI5ZUlXN2xZN2s2b0pqT3hMbTQ&usp=drive_web#list

解凍してインストール。エラー発生。。。

tar zxf mecab-python-0.996.tar.gz
cd mecab-python-0.996
python setup.py build

AttributeError: module 'string' has no attribute 'split'

どうもpython3.x以降はコマンドが変わったらしいので、下記のサイトに従ってsetup.pyを書き換えたら無事インストールまで行けました。

setup.py
def cmd2(str):
    #return string.split (cmd1(str)) ←コメント化
    return cmd1(str).split() 
python setup.py build
python setup.py install

■参考サイト
https://qiita.com/yuichy/items/5c8178e5cc3711386b77
https://anond.hatelabo.jp/20121113070853

JUMANとJUMAN++のインストール

ちなみにJUMAN++とはこのようなものです。
[引用元]http://nlp.ist.i.kyoto-u.ac.jp/index.php?JUMAN++

JUMAN++は言語モデルを利用した高性能な形態素解析システムです.言語モデルとして Recurrent Neural Network Language Model(RNNLM) を用いることにより,単語の並びの意味的な自然さを考慮した解析を行います.それにより JUMAN,MeCab に比べ大きく性能が向上しています.文法・辞書・出力フォーマット等は JUMAN から引き継いだものを利用しています.本システムは CREST「知識に基づく構造的言語処理の確立と知識インフラの構築」の支援により開発されました.

JUMANとJUMAN++のインストール
JUMANやJUMAN++をインストールするにはHomebrewで簡単にできます。

brew install juman
brew install jumanpp

$ jumanpp
ピコ太郎
ピコ ピコ ピコ 名詞 6 地名 4 * 0 * 0 "自動獲得:Wikipedia Wikipedia複合地名 Wikipedia多義"
太郎 たろう 太郎 名詞 6 地名 4 * 0 * 0 "自動獲得:Wikipedia Wikipedia複合地名"

neologd2jumanのインストール
上記のように新しい言葉には対応できていません。そこで、新しい言葉も使いたい場合は、NEologd辞書を利用します。この過程でmecabで使用していたユーザ辞書も使えますので合わせて行なってみます。

まず下記のサイトからneologd2jumanをダウンロードします。
https://github.com/fumankaitori/neologd2juman

解凍後のneologd2juman-masterディレクトリに入っているMakefileを下記の通りに修正します。
(追記部と書いている部分がユーザ辞書の部分です。mecab-user-dic.csvがユーザ辞書名です。自身で作成したファイル名に変更してください。)

install:
    wget --no-check-certificate https://github.com/neologd/mecab-ipadic-neologd/tarball/master -O mecab-ipadic-neologd.tar
    tar -xvf mecab-ipadic-neologd.tar
    xz -dc ./neologd-mecab-ipadic-neologd-*/seed/mecab-user-dict-seed.*.csv.xz > ./mecab-user-dict-seed.csv
    bash neologd2juman.sh mecab-user-dict-seed.csv
    bash install-dictionary.sh
    mv mecab-user-dict-seed.csv.dic neologd-user-dict.dic
    bash neologd2juman.sh mecab-user-dic.csv #追記部
    mv mecab-user-dic.csv.dic mecab-user-dic.dic #追記部
clean:
    rm mecab-ipadic-neologd.tar
    rm -r neologd-mecab-ipadic-neologd-*
    rm -r mecab-user-dict-seed.csv*
    rm -r mecab-user-dic.csv* #追記部

このMakefileと同じ場所にmecabで使用していたユーザ辞書のcsvファイルをコピーしておきます。

cp /usr/local/lib/mecab/dic/userdic/user.csv ./mecab-user-dic.csv

その他必要なものをダウンロード&インストールした後makeします。

pip install mojimoji
pip install jaconv

make

Makeするとユーザ辞書mecab-user-dic.dicとNEologd辞書neologd-user-dict.dicができますので、それらをJUMAN++のダウンロード&解凍した中にあるjumanpp-1.02/dict-build/userdicにコピーします。

JUMAN++のダウンロードはこちらから
http://nlp.ist.i.kyoto-u.ac.jp/index.php?JUMAN++

#作成した辞書をコピー
cd jumanpp-1.02/dict-build/userdic
cp neologd-user-dict.dic ./
cp mecab-user-dic.dic ./

#コピー後makeしてインストールします。
make
sudo ./install.sh

確認したら反映されていました。

$jumanpp
ピコ太郎
ピコ太郎 ぴこたろう ピコ太郎 名詞 6 固有名詞 3 * 0 * 0 "代表表記:ピコ太郎/ぴこたろう"

■参考サイト
https://github.com/neologd/mecab-ipadic-neologd/blob/master/README.ja.md
https://qiita.com/yuichy/items/5c8178e5cc3711386b77
https://qiita.com/Kensuke-Mitsuzawa/items/403256129e812b09c461

以上。自然言語処理の環境ができました。
ここまでで個人的な達成感はありますが、何も始まってもないので、これから色々と解析することを頑張ろうと思います。

ldap2017
研究開発業務の一環として、試作レベルのシステム開発を行っていくことになりましたので、勉強しながら色々とやって行きたいと思います。文系の学卒の素人ですので色々指摘いただけると幸いです。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした