自然言語処理 - 芝浦工業大学

今日の内容
自然言語処理
Natural Language Processing
• 応用(2) 機械翻訳
– 機械翻訳の概要
– 規則に基づく手法
• トランスファ方式
第13回
2016/12/21
芝浦工業大学 工学部 情報工学科
• 中間言語方式
– コーパスに基づく手法
• 用例に基づく翻訳
杉本 徹
• 統計的機械翻訳
• ニューラルネットによる翻訳
機械翻訳 (Machine Translation)
機械翻訳の概要
• ある言語(原言語,source language)で書かれた
文や文章をコンピュータを用いて別の言語
(目標言語,target language)に翻訳すること
原言語の文・文章
例:“She took a cup of coffee.”
辞書
コーパス
規則
シソーラス
機械翻訳システム
目標言語の文・文章
例:「彼女は一杯のコーヒーを飲んだ。」
機械翻訳の歴史
• 1940~60年代 機械翻訳の誕生
–
–
–
–
–
1947
1954
1959
1963
1966
Weaver のアイデア 「翻訳をするコンピュータ」
露英翻訳の実験開始(IBMなど)
英日翻訳専用機 やまと(日本,電気試験所)
露英翻訳システム SYSTRAN
ALPAC 報告書(機械翻訳は人手に及ばない,
基礎研究を重視すべき)
機械翻訳の歴史(続き)
• 1990~2010年代 統計的機械翻訳の発展
–
–
–
–
–
1991
2003
2007
2014
2016
統計的機械翻訳の提案(IBM)
句に基づく統計的機械翻訳
Google が統計的機械翻訳を採用
ニューラルネットによる翻訳の提案(Google)
Google がニューラルネットによる翻訳を採用
• 1980年代 日本での技術開発
– 1982~ μプロジェクト(科学技術文献抄録の日英翻訳)
– 1984 用例に基づく翻訳の提案(長尾真)
– 電子化辞書の構築(IPAL 1981~,EDR 1986~)
1
機械翻訳の方式
• 規則に基づく手法(言語処理のための知識を人手で
記述し,翻訳プログラムに組み込む)
– 単語変換方式
単純な手法: 単語変換方式
• 処理手順
1. 原言語の文を形態素解析する
– トランスファ方式
2. 単語単位の対訳辞書を参照して,文中の各単語を目標
言語の単語に変換する
– 中間言語方式
3. 得られた単語を並べ替えて目標言語の文を生成する
• コーパスに基づく手法(大規模なコーパスを用意し,
統計処理または類推により翻訳結果を求める)
– 用例に基づく翻訳
– 統計的機械翻訳
– ニューラルネットによる翻訳
単語変換方式の問題点
• 表層的な解析しか行わず構文構造や意味情報を
考慮しないため,十分な翻訳精度が得られない
• 単語の並べ替え規則を人手で記述するのは困難
• 例: “John went to school.”
対訳辞書
英語
「ジョン 行った に 学校」
「ジョン(は)学校に行った。」
日本語
school
学校
went
行った
・・・
・・・
機械翻訳の応用,関連技術
• 音声翻訳
– 音声認識 + 機械翻訳(主に統計的手法を使用)
– 例: 携帯端末で動作する会話支援アプリ video
• 言語横断情報検索
• しかし,単純な手法であるために,後に統計的
機械翻訳の基礎として用いられるようになった
– 複数の言語で書かれた文書を横断的に検索
• 言語グリッド(NICTなど)
– インターネット上の多言語サービス基盤
再掲: 機械翻訳の方式
• 規則に基づく手法(言語処理のための知識を人手で
記述し,翻訳プログラムに組み込む)
規則に基づく翻訳
– 単語変換方式
– トランスファ方式
– 中間言語方式
• コーパスに基づく手法(大規模なコーパスを用意し,
統計処理または類推により翻訳結果を求める)
– 用例に基づく翻訳
– 統計的機械翻訳
– ニューラルネットによる翻訳
2
規則に基づく翻訳(1)単語変換方式
規則に基づく翻訳(2)構文トランスファ
構文構造変換
構文構造
単語の並べ替え
形態素列
形態素列
出力文(目標言語)
入力文(原言語)
規則に基づく翻訳(3)意味トランスファ
構文構造
形態素列
形態素列
出力文(目標言語)
入力文(原言語)
規則に基づく翻訳(4)中間言語方式
中間言語
意味構造変換
意味構造
意味構造
意味構造
意味構造
(格構造)
(格構造)
(格構造)
(格構造)
構文構造
形態素列
入力文(原言語)
構文構造
形態素列
出力文(目標言語)
トランスファ(Transfer)方式
• 処理手順
1. 原言語の文を形態素・構文(・意味)解析する
2. 人手で作成した変換規則を用いて,原言語の構文(また
は意味)構造を目標言語の構文(意味)構造に変換する
3. 得られた構文(意味)構造から目標言語の文を生成する
構文構造
構文構造
形態素列
形態素列
出力文(目標言語)
入力文(原言語)
トランスファ方式による翻訳の例
• 変換規則の例(英→日)
S
S
PP
NP P VP
X’ は Y’
NP VP
X Y
VP
VP PP
Y Z
PP VP
Z’ Y’
• 翻訳例
S
S
• 構文トランスファは構文の似ている言語間の翻訳に適してい
る.日本語と英語のように構文が大きく異なる言語間の翻訳
では,格構造など意味的要素も考慮した方が扱いやすい
VP
VP
PP
NP VP P NP
John went to school.
VP
PP
PP VP
NP P NP P V A
ジョンは学校に行った。
3
中間言語方式(Pivot方式)
• 処理手順
• 中間言語方式の利点
1. 原言語の文を解析し,中間言語(特定の言語に依存
せず,あらゆる言語の意味を表現できる言語)の表現
に変換する
2. 中間言語の表現から目標言語の文を生成する
• 例:
解析
生成
続き
原言語 “John went to school.”
中間表現(例)went(john, x)∧school(x)
目標言語 「ジョンは学校に行った。」
再掲: 機械翻訳の方式
• 規則に基づく手法(言語処理のための知識を人手で
記述し,翻訳プログラムに組み込む)
– 多言語の相互翻訳を目指すとき,必要な変換モジュー
ルの数がトランスファ方式に比べて少なくて済む
• 中間言語方式の欠点
– 深い解析や曖昧性解消が必要で,実装が大変
– 十分な表現力をもった中間言語の設計は困難
• 中間言語方式を採用した翻訳プロジェクトの例
– EUROTRA(EC,欧州9ヶ国語の相互翻訳を目指した)
– UNL(Universal Network Language,国連大学)
再掲: 機械翻訳の方式
• 規則に基づく手法
(言語処理のための知識を人手で
人手で複雑な規則を作る代わりに,
記述し,翻訳プログラムに組み込む)
大規模なコーパスから比較的単純な規則を大量に
–自動生成する,または規則以外の方法で翻訳する.
単語変換方式
– 単語変換方式
–様々な重みの値をコーパスから学習し,それを用い
トランスファ方式
て最も適切と思われる解を選び出す.
– 中間言語方式
– トランスファ方式
– 中間言語方式
• コーパスに基づく手法(大規模なコーパスを用意し,
翻訳精度に限界が見えてきた.
統計処理または類推により翻訳結果を求める)
例外が多く,人手で規則を作るのはコストが
–原因:
用例に基づく翻訳
かかる上に,網羅的に作成するのは困難.
– 統計的機械翻訳
規則間の相互関係が複雑で,制御が難しい.
– ニューラルネットによる翻訳
• コーパスに基づく手法(大規模なコーパスを用意し,
統計処理または類推により翻訳結果を求める)
– 用例に基づく翻訳
– 統計的機械翻訳
– ニューラルネットによる翻訳
対訳コーパス (Parallel Corpus)
• 複数の言語で文単位の対応がつけられたコーパス
– 例: 日英中基本文データ(京大,5304文)
用例に基づく翻訳
• 対訳データのイメージ
日本語
英語
これはペンです。
This is a pen.
これは何ですか?
What is this?
ジョンは音楽が好きです。
John likes music.
・ ・ ・
・ ・ ・
4
用例に基づく翻訳
続き
(Example-Based Translation)
• 用意した対訳コーパスの中から入力文に最も類似
した文を選び,その文に対応する目標言語の文を
修正した上で翻訳結果として出力する
• 一種の類推(analogy)と見なせる
原言語の文 S’
用例の検索
対訳コーパス
S→T
類似度計算
シソーラス
用例の修正
対訳辞書
S→T
S’ → T’
• 参考: 人工知能における事例に基づく推論
(Case-Based Reasoning)
目標言語の文 T’
翻訳例
翻訳例(続き)
• 入力文 “She took a cup of coffee.”
• 類似度計算
– 用例検索で見つかった文と入力文を比較し,文間
の類似度を計算する.この際,単語間の類似度を
シソーラスを参照して求める.
• 用例の検索
– 対訳コーパスから入力文に類似した文を探す
英語
She took a cup of milk.
She took a picture of flowers. 彼女は花の写真を撮った.
She took a short walk.
彼女は少し散歩した.
・ ・ ・
entity
– シソーラスの例: WordNet
日本語
彼女は一杯のミルクを飲んだ.
physical entity
abstract entity
入力文中の “coffee” に
最も意味が近いのは
matter
physical object
“milk”
・ ・ ・
beverage
coffee
milk
picture
walk
翻訳例(続き)
• 用例の修正
– 単語単位の対訳辞書を参照して,選んだ用例を入力文
に合うように修正する
– 入力文
“She took a cup of coffee.”
統計的機械翻訳
選んだ用例
“She took a cup of milk.”
↓
「彼女は一杯のミルクを飲んだ。」
• 出力文
「彼女は一杯のコーヒーを飲んだ。」
対訳辞書
英語
日本語
coffee
コーヒー
milk
ミルク
5
統計的機械翻訳
(Statistical Machine Translation)
• 大規模な対訳コーパスを統計的に分析すること
で,原言語の文 S と目標言語の文 T が翻訳関係
にある確率を推測する確率モデルを作る
統計的機械翻訳
問題: 原言語の文 S に対する事後確率 P(T|S)
が最大となる目標言語の文 T を見つける
• Bayesの法則により
P(T | S ) 
• 雑音のある通信路モデル(Noisy Channel Model)
目標言語の文 T
「ジョンは学校
に行った。」
原言語の文 S
通信路
“John went
to school.”
なので,P(S|T)×P(T) が最大となる T を見つけ ればよい
– P(S|T) 目標言語の文 T に対応する原言語の文が S である
確率(翻訳モデルの確率)
– P(T)
雑音
続き
P(S | T )  P(T )
P(S )
目標言語の文 T が生起する確率(言語モデルの確率)
句に基づく統計的機械翻訳
原言語の文 S
翻訳モデル
P(S|T) ・単語追加確率
・単語削除確率
・単語翻訳確率
・並べ替え確率
探索
対訳
コーパス
文を句(phrase)の列と見なし,句を単位として
翻訳や並び替えの確率モデルを構築する
P(T|S) ∝ P(S|T)・P(T)
P(T)
言語モデル
(n-gram)
• 単語単位の処理では,慣用句など言語によって
異なる語の並びのパターンをうまく扱えない
目標言語
コーパス
• 翻訳例: “She took a cup of coffee.”
「彼女 飲んだ 一杯の コーヒー」
翻訳結果 T = argmax P(T|S)
「彼女は 一杯の コーヒーを 飲んだ。」
ニューラルネット(Neural Network)
• 各ノード(unitとも呼ばれる)は実数値を記憶しており,この値が
リンクを介して次の層(layer)の各ノードに送られる
– s = sigmoid(V x)
– y = softmax(U s)
ニューラルネットによる翻訳
(x, s, y はベクトル,V, U は行列)
• 出力を教師信号と比較し,その誤差が小さくなるようにリンクの
重みを更新する(back propagation)ことを繰り返して学習する
Input layer
Hidden layer
v11
v12
x1
s1
Output layer
u11
u12
教師信号
y1
z1
y2
z2
s2
v21
x2
s3
x3
v33
v34
y3
s4
u43
z3
比較
6
再帰的ニューラルネット
ニューラルネットによる翻訳
(Recurrent Neural Network, RNN)
• 可変長の系列データを入出力できる
• 長い系列の学習が困難(勾配消失問題) ⇒ 記憶セル内蔵の
ユニットを使う(Long Short-Term Memory, LSTM) [Hochreiter 1997]
x(t)
0
0
1
0
・
・
・
太郎
s(t-1)
y(t)
s(t)
V
• 系列変換(seq2seq): Encoder, Decoderという2つの RNN
(LSTM) を組み合わせる [Sutskever 2014]
⇒ End-to-end 学習(入力から出力を直接生成する学習)
• Attention [Bahdanau 2015]: 入力のどの部分が出力のどの
部分と対応するかを学習する
Taro ate curry </s>
RNNの時間方向への展開図
y(1)
y(2)
y(3)
…
U
U
U
U
W s(2) W s(3) W
V
V
V
W
Encoder(入力文の読み取り)
Decoder
s(1)
記憶
x(1)
x(2)
x(3)
…
Google Neural Machine
Translation System [Wu 2016]
(出力文の生成)
太郎
は
カレー を 食べた </s>
GNMT のモデルアーキテクチャ
[Wu 2016]
• 系列変換とAttentionに基づく翻訳モデルに下記のよう
な改良を行い,処理時間を大きく増やさず翻訳精度を
大幅に向上できることを示した
1. 精度向上の工夫 ⇒ Encoder, Decoder の深層化(各8層),
入力層の双方向化, BLEUスコアを最適化する強化学習,
翻訳漏れへのペナルティ導入,アンサンブル
2. 未知語への対応 ⇒ 単語を細分化した wordpiece の利用
3. 速度向上の工夫 ⇒ データ並列化およびモデル並列化,出
力単語列のビーム探索,関数計算の整数演算化
4. 学習の効率化 ⇒ Residual Connection の利用
• 今年11月からGoogle翻訳 https://translate.google.com/ に導入
GNMT の評価結果
• 使用コーパス: WMT dataset(数百~数千万文対),および
Google内部のdataset(さらに多い)
• モデルの学習: NVIDIA K80 GPU 96枚を使用して6日間
• 評価方法: BLEUスコア,および人間の主観評価(0~6点)
• 結果の一部
今日のまとめ
• 応用(2) 機械翻訳
– 機械翻訳の概要
– 規則に基づく手法
• トランスファ方式
• 中間言語方式
– コーパスに基づく手法
出典:
https://research.google
blog.com/2016/09/aneural-network-formachine.html
• 用例に基づく翻訳
• 統計的機械翻訳
• ニューラルネットによる翻訳
7
今後の予定
1月11日(水) 第14回 応用(3)対話システム
1月18日(水) 第15回 期末試験と解説
• 期末試験の内容
1) サンプルデータに対する処理過程の具体的説明や
結果の計算(形態素解析のlattice作成,コスト最小解
の探索,係り受け構造の分析,構文木の作成,など)
2) 技術分野の概要や用語の説明(記述式)
※ 授業ホームページ掲載 「授業のポイント」 参照のこと
8