形態素解析関連
Mecab + NEologdのインストール
macの場合
mecab本体と辞書をインストール
brew install mecab
brew install mecab-ipadic
pythonラッパーをインストール
pip install mecab-python3
NEologdをインストール
-n は辞書の更新用コマンドなので定期的に実行して更新してください(週2回更新しているらしい)
git clone --depth 1 git@github.com:neologd/mecab-ipadic-neologd.git
cd mecab-ipadic-neologd
./bin/install-mecab-ipadic-neologd -n
出力が沢山出てきますが、最後の方は以下のようになると思いますので、インストール先のパスを確認してください。
[install-mecab-ipadic-NEologd] : Install completed.
[install-mecab-ipadic-NEologd] : When you use MeCab, you can set '/opt/homebrew/lib/mecab/dic/mecab-ipadic-neologd' as a value of '-d' option of MeCab.
[install-mecab-ipadic-NEologd] : Usage of mecab-ipadic-NEologd is here.
Usage:
$ mecab -d /opt/homebrew/lib/mecab/dic/mecab-ipadic-neologd ...
[install-mecab-ipadic-NEologd] : Finish..
[install-mecab-ipadic-NEologd] : Finish..
NEologdを利用するには-d /usr/local/lib/mecab/dic/mecab-ipadic-neologd
をオプションに指定する必要あり。パスは環境によって変わります。
NEologdを使用することで新語をまとまりとして捉えることが可能になる
echo "鬼滅の刃" | mecab -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd
鬼滅の刃 名詞,固有名詞,一般,*,*,*,鬼滅の刃,キメツノヤイバ,キメツノヤイバ
EOS
echo "鬼滅の刃" | mecab
鬼 名詞,一般,*,*,*,*,鬼,オニ,オニ
滅 名詞,一般,*,*,*,*,滅,メツ,メツ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
刃 名詞,一般,*,*,*,*,刃,ハ,ハ
EOS
Pythonからの呼び出し方法
import MeCab
m_t = MeCab.Tagger('-Owakati -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd')
def tokenizer_mecab_neologd(text):
text = m_t.parse(text)
return text.strip().split()
result = tokenizer_mecab_neologd("今日は鬼滅の刃の映画を見に行きました。")
print(result)
----------出力結果----------
['今日', 'は', '鬼滅の刃', 'の', '映画', 'を', '見', 'に', '行き', 'まし', 'た', '。']
大規模コーパスの前処理の際はpythonの実行速度がボトルネックになると思われるので、シェルスクリプトを書いてgnu parallelあたりで並列処理してしまうのがおすすめ
Juman++のインストール
JUMANの後継
辞書がipadic系とは異なるjuman辞書を採用しており、所謂学校文法とは少し異なる単語の区分分けがされている。
macの場合
パッケージ管理ツールでのインストールができないのでソースコードをダウンロードして手元の環境でビルドするという戦略になります。
ビルド用のツールをインストール
brew install zlib
brew install cmake
brew install wget
ソースをダウンロードしてビルド
-DCMAKE_INSTALL_PREFIX
にはインストール先を指定する。デフォルトだと/usr/local
だと思うけど他のツールとの兼ね合いでアンインストールが面倒になるのでjuman++用のディレクトリを作ってシンボリックリンクを貼るのがおすすめ。
getconf _NPROCESSORS_ONLN
はプロセスが使用可能なコアの数を調べるコマンド、Linux系OSのnproc
の代替です。-j
フラグ指定された数分の並列ビルドが行われます。
最後のブロックで/usr/local/jumanpp
いかに保存されたファイルに/usr/local
以下へシンボリックリンクを貼っています。
wget "https://github.com/ku-nlp/jumanpp/releases/download/v2.0.0-rc3/jumanpp-2.0.0-rc3.tar.xz"
tar xvJf jumanpp-2.0.0-rc3.tar.xz
cd jumanpp-2.0.0-rc3
mkdir bld && cd bld
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local/jumanpp
sudo make install -j $(getconf _NPROCESSORS_ONLN)
# 作成した3つのファイルのリンクをパスの通った環境へ配置します
find /usr/local/jumanpp -type d | sed -e "s/\/usr\/local\/jumanpp/\/usr\/local/" | xargs -I{} sudo mkdir {}
src=(`find /usr/local/jumanpp -type f`)
tgt=(`find /usr/local/jumanpp -type f | sed -e "s/\/usr\/local\/jumanpp/\/usr\/local/"`)
for i in {1..${#tgt[@]}}; do
sudo ln -s ${src[i]} ${tgt[i]}
done
アンインストールするときは
sudo rm -rf /usr/local/jumanpp
find -L /usr/local -type l | xargs -I{} sudo unlink {}
ただこれだと/usr/local
以下の壊れたリンクを全て削除してしまうので少し余計。。。
knpのインストール
ビルド用ツールをインストール
brew install libtool automake autoconf
# libtoolizeがglibtoolizeとしてインストールされるのでパスを通す
ln -s /usr/local/bin/glibtoolize /usr/local/bin/libtoolize
git clone git@github.com:ku-nlp/knp.git
cd knp
./autogen.sh
# 辞書をインストール
wget http://lotus.kuee.kyoto-u.ac.jp/nl-resource/knp/dict/latest/knp-dict-latest-bin.zip
unzip knp-dict-latest-bin.zip
ln -s `pwd`/dict-bin/* dict/
ln -s `pwd`/dict-bin/auto/* dict/auto/
ln -s `pwd`/dict-bin/distsim/* dict/distsim/
ln -s `pwd`/dict-bin/ebcf/* dict/ebcf/
./configure # --prefix="インストール先"
janome
インストール
pythonのみで辞書も同梱されているのでpipで一発インストール可能
pip install janome
使い方
分かち書きの場合について記します。
import janome.tokenizer
j_t = janome.tokenizer.Tokenizer()
def tokenizer_janome(text):
return [tok for tok in j_t.tokenize(text, wakati=True)]
result = tokenizer_janome("今日は鬼滅の刃の映画を見に行きました。")
print(result)
----------出力結果----------
['今日', 'は', '鬼', '滅', 'の', '刃', 'の', '映画', 'を', '見', 'に', '行き', 'まし', 'た', '。']