Pythonで動く形態素解析ツール「nagisa」を使ってみた
はじめに
PyCon2018でポスター展示があったらしく、フォロワーさんの投稿で存在を知りました。
形態素解析ライブラリ「nagisa」のポスター
— nadare (@Py2K4) September 18, 2018
pip一つでインストールできる手軽さと
一単語として認識したい単語を簡単に追加できる便利さがあって
mecabより小回りの効く分析ツールって感じ
後で試したい #PyConJP pic.twitter.com/3c9zMQw8Nq
使ってみた
インストールはこれだけ。
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/', 'です']
ちなみに、MeCabの MeCab.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の課題
上記の資料によると、解析速度に課題があるとのことです。
おわりに
インストールが簡単で手軽に使えるので、速度を必要としない解析の際には便利だと思いました。