Slide 1

Slide 1 text

自然言語処理基礎の基礎 natsuume 社内勉強会(2019/9/4)

Slide 2

Slide 2 text

今回の目的 自然言語処理何もわからない 用語/雰囲気はなんとなく分かる

Slide 3

Slide 3 text

今回対象とする話 4つの解析ステップ ● 形態素解析 ● 構文解析/係り受け解析 ● 意味解析 ● 文脈解析

Slide 4

Slide 4 text

形態素解析 ● 形態素解析とは? 文を形態素単位に分割する処理

Slide 5

Slide 5 text

そもそも形態素ってなんぞや? 形態素 = 意味を持つ最小の言語単位 形態素 ≠ 単語 but... 形態素 ≒ 単語

Slide 6

Slide 6 text

形態素と単語 「鳥が鳴いた」 単語単位:鳥/が/鳴いた 形態素単位:鳥/が/鳴い/た ※基本的に単語を「語幹」+「接辞」などさらに細かい単位に分割したものが形態素と考えて良い  ただし、日本語における「助詞」「助動詞」等を単語に含めるかは派閥があるっぽいので諸説あり  

Slide 7

Slide 7 text

形態素解析の処理 ● 形態素分割 ● 形態素への品詞付与 ● 形態素の原形の復元 日本語の形態素解析ではまとめて行われるので あまり意識しない

Slide 8

Slide 8 text

形態素解析の手法 ※ツールによって採用している手法が違う(はず) ● コスト最小法 生起/連接コストで重み付けされた 有向グラフの最短経路問題 ビタビアルゴリズム

Slide 9

Slide 9 text

コスト最小法の例 出典: http://chasen.naist.jp/chaki/t/2009-09-30/doc/mecab-cabocha-nlp-seminar-2009.pdf

Slide 10

Slide 10 text

コスト最小法の例 出典: http://chasen.naist.jp/chaki/t/2009-09-30/doc/mecab-cabocha-nlp-seminar-2009.pdf

Slide 11

Slide 11 text

公開されている形態素解析器があるよ! 重要な点 ● 速度 ● 精度 ● 後の処理(係り受け解析等)で何を使うか だいたい「MeCab」「JUMAN」だけ覚えておけばOK 解析器によって結構出力違うので注意

Slide 12

Slide 12 text

主な形態素解析器(MeCab) 処理が他と比べて超速い ChaSenのC++再実装(ChaSenはすでに死んだ) Java版クローンのkuromojiやpythonラッパーの pymecabなどがあり手軽に使える

Slide 13

Slide 13 text

主な形態素解析器(JUMAN/JUMAN++) (MeCabと比べると)速度は遅い 精度はMeCabよりも良い(入力によるので諸説) pythonラッパーのpyknpがある 先の処理でKNPが使える(重要)

Slide 14

Slide 14 text

主な形態素解析器(Sudachi) 分割単位がA/B/Cの3種類から選択可能 「A:選挙/管理/委員/会」「B:選挙/管理/委員会」「C:選挙管理委員会」 Java実装だがSudachiPy, SudachiGoなども プラグインで拡張できる UniDic/NEologdベースで辞書が継続的に更新

Slide 15

Slide 15 text

構文解析 ● 構文解析とは? 形態素解析結果を入力として 構文構造を解析する処理 文節・句単位の構文構造を出力

Slide 16

Slide 16 text

構文解析のアルゴリズム ● CKY法 チョムスキー標準形の文脈自由文法に 限定されたボトムアップ・横型の 構文解析アルゴリズム O(n3)

Slide 17

Slide 17 text

係り受け解析 日本語の構文解析はだいたいこっち 例:美しい水車小屋の娘 美しい 水車小屋の 娘 美しい 水車小屋の 娘

Slide 18

Slide 18 text

係り受け解析の制約 1. 各文節はその後方に必ず1つの係り先を持つ 2. 係り受け関係は交差しない 美しい 水車小屋の 娘 美しい 水車小屋の 娘だ 私は ※話し言葉等では上記2.の制約が厳密に守られているわけではない

Slide 19

Slide 19 text

チャンキングの段階適用による解析 1. 各文節にタグO(係り受け未定)を付与 2. Oの文節が直後の文節に係るか推定 3. 直後の文節に係るならタグをDに置換 4. 文頭/O直後のDが付与された文節を削除 最悪O(n2)だが実際は線形に近い

