3
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2019-09-16

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あたりも非常にノイジーなインプットになりますが、そのへんをどう処理できるかは後日試してみようと思います。

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

3
6
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?