Help us understand the problem. What is going on with this article?

[PyCon2019] レポート Python による日本語自然言語処理 〜系列ラベリングによる実世界テキスト分析〜

Session: https://pycon.jp/2019/schedule/?sessionId=115

参加して来ました。

詳細は資料を見れば良いと思いますので、自分がピンと来た部分だけをピックアップして紹介します。

資料

主旨

発表者: 池田 大志(Taishi Ikeda) さん

手軽に使える nagisa のご紹介

特徴

  • BLSTMs による単語分割と品詞タグ付けの機能を提供
  • 系列ラベリングモデルの学習が可能
  • pip install nagisa でインストール可能

nagisaを使うべき理由

社内のSlackに流れる知見を自動抽出したいなぁ、、という動機があり、特に以下の2点には非常に有用性を感じました。

  • ユーザー辞書の追加が簡単
  • URLや顔文字記号に対して頑健

どちらも既存ライブラリでは少々面倒な手続きが必要で億劫だったところでした。特に顔文字とURLは、Slackでは頻出しがちかつ非常にノイジーな存在でしたので、これがnagisaではどのように上手く(そして手軽に)抽出できるか非常に楽しみです。

コードスニペットは作者の池田さんが basic_usage.ipynb に公開されています。手軽さが非常によくわかるスニペットでしたので、以下ではそれをまるっと引用させていただきますが、作者の池田さんご自身が非常に親切なドキュメントを残してくれてますので是非そっちをご覧ください。

まずはベーシックな使い方から。

# シンプルな単語分割と品詞タグ付け機能を提供
import nagisa                                                           

text = 'Pythonで簡単に使えるツールです'                                 
tokens = nagisa.tagging(text)                                           

print(tokens)                                                           
print(tokens.words)                                                     
print(tokens.postags)
# >>> Python/名詞 で/助詞 簡単/形状詞 に/助動詞 使える/動詞 ツール/名詞 です/助動詞
# >>> ['Python', 'で', '簡単', 'に', '使える', 'ツール', 'です']
# >>> ['名詞', '助詞', '形状詞', '助動詞', '動詞', '名詞', '助動詞']

ユーザー辞書の追加が簡単

Taggerインスタンスの生成時に、ユーザー定義の単語リストである single_word_list を与えるだけです。

# ユーザー辞書の追加が容易
import nagisa                                                           

text = "3月に見た「3月のライオン」"                                     
print(nagisa.tagging(text))                                             

new_tagger = nagisa.Tagger(                                             
    single_word_list=['3月のライオン']                                  
)                                                                       
print(new_tagger.tagging(text))
# >>> 3/名詞 月/名詞 に/助詞 見/動詞 た/助動詞 「/補助記号 3/名詞 月/名詞 の/助詞 ライオン/名詞 」/補助記号
# >>> 3/名詞 月/名詞 に/助詞 見/動詞 た/助動詞 「/補助記号 3月のライオン/名詞 」/補助記号

URLや顔文字記号に対して頑健

# 顔文字やURLに対して頑健な解析
import nagisa                                                           

text = 'https://github.com/taishi-i/nagisaでコードを公開中(๑¯ω¯๑)'         
tokens = nagisa.tagging(text)                                           
print(tokens)
# >>> https://github.com/taishi-i/nagisa/URL 
# >>> で/助詞 
# >>> コード/名詞 
# >>> を/助詞 
# >>> 公開/名詞 
# >>> 中/接尾辞 
# >>> (๑ ̄ω ̄๑)/補助記号

まとめ

めちゃくちゃ簡単ですね。

URLの文字列をちゃんとURLとして抽出できるのは非常にありがたいです。Slackに貼られているURLって、参考リンクの提示だったりするのでできれば前処理で除去したくないんですよね。nagisaを知る以前は、URLを過剰分割してしまい非常に鬱陶しかったので前処理で正規表現使って一括除去してました。。。

Slackのテキストだとemojiあたりも非常にノイジーなインプットになりますが、そのへんをどう処理できるかは後日試してみようと思います。

非常に素晴らしいツールのご紹介、ありがとうございました。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away