pythonによる日本語自然言語処理 #pyconjp

Post on 11-Jun-2015

8.855 Views

Category:

Technology

6 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Pythonによる  日本語自然言語処理

@nokuno  

#pyconjp

発表の流れ

•  Python  2.Xにおける文字コード  

•  形態素解析してみよう!  

•  形態素解析を作ってみよう!  

•  テキストマイニングしてみよう!  

•  係り受け解析してみよう!  

自己紹介

•  @nokuno  /  id:nokuno  

•  #TokyoNLP主催  

•  Social  IME  /    StaKK開発者  

•  Web系ソフトウェアエンジニア  

•  「入門自然言語処理」  査読協力  

Python  2.X  における文字コード

Python  2.Xにおける文字コード

UTF-­‐8文字列  

Unicode文字列  

decode encode

ファイル  /  標準入出力

“こんにちは”

u”こんにちは”  

read   write  

鉄則1

ソースコードの頭には  

#  encoding:  utf-­‐8  を書く

鉄則2

文字列定数はu”  “でくくる  

鉄則3

入力はdecode,出力はencode

形態素解析してみよう!

自然言語処理とは?

10

基礎技術 意味解析

構文解析

形態素解析

応用技術 検索エンジン  

スペル訂正  

機械翻訳  

日本語入力  

人間が使う言語の処理を目的とする

MeCabによる形態素解析 •  形態素解析=分かち書き+品詞タグ付け

入力

出力

MeCabによる形態素解析

•  PythonからMeCabを扱うための準備  

– mecab,ipadic,  mecab-­‐pythonをインストール

MeCabによる形態素解析

•  単語ごとの情報を取り出す  

形態素解析を  作ってみよう!

形態素解析を作ってみよう!

•  目標:「くるまでまつ」を形態素解析  

– Analyzerクラスを実装

1.辞書を作成

2.単語を検索

3.解を探索

1.辞書を作成する

単語クラス

辞書

2.単語を検索する •  入力の全部分文字列を辞書引き  

– (トライというデータ構造で効率化可能)

3.解の探索(1)

•  グラフ上の探索問題に落としこむ

車  名詞

来る  動詞

で  助詞

間  名詞

待つ  動詞

文頭 文末

3.解の探索(2)

•  グラフ中で繋がる品詞ペアを限定する

3.解の探索(3)

•  辞書を検索してグラフを構築する

3.解の探索(4)

•  探索結果を列挙する(ここでは全探索)  

実行!

•  よくできました!

テキストマイニング  してみよう!

NLTKによる自然言語処理 •  NLTK(自然言語処理ツールキット)利用  

•  コーパスは青空文庫より「銀河鉄道の夜」

※一部の前処理を省略しています

NLTKによる自然言語処理

•  いろいろな機能を試してみる

回文マイニング •  読み情報を利用して回文かどうか判定

回文マイニング •  実行結果(コーパス:ベア速 凄い回文教えてくれ)

係り受け解析  してみよう!

CaboChaによる係り受け解析

おわりに

•  日本語処理はクセがあるけど,がんばりましょう

参考資料

•  「入門 自然言語処理」第12章  –  http://nltk.googlecode.com/svn/trunk/doc/book-­‐jp/ch12.html  

•  今日使用したソースコード  

–  https://github.com/nokuno/nokuno/tree/master/python/pyconjp  

自然言語処理とは?

意味解析

構文解析

形態素解析

33

今回扱う範囲

Python  2.Xにおける文字コード

•  内部:Unicode,外部:UTF-­‐8の場合

UTF-­‐8文字列  “こんにちは”

Unicode文字列  u”こんにちは”  

decode

encode

MeCabによる形態素解析 •  簡易的な解析  

NLTKによる自然言語処理

NLTKによる自然言語処理

top related