形態素解析ツールのnagisa(なぎさ)を知っていますか?

Pythonで形態素解析といえば MecabやJanomeなどが非常に有名です。特にJanomeは簡単なインポートで使用できるため、注目されています。ここに新しく、より簡易的に直感的に分かち書きや品詞のタグ付けができる形態素解析ツールを見つけたので紹介します。

nagisa(なぎさ)とは?

形態素解析といえば、MeCabやJanomeが有名ですが、同じように日本語の単語分割と品詞タグ付けをできるツールがnagisaです。RNNを用いており、URLや顔文字など最近のネット用語にも幅広く対応しているようです。その上、非常に簡単に使うことができるので、初心者にもオススメの形態素解析ツールです!

参考 nagisagithub

実際に使ってみよう!

コードを見てどんなものか見ていくのが一番の近道です!一緒に見ていきましょう!

インストール方法

pipで以下のようにインストールできます。辞書が内包されているので、MeCabのような面倒な準備もなくスムーズに始めることができます。

pip
pip install nagisa

基本的な使い方(分かち書き&品詞タグ付け)

上記に掲載したnagisaのgithubに分かりやすくコードサンプルがあります。

Python
import nagisa

# Sample of word segmentation and POS-tagging for Japanese
text = 'Pythonで簡単に使えるツールです'
words = nagisa.tagging(text)
print(words)
Python/名詞 で/助詞 簡単/形状詞 に/助動詞 使える/動詞 ツール/名詞 です/助動詞

# Get a list of words
print(words.words)
['Python', 'で', '簡単', 'に', '使える', 'ツール', 'です']

# Get a list of POS-tags
print(words.postags)
['名詞', '助詞', '形状詞', '助動詞', '動詞', '名詞', '助動詞']

# The nagisa.wakati method is faster than the nagisa.tagging method.
words = nagisa.wakati(text)
print(words)
['Python', 'で', '簡単', 'に', '使える', 'ツール', 'です']

出力単語をフィルタリングする

選択した特定の品詞のみを取り出すことや、排除することもできます。以下では、名詞とタグづけされたワードのみ出す方法と、助詞・助動詞とタグづけされたワード以外を取り出す方法です。

Python
# Extarcting all nouns from a text
words = nagisa.extract(text, extract_postags=['名詞'])
print(words)
Python/名詞 ツール/名詞

# Filtering specific POS-tags from a text
words = nagisa.filter(text, filter_postags=['助詞', '助動詞'])
print(words)
Python/名詞 簡単/形状詞 使える/動詞 ツール/名詞

出力単語を微調整する

nagisaでは出力単語を事前に指定すると、一つのワードとして認識させることができます。例えば以下の例であれば、ニューラルネットワークという言葉を一つの塊としてみなすように設定しています。これが簡易なコードで実現できることが凄いですね!

Python
# A word can be recognized as a single word forcibly.
text = 'ニューラルネットワークを使ってます。'
print(nagisa.tagging(text))
ニューラル/名詞 ネットワーク/名詞 を/助詞 使っ/動詞 て/助動詞 ます/助動詞 。/補助記号

# If a word is included in the single_word_list, it is recognized as a single word.
tagger_nn = nagisa.Tagger(single_word_list=['ニューラルネットワーク'])
print(tagger_nn.tagging(text))
ニューラルネットワーク/名詞 を/助詞 使っ/動詞 て/助動詞 ます/助動詞 。/補助記号

nagisaを実際に使ってみて感じた長所と短所!

nagisaの良い点

感覚値ベースで、MeCabやjanomeよりも最新の言葉に対する判別精度は高いです。さらに、前項で説明した通り、自分で調整ができるので使い勝手がかなり良いです。自分だけのモデルを作っている感覚ですね!

nagisaの短所(サポートしていない点)

完全なライブラリはありませんが、nagisaを使ってみて改善の余地を感じた点は二点あります。

原型サポートはしていない

Mecabやjanomeとは異なり、原型を返すことはできません。辞書照合など原型が重要になってくる場合には、nagisa以外を選択しましょう。もしくは組み合わせで他の言語処理系ライブラリと併用しても良いかもしれません。

ややスピードが遅い

こちらは実際に比較した結果ですが、janomeよりも処理に時間がかかります。検証記事は別途用意しますが、肌感で感じる程結構な差があります。データ量が多い場合はあまり向かないかもしれません。

まとめ

nagisaの紹介に加えて、実際に使ってみた感想を書いてきました。感情分析の前処理やネガポジ分析を試す際にかなり便利に使わせていただきました。まだまだ有名とまではいっていないライブラリなので、どんどん使う人が増えていけば良いなと思います!

ぜひ使ってみてください!オススメです!