形態素解析 - 学術情報センター

授業の概要
自然言語処理システム特論
Natural Language Processing Systems
第2回
2016/4/20
芝浦工業大学 工学部 情報工学科
杉本 徹
[email protected]
• 自然言語処理システムの基礎となる概念を解説
した上で,システム作成実験や論文輪講を通じて
その実現手法と応用事例について学んでいく
• 授業形式: 講義 + 実験課題 + 輪講
• 想定する予備知識:
– 「データ構造とアルゴリズム」,「自然言語処理」を履修
済み,または同等の知識を持っていることが望ましい
– プログラミングの基本的なスキルが必要(C, Java等)
授業ホームページ
• 杉本の研究室ホームページから辿れる
今日の内容
形態素解析
• はじめに:テキストの構造
• 講義資料(PDF)
• スケジュール
• 課題(今後)
• 形態素解析とは?
• 形態素解析アルゴリズム
• 形態素解析ツールの紹介
実験課題の参加希望アンケート
テキストの構造
例(2008/4/21 産経新聞):
はじめに:
テキストの構造
段落
東京ディズニーランド(TDL)を運営するオリエンタルランド
(千葉県浦安市)は21日、賞味期限切れの商品「明治ベ
ビーフード赤ちゃん村麦茶」4個をTDL内で販売したと発表
した。 従業員のチェックミスが原因。 来園者から健康被害
の訴えや苦情はないが、対象商品を回収する。
同社によると、問題の商品は3月27日から今月19日の
間、ベビーセンターの入り口カウンターで販売。 賞味期限
(今年3月21日)は紙箱の底面に記されている。 同社は
「(製造者の)明治乳業に責任はなく、当社の管理ミス。
チェック頻度を高めるなど再発防止に努めたい」としている。
1
テキストの構造(続き)
文章,文の階層構造
文章(text)
• 文間の構造(文章構造,修辞構造,談話構造)
~
発表した。
~
が原因。
~
回収する。
~
販売。
~
ている。
段落(paragraph)
~
ている。
文章構造
文(sentence),節(clause)
文節(),句(phrase)
• 文内の構造(構文構造)
単語(word),形態素(morpheme)
健康被害の訴えや苦情はないが、対象商品を回収する。
節
構文構造
文字(character),音素(phoneme)
文節
• 句(phrase)
• 文(sentence)
– 完結した表現内容を表す最小の単位
– 通常,「。」,「?」 などで終わる
• 節(clause)
– 文の一部分で,主語・述語を持つもの
– 1つの文の中に複数の節が含まれることがある
– 例: 「雨が降ってきたので,太郎は傘をさした。」
副詞節
– 例: 「花子は,昨日借りた本を読んだ。」
– 一つの意味を表す単語のまとまり
例: 名詞句 「古い本」 “an old book”
「昨日買った本」
“the book that I bought yesterday”
例: 前置詞句 “in the morning”, “at the moment”
例: 後置詞句 「私が」 「古い本を」
• 文節
– 自立語(名詞や動詞)+付属語(助詞や助動詞)
– 日本語に特有(橋本文法,学校文法)
連体節
品詞分類表
• 品詞(part of speech)
• 単語(word)
• 形態素(morpheme)
– 単語を文法的機能や形態によって分類したもの
動詞
活用あり 述語になる(用言)
形容詞
形容動詞
– 大体同じ(意味をもつ,最小の言語単位)
– 例外: 接尾辞 “-ing” “-est” 「屋」 「さん」
形態素だが,単語ではない
自立語
単語
主語になる(体言)
名詞
連用修飾語になる
副詞
活用なし 連体修飾語になる
付属語
連体詞
接続語になる
接続詞
独立語になる
感動詞
活用あり
助動詞
活用なし
助詞
2
自然言語の解析処理の流れ
形態素解析とは?
入力文
「太郎は本を読んだ。」
① 形態素解析
太郎 は 本 を 読ん だ
名 助 名 助 動 助動
② 構文解析
太郎 は 本 を 読ん だ
③ 意味解析
agent
read
taro
④ 文脈解析
参考: コンパイラの解析処理
object
book
複数の文に
またがる処理
解析の各段階における処理内容
(形態素解析 ⇒ 構文解析 ⇒ 意味解析 ⇒ 文脈解析)
原始プログラム
sum := sum + 10
① 字句解析
sum := sum + 10
id
1.入力文が正しいかどうか判定する
(言語知識の一種である制約を用いる.例:文法)
asn id pls num
2.正しい場合,可能な解析結果を数え上げる
statement
② 構文解析
expression
(複数解が存在 ⇒ 曖昧性)
sum := sum + 10
③ 意味解析
3.その中から妥当な結果を選択する
id asn id pls num
(言語知識の一種である選好を用いる.例:出現確率)
形態素解析 (Morphological Analysis)
注: 厳密には 「形態素」≠「単語」 だが,慣例にならい,
以後「形態素」という言葉の代わりに「単語」と言う
入力文
形態素解析
「太郎は走った。」
形態素解析アルゴリズム
(1) 単語列への分割
(2) 単語への品詞付与
(3) 単語の原形復元
単語辞書
表層形 太郎 は 走っ
単語情報の列
た
品詞
名詞 助詞 動詞 助動
原形
太郎 は 走る
た
参考: 英文解析の場合は,上記 (2) と (3) の処理が重要
3
問題の定式化
解析グラフ(Lattice)
• まず,単語辞書を参照して,与えられた入力文を
単語の列へ分割するあらゆる可能性を示すグラフ
構造(lattice と呼ばれる)を作成する
日本
文頭
日
本
本
日本
を
名詞
名詞
接尾辞
名詞
助詞
本
を
出
発
する
文末
日
• 例: 「日本を出発する」
– 単語辞書
出発
本
出(る)
発
出発
発する
する
動詞
接尾辞
名詞
動詞
動詞
形態素解析における経験則(Heuristics)
発する
• 形態素解析とは,解析グラフにおいて,文頭から
文末 までたどる複数の経路の中から最適な経
路を選ぶ処理
コスト最小化法
• 各単語および単語どうしの接続にコストを課す.
合計コストが最小の単語分割を求めるのが目標
• 最長一致法
– 文の先頭から解析を始めて,もし可能な単語が
複数あるならば最長のものを選ぶ
• 分割数最小法
– 文全体の単語数が最小となる分割を選ぶ
• 品詞接続表
– 品詞の連鎖可能性を表形式で表しておき,単語
分割の際の制約条件として参照する
例: 「名詞+助詞」はOK.「名詞+動詞」はNG
Markov モデル
• 単語列の生起確率
n
P(w1 w2 … wn) = Π P(wi|w1 … wi-1)
i=1
を bigram で近似する
n
P(w1 w2 … wn) = Π P(wi|wi-1)
文 S = w1 w2 … wn (wi: 単語)
cost(w1 w2 … wn) =
cost(w1) + cost(w2) + … + cost(wn) +
cost(w1,w2) + cost(w2,w3) + … + cost(wn-1,wn)
• 単語コスト cost(w),接続コスト cost(w, w’) の設定
– 直観に基づき手作業で設定するのは困難
⇒ 統計的モデルを利用する
隠れ Markov モデル(HMM)
• 品詞 ti を(観測不可能な)内部状態,単語 wi をそれ
らの状態から生成されるシンボルと考えると,
n
P(w1 w2 … wn) = Π P(ti|ti-1) P(wi|ti)
i=1
i=1
• 単語 bigram 確率の最尤推定
P(wi|wi-1) = C(wi-1, wi) / C(wi-1)
C(w) : コーパス中の出現頻度
• 接続コストの設定例 cost(w, w’) = -log P(w’|w)
• 品詞 bigram 確率の最尤推定 (→ 接続コスト)
P(ti|ti-1) = C(ti-1, ti) / C(ti-1)
• 品詞ごとの単語出現確率の最尤推定(→単語コスト)
P(wi|ti) = C(wi, ti) / C(ti)
4
コスト最小解の探索
組合せ最適化問題と動的計画法
• 組合せ最適化問題
• 動的計画法(部分最適解の記録を伴う探索)
• アルゴリズム
1. 部分最適解を記録する表を初期化(空)する
2. 文頭から始めて,注目する文字位置 i を1つずつ
右へ移動しながら以下の処理を行う
• 文字位置 i で終わる単語 w を含むエントリを表から探
し,そのような単語 w ごとに以下の処理を行う
1) w で終わるエントリが表に複数登録されている場合は,その
中でコスト最小のもの以外を削除する
2) 文字位置 i の次から始まる単語 w’ ごとに w と w’ を接続した
場合のコストを計算し,結果を表に追加する
解析例
日本
文頭
単語
単語
コスト
出(る) 動詞
名詞
接尾
8
日本 名詞
7
本
を
出
発
本
8
10
本
する
文末
発
接尾
7
10
出発
名詞
12
発する 動詞
14
• 部分最適解表
単語列
日本
日
3
日+本
9
22
左\右
名詞 接尾 助詞 動詞 文末
1
10
10
5
-
3
5
10
名詞
3
1
3
5
10
接尾
5
1
4
日+本
20
文頭
5
日本+を
12
6
日+本+を
26
7
日+本+を
24
助詞
1
10
5
3
8
・・
・・・
動詞
3
8
3
3
3
する
3
動詞
3
• 接続コスト
形態素解析ツールの紹介
コスト計
2
助詞
• 例: ダイクストラ法(最短経路探索)
発する
1
を
1. 問題から小さい部分問題を抽出し,それに対する最適解
を求めて記録する
2. その部分問題を少し拡張して得られる部分問題を生成し,
それに対する最適解を,前段で求めた最適解を用いて求
める
3. これを繰り返し,最終的に元の問題の最適解を求める
出発
本
コスト
名詞
• 動的計画法
日
• 単語コスト
日
– 有限個の要素の組合せで定義される最適化問題
(最適レイアウト,最適スケジューリング,最適経路など)
8
MeCab の使い方
形態素解析ツールの例
• MeCab (工藤拓,2006~)
– 条件付き確率場(CRF)を用いたコスト推定
– ChaSen より高速に動作
• ChaSen (奈良先端大,1997~)
– HMM を用いた単語コスト・接続コストの自動推定
• JUMAN(京都大,1993~)
– 単語コスト・接続コストは人手で設定
– MeCab, ChaSen と異なり,益岡・田窪文法に基づく辞書を使用
– 代表表記や意味情報など,出力される単語情報が充実
• Yahoo! 日本語形態素解析API
– Web 上で形態素解析を実行できる Web サービス
• MeCab を起動し,解析したい文を標準入力から入力する
入力文
品詞(4階層)
ラーメンを食べた。
ラーメン 名詞,一般,*,*,*,*,ラーメン,ラーメン,ラーメン
を
助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
食べ
動詞,自立,*,*,一段,連用形,食べる,タベ,タベ
た
助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
。
記号,句点,*,*,*,*,。,。,。
EOS
% mecab
• または,解析したい文章を1文ずつ行に区切ってテキストファイ
ルに保存し,そのファイル名を引数として MeCab を実行する
• コマンドオプションなどの詳細は,MeCab ホームページまたは
ヘルプを参照
5
実験課題について
• 2~3人でチームを作って,自然言語データを自作プ
ログラムで分析する実験に取り組む
実験課題の
参加希望アンケート
– チームは各自の興味を基に杉本がランダムに決定
– 各チームはメンバー間で分担して与えられた課題の実験に
取り組む(全員がプログラミングを行う)
– 課題は後述の4つの課題の中からチームごとに1つを杉本
が指定(アンケート結果を考慮)
– プログラム作成だけでなく,完成したプログラムを用いて
自然言語データを分析し,その結果の評価・考察も行う
課題1.かな漢字変換
続き
• 入力:ひらがな列 → 出力:かな漢字列
• 日程(予定)
「きょうはあめ」 → 「今日は雨」?「京は飴」?
• コスト最小化法を用いて,複数の変換候補の中から
最適と思われる(コスト最小の)解を選ぶ
– 第2回 参加アンケート
– 第3回 グループ分け発表
– 第4回 実験の構想発表(プレゼン)
• 目標,アプローチ,使用予定データ,評価方法,分担
– 第8~10回 実験の結果報告(プレゼン)
• 目標,アルゴリズム説明,使用したデータ,実験結果,
考察,分担
– 各コストの値は直感で決めるのではなく,コーパスから導
出するのが望ましい
– 品詞接続コスト,単語コストのどちらか一方でもよい.これ
に加えて読みコスト(例: P(きょう | 今日))を考えてもよい
• 単語辞書は十分な量のエントリをもつものを用意す
ること(最低100語)
– MeCab付属のIPADICを使ってもよい
• 形態素解析ツールなど既存の言語処理ツールは利用不可
解析グラフ(lattice)の例
課題2.単語N-gramデータの作成と利用
• 入力文字列: 「だいがくにいく」
台
が
国
名詞
助詞
名詞
• 単語N-gramデータの作成
– 十分な大きさのコーパスから,単語1-gram(各単
語の出現回数)と単語2-gram(隣接して出現する
2単語の組み合わせの出現回数)を求める
胃
文頭
だ
行く
名詞
助動詞
医学
名詞
大学
名詞
に
動詞
文末
助詞
各頂点 → 単語コスト(,読みコスト)
各辺 → (品詞)接続コスト
• 作成した単語N-gramデータの利用
例1: Markov連鎖による文生成
• 単語N-gram確率にしたがって次々に単語を選択して
いくことにより文を自動生成する
例2: 語順の復元
• 文を構成する単語の順番をランダムに並び替えた後
N-gram確率が最大になるような語順を求める
6
課題3.単語の類似度計算
• 方法2.単語の分布類似度の計算
• 方法1.シソーラスに基づく類似度計算
– 2つの単語(名詞に限定してよい)を入力すると,
Wu & Palmer の類似度 [Wu & Palmer 94] を計算
して出力する
• 基本的アイデアは,シソーラス上で
具体物
近くにある単語ほど類似度が大きく
なるようにする
動物
器具
– 利用するシソーラスの候補
• (日本語)WordNet
– Javaのインタフェースあり
哺乳類
ワープロ
犬
猫
課題4.文章のカテゴリ分類(文書分類)
• 対象とする文書の例
– ニュース記事,ブログ記事,ツイートなど
• 分類先のカテゴリの例
– 政治,経済,スポーツ,科学などの分野
– 肯定的意見,否定的意見(このように2値分類も可)
今日のまとめ
形態素解析
– 単語が使用される文脈の類似度を基に,単語の
類似度を定義する方法
– 入力された2単語 A, B に対して,コーパスで A
と共起する単語の集合SA ,Bと共起する単語の
集合SBをそれぞれ求め,SAとSBの重なり具合を
測ることによりA, Bの類似度とする
– 入力単語を名詞に限定し,共起単語は動詞や形
容詞を考えるとよい(可能ならば格助詞も考慮).
入力単語を形容詞,共起単語として名詞を考え
ることも可能.
文書分類の手法
• 方法1.分類器の作成
– Naïve Bayes,Support Vector Machine など
– 学習用の素性: 文章中の単語(名詞など)
• 方法2.文書間類似度の利用
– 文書間類似度: 出現単語の重なり具合に基づく
– 各カテゴリを代表する文書と分類対象文書の類
似度を求め,類似度が最大となるカテゴリへ分類
次回(4/27)の予定
• 意味解析の基礎(講義)
• はじめに:テキストの構造
• 形態素解析とは?
• 形態素解析アルゴリズム
• チーム分け,課題割り当ての発表
• 課題の補足
• 形態素解析ツールの紹介
実験課題の参加希望アンケート
7