Slide 20

Slide 20 text

具体例 1. [彼は:O][彼女の:O][温かい:O][真心に:O][感動した。:O] 2. [彼は:O][彼女の:O][温かい:D][真心に:D][感動した。:O] 3. [彼は:O][彼女の:D][真心に:D][感動した。:O] 4. [彼は:O][真心に:D][感動した。:O] 5. [彼は:D][感動した。:O] 6. [感動した。:O] (終了) 彼は 彼女の 温かい 真心に 感動した。

Slide 21

Slide 21 text

公開されている係り受け解析器があるよ! それぞれ出力が結構違うので用途で使い分け だいたい「CaboCha」「KNP」だけ覚えておけばOK ● MeCab -> CaboCha(速い) ● JUMAN/JUMAN++ -> KNP(格解析・照応解析等も含む) ● SudachiPy(Sudachi) -> GiNZA ※ ※自分は使ったことがないので詳細は不明

Slide 22

Slide 22 text

意味解析 ● 意味解析とは? 文の意味に関する処理全般 ※この辺から諸説ある話増えます

Slide 23

Slide 23 text

そもそも意味ってなんだ……?

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

意味解析と文脈解析の区分 諸説ある(というかだいたいお気持ち) ● 意味解析:文内の意味に関する処理の総称 ● 文脈解析:複数文にまたがった処理の総称 正直覚える必要ない

Slide 26

Slide 26 text

主なタスク(こっちのほうが重要) ● 語義曖昧性解消 ● 格解析 ● 述語項構造解析 ● 共参照解析, 照応解析

Slide 27

Slide 27 text

語義曖昧性解消 ある単語の語義(意味)を決定する処理 共起確率・分散表現等を用いることが多い ● 例: bank(銀行/土手), plant(植物/工場) ● 例: おばあさん(高齢の女性/祖母)

Slide 28

Slide 28 text

格解析 単語間の意味的な関係性に関する処理 ● 格フレーム 用言と、それに関係する名詞を用言の各用法 ごとに整理したもの

Slide 29

Slide 29 text

表層格と深層格 ● 表層格:構文木から表層的に決まる ガ格, ヲ格, ニ格, カラ格, ト格, ヨリ格など ● 深層格:格文法に基づく意味的な関係性 動作主格, 経験者格, 道具格, 対象格, 目標格 など

Slide 30

Slide 30 text

述語項構造解析 is 何? 述語と項の関係を解析する処理 格解析と雰囲気は似ているが少し違う(はず) が自分はあまり詳しくないので省略

Slide 31

Slide 31 text

フレーム意味論 だいたい格文法の発展型 ● フレーム: 語の理解のために必要な背景知識 フレーム意味論ベースのコーパス としてFrameNetがある

Slide 32

Slide 32 text

共参照解析/照応解析って何? 指示語や代名詞とその対象の関係性を解析する (厳密には正しくないが雰囲気はこんな感じ)

Slide 33

Slide 33 text

共参照とは? ● 共参照:同一の実体を指す表現の関係 明けの明星 宵の明星 金星 共参照関係

Slide 34

Slide 34 text

照応関係とは? ある表現から別の表現に対する参照関係 本を取り出し、それを読む 先行詞 照応詞 黒ずくめの男がいた。その黒服は座っていた 先行詞 照応詞

Slide 35

Slide 35 text

共参照と照応の違い 似ているが異なる概念 ● 共参照関係: 表層表現 -> 実体 表層表現間の参照の方向は考慮しない ● 照応関係: 照応詞(表現) -> 先行詞(表現) 実体が同一かは考慮しない

Slide 36

Slide 36 text

「照応関係 => 共参照関係」なのか? 以下は照応関係にあるが共参照関係ではない ドーナツをおいしそうに食べるのを見て、 私もそれを購入した

Slide 37

Slide 37 text

照応関係の種類 色々あるが以下は一例 ● 外界照応: 参照対象が言語外に存在する場合 ここに移り住んで一年になる。 ● ゼロ照応: 照応詞が省略された場合 男はパンを食べた。(φ ガ )牛乳も飲んだ。

Slide 38

Slide 38 text

さいごに(ぽえむ) あらゆるタスクがディープラーニングで 解決できるわけではない 問題に適した手法を選択する には基礎知識も重要