Speech and Laugnuage Processing -係り受け解析-

係り受け解析の章のまとめ

最近、係り受けのことを勉強する機会があって以下の教科書を読んだ。

スタンフォードが公開しているNLPの教科書。係り受け解析はその14章

web.stanford.edu

 

この章のまとめ

  • 係り受け解析では、一般的に文の構造を、用語(形態素?)の二項関係で表される
    • 用語の修飾元、修飾先、関係を同定することを意味することが多い
  • 具体的な解析手法として2種類在る
    • スタックベースの手法
    • グラフベースの手法
  • 係り受け構造は情報抽出、意味解析、質問解答に直接利用できる結果を返す
  • Treebankがあるが、英語以外は人力アノテーションが一般的

手法について興味深かったので説明する

 

係り受け解析の代表的な2つの手法

スタックベースの手法

教科書ではTransition Based algorithmと呼ばれていた。

リンク先のように、スタックを使って解析をしていくことからそう呼ばれている。

この分類器(ある状態で次のアクションを決定するもの)を学習させるには、依存木だけでなく、途中のアクションの履歴も知っている必要が在る。

これをどうやって作るのかと思ったが、依存木さえあれば、じっさいに、スタックを使ってやってみるだけで正解の遷移が得られるというのがすごく面白かった。

SpaCyでも使われているみたいだし、原始的な手法に思えるけど実用的だった。

 

グラフベースの手法

この手法は二段階に分かれる

1段階目:エッジにスコアをつける(もっともらしい辺には高いスコアを)

2段階目:スコアが付いた有向グラフから最大全域木を探す

 

2段階目はクラスカルを最大スコアで行う。閉路の管理はUnionFindで行えば良いかな。

1段階目は、特徴量ベースとニューラルネットワークを使った手法がある。

 

2つの手法の比較

スタックベースの手法

  1. 計算量が線形
  2. 遠くの要素を考慮できる
  3. 実装がグラフベースに比べて簡単
  4. 依存木がクロスている場合への対応が難しい(スワップすればできそう)

グラフベースの手法

  1. 大域的な最適化を見つけることができる
  2. 計算量が多い(N^2くらい?)
  3. 依存木がクロスしていても対応できる

感想

こんな感じで、むちゃくちゃ最新のものを紹介しているというわけではなかったが基礎を学べるという点ではこういう教科書は良いなと思う。