Stanford大学の自然言語処理講義(1-6) - Sentence Segmentation(文への分割)


久保です。

前回から1ヶ月以上空いてしまいました。
自然言語処理のStanford大学の講座シリーズの続きです。

今回はSentence Segmentation、文章中からどのようにして文を分割して取り出すか、という話です。
講義の映像は下記から見られます。
Sentence Segmentation (5:31)

Sentence Segmentation

ここではどのように文章を文(Sentence)に分けるか、という問題を取り上げます。

文末を示す!?は曖昧ではなく、基本的に文末に置かれます。
一方.(ピリオド)は曖昧です。
ピリオドは文章の終わりにも現れますが、それ以外にもDr.などの略称、0.45などの小数点、などに現れることがあります。

ではどうやって文末の.(ピリオド)を見分けるかというと、これに対応する2値分類器を作ります。

この分類器は、ピリオドを含む文章を与えると、そのピリオドが文末を意味するのか、そうでないのか、の2値に分類します。
分類器の作り方には下記の通りいくつか考えられますが、本講義では決定木による機械学習が取り挙げられます。

  • 自分でルールを記述する
  • 正規表現を使う
  • 機械学習を使う

Determining if a word is end-of-sentence: a Decision Tree

決定木の説明はこちらに譲るとして、
ここでは4つのノードからなる決定木を作っています。

  1. 後段に多くの空行があるか?
  2. 文の最期は「?」「!」「:?」のいずれかで終わっているか?
  3. 文の最期はピリオドで終わっているか?
  4. etcまたは別の略称(Dr.など)か?

決定木

Sentence Segmentation (5:31)より決定木の例を引用

質問にYES/NOで答えていくと、文末かどうかが判定できるようになっています。

More sophisticated decision tree features

今度は先ほどの4つの質問よりもより洗練された決定木の素性(future)を考えてみます。

  • ピリオドと一緒に出てくる単語のCase(大文字/小文字)はUpper(すべて大文字), Lower(すべて小文字)、Cap(先頭が大文字), Number(数字)のどれか。
  • ピリオドの後に出てくる単語のCase(大文字/小文字)はUpper(すべて大文字), Lower(すべて小文字)、Cap(先頭が大文字), Number(数字)のどれか。
  • ピリオドと一緒に出てくる単語の長さは?
  • コーパスにおいて、ピリオドと一緒に出てくる単語が文末に現れる確率は?
  • コーパスにおいて、ピリオドの後に出てくる単語が文頭に現れる確率は?

これらを上手く素性として使えれば、よりよい分類ができるということですね。

Implementing Decision Trees

決定木の各ノードはif-then-elseによる判定に過ぎませんが、手でこれを作り上げるのは容易ではありません。
手で作ることが出来るのは、よほど簡単な素性やドメインに限られますし、特に数値の素性はしきい値を決めるのが大変難しいです。
そのような理由から、多くの場合には学習用コーパスを使った機械学習により、決定木は作られます。

Decision Trees and other classifiers

決定木以外の分類器で同じ素性を使って分類することもできます。
例えばロジスティック回帰、SVM、ニューラルネットなどです。

感想

今回は短かったですね。
どのようにして、分類に有効でかつ実現(学習)可能な素性を選ぶか、ということが重要なポイントです。

ちなみに機械学習を行うためのツール群は数多くあります。
簡単に試すのであれば、以下のツールがオススメです。

また当ブログで馬場がStanford大学の機械学習の講義を解説しています。
こちらも是非参照ください。

さて、次回は次は『Defining Minimum Edit Distance』、最短編集距離の定義についてです。
Defining Minimum Edit Distance (7:04)


This entry was posted in 自然言語処理(NLP) and tagged , , . Bookmark the permalink.