u++の備忘録

Pythonで動く形態素解析ツール「nagisa」を使ってみた

はじめに

PyCon2018でポスター展示があったらしく、フォロワーさんの投稿で存在を知りました。


使ってみた

インストールはこれだけ。

pip install nagisa

簡単に形態素解析ができます。

>>> import nagisa
[dynet] random seed: 1234
[dynet] allocating memory: 32MB
[dynet] memory allocation done.

>>> text = 'pythonで手軽に使えるツールです'

>>> words = nagisa.tagging(text)

>>> print(words)
python/名詞 で/助詞 手軽/形状詞 に/助動詞 使える/動詞 ツール/名詞 です/助動詞

>>> print(words.words)
['python', 'で', '手軽', 'に', '使える', 'ツール', 'です']

>>> print(words.postags)
['名詞', '助詞', '形状詞', '助動詞', '動詞', '名詞', '助動詞']

nagisaの利点

文字単位の双方向LSTMを採用しており、URLや顔文字に頑健

>>> text = 'ブログのURLはhttps://upura.hatenablog.com/です'

>>> words = nagisa.tagging(text)

>>> print(words.words)
['ブログ', 'の', 'URL', 'は', 'https://upura.hatenablog.com/', 'です']

ちなみに、MeCabMeCab.Tagger("-Owakati") を使うと、URLの中身がバラバラに分割されてしまいます。

>>> import MeCab

>>> t = MeCab.Tagger("-Owakati")

>>> result = t.parse(text)

>>> print(result)
ブログ の URL は https :// upura . hatenablog . com / です

単語分割の方法を調整できる

辞書にない固有名詞は、形態素解析ツールを使うと一般に過度に分割されます。

>>> text = '日本経済新聞を読んでいます'
>>> words = nagisa.tagging(text)
>>> print(words.words)
['日本', '経済', '新聞', 'を', '読ん', 'で', 'い', 'ます']

この時の辞書の登録方法もお手軽です。

>>> new_tagger = nagisa.Tagger(single_word_list = ['日本経済新聞'])

>>> words = new_tagger.tagging(text)

>>> print(words.words)
['日本経済新聞', 'を', '読ん', 'で', 'い', 'ます']

nagisaの課題

上記の資料によると、解析速度に課題があるとのことです。

f:id:upura:20180918203247p:plain

おわりに

インストールが簡単で手軽に使えるので、速度を必要としない解析の際には便利だと思いました。