matobaの学んだこと

とあるPythonエンジニアのブログ。ソフトウェア開発、執筆活動、ライフログ。

nagisaで自然言語処理を試してみる

PyCon JP 2019でnagisaという日本語用の自然言語処理のライブラリが紹介されていました。

スライドで紹介されている内容をとりあえず触ってみて、自分が後で見返したい部分を抜粋してメモして記事にします。

詳しい情報は、スライドを見てください。念のためですが、私は発表者ではありません。

speakerdeck.com

インストール

pipでインストールできます。

pip install nagisa

現時点でpypiから落とせる最新版は、 0.2.4 のようです。

形態素解析してみる

とりあえず動かしてみます

>>> import nagisa
[dynet] random seed: 1234
[dynet] allocating memory: 32MB
[dynet] memory allocation done.
>>> text = 'nagisaで自然言語処理を試してみます'
>>> tokens = nagisa.tagging(text)
>>> print(tokens)
nagisa/名詞 で/助詞 自然/名詞 言語/名詞 処理/名詞 を/助詞 試し/動詞 て/助詞 み/動詞 ます/助動詞
>>> print(tokens.words)
['nagisa', 'で', '自然', '言語', '処理', 'を', '試し', 'て', 'み', 'ます']
>>> print(tokens.postags)
['名詞', '助詞', '名詞', '名詞', '名詞', '助詞', '動詞', '助詞', '動詞', '助動詞']

とりあえず、こんな感じで解析できました

名詞のみを抽出

名詞のみを抽出できるようです。とりあえず名詞だけ抜き出したい時ってありますよね。便利。

実際はこうやります。

>>> tokens = nagisa.extract(text, extract_postags=['名詞'])
>>> print(tokens.words)
['nagisa', '自然', '言語', '処理']
>>> print(tokens.postags)
['名詞', '名詞', '名詞', '名詞']

ユーザー名詞を追加

名詞のみを抽出したい時、独自の辞書を使いたい時ってありますよね。

nagisaの場合は、実行時に独自名詞のリストを渡してユーザー辞書を追加できます。

実運用に載せるなら、速度とかが気になるところですが、とりあえずサクッとやりたいことはあるので便利です。

>>> tagger = nagisa.Tagger(single_word_list=['自然言語処理'])
>>> tokens = tagger.tagging(text)
>>> tokens.words
['nagisa', 'で', '自然言語処理', 'を', '試し', 'て', 'み', 'ます']
>>> tokens = tagger.extract(text, extract_postags=['名詞'])
>>> tokens.words
['nagisa', '自然言語処理']

リポジトリ

github.com

他の形態素解析ライブラリとの比較

他の形態素解析ライブラリとの比較がスライドの中にありました。 参照することがありそうなのでリンクを貼っておきます。

Python による日本語自然言語処理 〜系列ラベリングによる実世界テキスト分析〜 / PyCon JP 2019 - Speaker Deck

所感

とりあえず、nagisaは日本語のテキストを対象に解析して、色々試行錯誤をしたいときは便利そうな印象でした。

スライドの中では、そのほかにも形態素解析のライブラリが色々比較されていて、それが印象的でした。

僕の中では日本語の形態素解析=mecabみたいなイメージになってました。しかし、他にも色々あるのだなあ、と勉強になりました。

それでは本日はこれで。