Download presentation
Presentation is loading. Please wait.
1
Graham Neubig 奈良先端科学技術大学院大学(NAIST) 2013年1月17日
機械翻訳 Graham Neubig 奈良先端科学技術大学院大学(NAIST) 2013年1月17日
2
機械翻訳 原言語から目的言語へと自動的に翻訳 原言語 目的言語 太郎が花子を訪問した。 近年に著しい発展と実用化 Taro visited
Hanako. 近年に著しい発展と実用化
3
機械翻訳の仕組み Today I will give a lecture on machine translation .
4
機械翻訳の仕組み Today I will give a lecture on machine translation .
文を翻訳可能なパターンに区切り、並べ替え Today I will give a lecture on machine translation . Today 今日は、 I will give を行います a lecture on の講義 machine translation 機械翻訳 . 。 Today 今日は、 machine translation 機械翻訳 a lecture on の講義 I will give を行います . 。 今日は、機械翻訳の講義を行います。
5
問題! 各文に対して膨大な可能性 花子 が 太郎 に 会った Hanako met Taro Hanako met to Taro Hanako ran in to Taro Taro met Hanako The Hanako met the Taro どれが訳としてふさわしいか? どの単語を選択するか→語彙選択の問題 どの並びが相応しいか→並べ替えの問題
6
(フレーズベース) 統計的機械翻訳 翻訳モデル(TM) 並べ替えモデル(RM) 言語モデル(LM) P( )=high P( )=high
P(“今日”|“today”) = high P(“今日 は 、”|“today”) = medium P(“昨日”|“today”) = low 並べ替えモデル(RM) 鶏 が 食べる 鶏 を 食べる 鶏 が 食べる P( )=high P( )=high P( )=low chicken eats eats chicken eats chicken 言語モデル(LM) P( “Taro met Hanako” )=high P( “the Taro met the Hanako” )=high
7
He gave Hanako a present. ...
機械翻訳システムの構築 各モデルを対訳文から学習 対訳文 モデル 翻訳モデル 太郎が花子を訪問した。 Taro visited Hanako. 花子にプレセントを渡した。 He gave Hanako a present. ... 並べ替えモデル 言語モデル
8
パターン学習の例 日本語メニューのあるイタリア料理やに行ったら 「formaggi」の日本語訳は?「pesce」?「e」? チーズムース
Mousse di formaggi タリアテッレ 4種のチーズソース Tagliatelle al 4 formaggi 本日の鮮魚 Pesce del giorno 鮮魚のソテー お米とグリーンピース添え Filetto di pesce su “Risi e Bisi” ドルチェとチーズ Dolce e Formaggi
9
パターン学習の例 日本語メニューのあるイタリア料理やに行ったら 「formaggi」の日本語訳は?「pesce」?「e」? チーズムース
Mousse di formaggi タリアテッレ 4種のチーズソース Tagliatelle al 4 formaggi 本日の鮮魚 Pesce del giorno 鮮魚のソテー お米とグリーンピース添え Filetto di pesce su “Risi e Bisi” ドルチェとチーズ Dolce e Formaggi
10
言うは易く 行うは難し (easier said than done)
機械翻訳の学習過程 フロー図→
11
セミナーの話 言語モデル かな漢字変換 フレーズベース統計的機械翻訳 フレーズベースモデルの構築 翻訳文の評価 重み調整(チューニング)
構文解析 階層的フレーズベース翻訳 統語情報を用いた翻訳
12
演習の事前準備 (1) Linux (Ubuntu/Cent OSなど) 端末から以下のコマンドを実行
必要なパッケージをapt-getでインストール Mac Xcodeをインストール $ sudo apt-get install automake autoconf g++ libtool libboost-all-dev perl python $ sudo port install automake autoconf libtool boost
13
演習の事前準備 (2) Windows http://www.cygwin.com/ からCygwinをインストール
インストールする際、以下のパッケージを選択: Devel -> automake autoconf gcc-g++ libtool make Libs -> libboost-devel Perl -> perl Python -> python
14
演習の事前準備(3) 全OS JavaのSDKをダウンロードしてインストール
15
演習の事前準備 (4) 演習に必要なソフト・データは配布資料の alagin/downloadに存在
プログラム:Moses, GIZA++, pialign, IRSTLM, KyTea, Stanford Parser, Eda, AlignmentTool, lader データ:京都フリー翻訳タスクで用いられるWikipedia 京都関連記事 これを全てインストールすることは手間がかかる ホームディレクトリに解凍し、インストールスクリプト を実行: script/00-setup.sh
16
言語モデル
17
言語モデル? 日英翻訳を行いたい時に、どれが正解? 太郎は花子を訪問した W1 = Taro visited Hanako
W2 = the Taro visited the Hanako 太郎は花子を訪問した W3 = fat visit ro flower child W4 = 太郎 は 花子 を 訪問 した
18
言語モデル? 日英翻訳を行いたい時に、どれが正解? 言語モデルは「もっともらしい」文を選んでくれる 太郎は花子を訪問した
W1 = Taro visited Hanako W2 = the Taro visited the Hanako 太郎は花子を訪問した W3 = fat visit ro flower child W4 = 太郎 は 花子 を 訪問 した 言語モデルは「もっともらしい」文を選んでくれる
19
確率的言語モデル 言語モデルが各文に確率を与える P(W1) = 4.021 * 10-3 P(W2) = 8.932 * 10-4
W1 = taro visited hanako P(W2) = * 10-4 W2 = the taro visited the hanako P(W3) = * 10-7 W3 = fat visit ro flower child W4 = 太郎 は 花子 を 訪問 した P(W4) = * 10-23 P(W1) > P(W2) > P(W3) > P(W4)が望ましい (日本語の場合はP(W4) > P(W1), P(W2), P(W3)?)
20
文の確率計算 文の確率が欲しい 変数で以下のように表す W = taro visited hanako
P(|W| = 3, w1=”taro”, w2=”visited”, w3=”hanako”)
21
文の確率計算 文の確率が欲しい 変数で以下のように表す(連鎖の法則を用いて): W = taro visited hanako
P(|W| = 3, w1=”taro”, w2=”visited”, w3=”hanako”) = P(w1=“taro” | w0 = “<s>”) * P(w2=”visited” | w0 = “<s>”, w1=“taro”) * P(w3=”hanako” | w0 = “<s>”, w1=“taro”, w2=”visited”) * P(w4=”</s>” | w0 = “<s>”, w1=“taro”, w2=”visited”, w3=”hanako”) 注: 文頭「<s>」と文末「</s>」記号 注: P(w0 = <s>) = 1
22
確率の漸次的な計算 前のスライドの積を以下のように一般化 以下の条件付き確率の決め方は?
𝑃 𝑊 = 𝑖=1 ∣𝑊∣+1 𝑃 𝑤 𝑖 ∣ 𝑤 0 … 𝑤 𝑖−1 𝑃 𝑤 𝑖 ∣ 𝑤 0 … 𝑤 𝑖−1
23
最尤推定による確率計算 i live in osaka . </s>
コーパスの単語列を数え上げて割ることで計算 𝑃 𝑤 𝑖 ∣ 𝑤 1 … 𝑤 𝑖−1 = 𝑐 𝑤 1 … 𝑤 𝑖 𝑐 𝑤 1 … 𝑤 𝑖−1 i live in osaka . </s> i am a graduate student . </s> my school is in nara . </s> P(live | <s> i) = c(<s> i live)/c(<s> i) = 1 / 2 = 0.5 P(am | <s> i) = c(<s> i am)/c(<s> i) = 1 / 2 = 0.5
24
最尤推定の問題 i live in osaka . </s>
頻度の低い現象に弱い: i live in osaka . </s> i am a graduate student . </s> my school is in nara . </s> 学習: <s> i live in nara . </s> 確率計算: P(nara|<s> i live in) = 0/1 = 0 P(W=<s> i live in nara . </s>) = 0
25
1-gramモデル P(nara) = 1/20 = 0.05 i live in osaka . </s>
履歴を用いないことで低頻度の現象を減らす 𝑃 𝑤 𝑖 ∣ 𝑤 1 … 𝑤 𝑖−1 ≈𝑃 𝑤 𝑖 = 𝑐 𝑤 𝑖 𝑤 𝑐 𝑤 P(nara) = 1/20 = 0.05 i live in osaka . </s> i am a graduate student . </s> my school is in nara . </s> P(i) = 2/20 = 0.1 P(</s>) = 3/20 = 0.15 P(W=i live in nara . </s>) = 0.1 * 0.05 * 0.1 * 0.05 * 0.15 * 0.15 = * 10-7
26
未知語の対応 未知語が含まれる場合は1-gramでさえも問題あり 多くの場合(例:音声認識)、未知語が無視される 他の解決法
少しの確率を未知語に割り当てる (λunk = 1-λ1) 未知語を含む語彙数をNとし、以下の式で確率計算 i live in osaka . </s> i am a graduate student . </s> my school is in nara . </s> P(nara) = 1/20 = 0.05 P(i) = 2/20 = 0.1 P(kyoto) = 0/20 = 0 𝑃 𝑤 𝑖 = λ 1 𝑃 𝑀𝐿 𝑤 𝑖 + 1− λ 𝑁
27
未知語の例 未知語を含む語彙数: N=106 未知語確率: λunk=0.05 (λ1 = 0.95)
𝑃 𝑤 𝑖 = λ 1 𝑃 𝑀𝐿 𝑤 𝑖 + 1− λ 𝑁 P(nara) = 0.95* *(1/106) = P(i) = 0.95* *(1/106) = P(kyoto) = 0.95* *(1/106) =
28
= 1-gramモデルは語順を考慮しない 以下の確率は同等 Puni(w=taro visited hanako) =
P(w=taro) * P(w=visited) * P(w=hanako) * P(w=</s>) = Puni(w=hanako visited taro) = P(w=taro) * P(w=visited) * P(w=hanako) * P(w=</s>)
29
1-gramモデルは単語の 関係性を考慮しない
文法的な文:(名詞と活用が一致) 文法的でない文:(名詞と活用が矛盾) Puni(w=i am) = P(w=i) * P(w=am) * P(w=</s>) Puni(w=we are) = P(w=we) * P(w=are) * P(w=</s>) Puni(w=we am) = P(w=we) * P(w=am) * P(w=</s>) Puni(w=i are) = P(w=i) * P(w=are) * P(w=</s>) しかし、確率は上記の文と同等
30
文脈を考慮することで解決! 1-gramモデルは文脈を考慮しない 2-gramは1単語の文脈を考慮 3-gramは2単語の文脈を考慮
𝑃 𝑤 𝑖 ∣ 𝑤 0 … 𝑤 𝑖−1 ≈𝑃 𝑤 𝑖 𝑃 𝑤 𝑖 ∣ 𝑤 0 … 𝑤 𝑖−1 ≈𝑃 𝑤 𝑖 ∣ 𝑤 𝑖−1 𝑃 𝑤 𝑖 ∣ 𝑤 0 … 𝑤 𝑖−1 ≈𝑃 𝑤 𝑖 ∣ 𝑤 𝑖−2 𝑤 𝑖−1
31
n-gram確率の最尤推定 i live in osaka . </s>
n単語とn-1単語からなる文字列の頻度を利用 𝑃 𝑤 𝑖 ∣ 𝑤 𝑖−𝑛+1 … 𝑤 𝑖−1 = 𝑐 𝑤 𝑖−𝑛+1 … 𝑤 𝑖 𝑐 𝑤 𝑖−𝑛+1 … 𝑤 𝑖−1 i live in osaka . </s> i am a graduate student . </s> my school is in nara . </s> P(osaka | in) = c(in osaka)/c(in) = 1 / 2 = 0.5 n=2 → P(nara | in) = c(in nara)/c(in) = 1 / 2 = 0.5
32
低頻度n-gramの問題 P(osaka | in) = c(in osaka)/c(in) = 1 / 2 = 0.5
n-gram頻度が0→n-gram確率も0 1-gramモデルと同じく、線形補間を用いる P(osaka | in) = c(in osaka)/c(in) = 1 / 2 = 0.5 P(nara | in) = c(in nara)/c(in) = 1 / 2 = 0.5 P(school | in) = c(in school)/c(in) = 0 / 2 = 0!! 2-gram: 𝑃 𝑤 𝑖 ∣ 𝑤 𝑖−1 = λ 2 𝑃 𝑀𝐿 𝑤 𝑖 ∣ 𝑤 𝑖−1 + 1− λ 2 𝑃 𝑤 𝑖 𝑃 𝑤 𝑖 = λ 1 𝑃 𝑀𝐿 𝑤 𝑖 + 1− λ 𝑁 1-gram:
33
補間係数の選択法:グリッド探索 … … 問題: λ2とλ1の様々な値を試し、尤度が最も高くなるように選択 選択肢が多すぎる
λ 2 =0.95, λ 1 =0.95 λ 2 =0.95, λ 1 =0.90 λ 2 =0.95, λ 1 =0.85 問題: … 選択肢が多すぎる → 選択に時間がかかる! 全てのn-gramに対して同じλ → 尤度が最適とは限らない! λ 2 =0.95, λ 1 =0.05 λ 2 =0.90, λ 1 =0.95 λ 2 =0.90, λ 1 =0.90 … λ 2 =0.05, λ 1 =0.10 λ 2 =0.05, λ 1 =0.05
34
文脈を考慮した補間係数の選択 補間係数の選択にも文脈を考慮: 頻度の高い単語:Tokyo c(Tokyo city) = 40
c(Tokyo is) = 35 c(Tokyo was) = 24 c(Tokyo tower) = 15 c(Tokyo port) = 10 … ほとんどの2-gramが既観測 → 大きなλが最適 頻度の低い単語:Tottori c(Tottori is) = 2 c(Tottori city) = 1 c(Tottori was) = 0 未観測の2-gramが多い → 小さなλが最適 補間係数の選択にも文脈を考慮: 𝑃 𝑤 𝑖 ∣ 𝑤 𝑖−1 = λ 𝑤 𝑖−1 𝑃 𝑀𝐿 𝑤 𝑖 ∣ 𝑤 𝑖−1 + 1− λ 𝑤 𝑖−1 𝑃 𝑤 𝑖
35
Witten-Bell平滑化 を選ぶ方法の1つ 例えば、 = wi-1の後に続く単語の異なり数
を選ぶ方法の1つ 例えば、 λ 𝑤 𝑖−1 λ 𝑤 𝑖−1 =1− 𝑢 𝑤 𝑖−1 𝑢 𝑤 𝑖−1 +𝑐 𝑤 𝑖−1 𝑢 𝑤 𝑖−1 = wi-1の後に続く単語の異なり数 c(Tottori is) = 2 c(Tottori city) = 1 c(Tottori) = u(Tottori) = 2 c(Tokyo city) = 40 c(Tokyo is) = c(Tokyo) = u(Tokyo) = 30 λ 𝑇𝑜𝑡𝑡𝑜𝑟𝑖 =1− =0.6 λ 𝑇𝑜𝑘𝑦𝑜 =1− =0.9
36
言語モデルの評価の実験設定 学習と評価のための別のデータを用意 学習データ 評価データ モデル 学習 モデル モデル 評価 モデル評価の尺度
i live in osaka i am a graduate student my school is in nara ... モデル 学習 モデル モデル 評価 評価データ モデル評価の尺度 i live in nara i am a student i have lots of homework … 尤度 対数尤度 エントロピー パープレキシティ
37
尤度 尤度はモデルMが与えられた時の観測されたデータ (評 価データWtest)の確率 x x = 1.89*10-73
𝑃 𝑊 𝑡𝑒𝑠𝑡 ∣𝑀 = 𝐰∈ 𝑊 𝑡𝑒𝑠𝑡 𝑃 𝐰∣𝑀 i live in nara i am a student my classes are hard P(w=”i live in nara”|M) = *10-21 x P(w=”i am a student”|M) = *10-19 x P(w=”my classes are hard”|M) = 2.15*10-34 = 1.89*10-73
38
対数尤度 尤度の値が非常に小さく、桁あふれがしばしば起こる 尤度を対数に変更することで問題解決 + + = -72.60
log𝑃 𝑊 𝑡𝑒𝑠𝑡 ∣𝑀 = 𝐰∈ 𝑊 𝑡𝑒𝑠𝑡 log 𝑃 𝐰∣𝑀 i live in nara i am a student my classes are hard log P(w=”i live in nara”|M) = + log P(w=”i am a student”|M) = + log P(w=”my classes are hard”|M) = = -72.60
39
( ) エントロピー エントロピーHは負の底2の対数尤度を単語数で割った 値 + + /
𝐻 𝑊 𝑡𝑒𝑠𝑡 ∣𝑀 = 1 | 𝑊 𝑡𝑒𝑠𝑡 | 𝐰∈ 𝑊 𝑡𝑒𝑠𝑡 − log 2 𝑃 𝐰∣𝑀 ( ) i live in nara i am a student my classes are hard log2 P(w=”i live in nara”|M)= + log2 P(w=”i am a student”|M)= + log2 P(w=”my classes are hard”|M)= / 単語数: 12 = 20.13 * </s>を単語として数えることもあるが、ここでは入れていない
40
エントロピーと情報圧縮 エントロピーHは与えられたデータを圧縮するのに必要 なビット数でもある(シャノンの情報理論により)
𝐻= 1 | 𝑊 𝑡𝑒𝑠𝑡 | 𝐰∈ 𝑊 𝑤𝑡𝑒𝑠𝑡 − log 2 𝑃 𝐰∣𝑀 a bird a cat a dog a </s> a → 1 bird → 000 cat → 001 dog → 010 </s> → 011 P(w= “a”) = log2 0.5 = 1 P(w= “bird”) = log = 3 Encoding P(w= “cat”) = log = 3 P(w= “dog”) = log = 3 P(w= “</s>”) = log = 3
41
パープレキシティ 2のエントロピー乗 一様分布の場合は、選択肢の数に当たる 𝑃𝑃𝐿= 2 𝐻
𝐻=− log 𝑃𝑃𝐿= 2 𝐻 = 2 − log = 2 log 2 5 =5 𝑉=5
42
カバレージ 評価データに現れた単語(n-gram)の中で、モデルに含 まれている割合
a bird a cat a dog a </s> “dog”は未知語 カバレージ: 7/8 * * 文末記号を除いた場合は → 6/7
43
研究 n-gramに勝てるものはあるのか? [Goodman 01] 計算がシンプルで高速 探索アルゴリズムと相性が良い シンプルな割に強力
その他の手法 統語情報を利用した言語モデル [Charniak 03] ニューラルネット言語モデル [Bengio 06] モデルM [Chen 09] などなど…
44
(機械翻訳で広く使われる) 言語モデルツールキット
SRILM: 最も広く使われる言語モデル学習・格納ツールキット オープンソース、研究利用は無料、商用利用は有料 IRSTLM: 他の言語モデル学習ツールキット オープンソース、研究、商用はともに無料 KenLM: 学習はできないが、効率の良い言語モデル格納と高速な アクセスが売り
45
IRSTLMで言語モデル学習(1) 配布資料のdownload/irstlm-5.80.01.tgz
事前準備でusr/binにインストール済み 言語モデル構築の4ステップ 1: 文頭・文末記号を追加 2: 言語モデル学習(確率・平滑化計算) 3: パープレキシティの計算 4: 翻訳用のバイナリ化
46
IRSTLMで言語モデル学習(2) 利用するデータはdata/tok/kyoto-train.ja まずlmディレクトリを作成
$ mkdir lm $ export IRSTLM=$HOME/alagin/usr
47
IRSTLMで言語モデル学習(3) IRSTLMのadd-start-end.shで文頭・文末記号の付加 付与されたデータを閲覧:
$ usr/bin/add-start-end.sh < data/tok/kyoto-train.ja > lm/kyoto-train.sb.ja $ head lm/kyoto-train.sb.ja </s> <s> 雪舟 ( せっしゅう 、 1420 年 ( 応永 27 年 ) 年 ( 永正 3 年 ) ) は 号 で 、 15 世紀 後半 室町 時代 に 活躍 し た 水墨 画 家 ・ 禅僧 で 、 画聖 と も 称え られ る 。 </s> <s> 日本 の 水墨 画 を 一変 さ せ た 。 </s>
48
IRSTLMで言語モデル学習(3) n-gram確率の計算とARPA形式への変換 言語モデルファイルの閲覧
$ usr/bin/build-lm.sh -i lm/kyoto-train.sb.ja \ -t ./tmp -p -s improved-kneser-ney -o lm/kyoto-train.ja.lm $ usr/bin/compile-lm --text yes lm/kyoto-train.ja.lm.gz lm/kyoto-train.ja.arpa $ head lm/kyoto-train.ja.arpa \data\ ngram 1= ngram 2= ngram 3= \1-grams: <s> </s> 雪舟 log(P(<バックオフ>|雪舟)) log(P(雪舟))
49
IRSTLMで言語モデル学習(4) 開発データdata/tok/kyoto-dev.jaで言語モデルの評価: 未知語による パープレキシティ
$ usr/bin/compile-lm lm/kyoto-train.ja.lm.gz --eval data/tok/kyoto-dev.ja … %% Nw=26856 PP= PPwp=10.87 Nbo=11694 Noov=145 OOV=0.54% 未知語による パープレキシティ 単語数 未知語数 未知語率 パープレキシティ 低次元n-gramへの バックオフ回数
50
IRSTLMで言語モデル学習(5) 効率化のため、モデルをバイナリ化
$ mosesdecoder/bin/build_binary lm/kyoto-train.ja.arpa lm/kyoto-train.ja.blm
51
更に勉強するには 自然言語処理プログラミングチュートリアル(1,2回目) “A bit of progress in language modeling” [Goodman 01]
52
かな漢字変換
53
この画面はご存知ですか? [img: Wikipedia]
54
日本語入力 インタフェース 予測提示 かな漢字変換 (辞書追加などなど)
55
機械翻訳とかな漢字変換 フレーズベース機械翻訳 かな漢字変換 今日は、機械翻訳の講義を行います。 今日は、機械翻訳の講義を行います。
Today I will give a lecture on machine translation . Today 今日は、 I will give を行います a lecture on の講義 machine translation 機械翻訳 . 。 Today 今日は、 machine translation 機械翻訳 a lecture on の講義 I will give を行います . 。 今日は、機械翻訳の講義を行います。 かな漢字変換 きょうは、きかいほんやくのこうぎをおこないます。 きょうは、 今日は、 きかいほんやく 機械翻訳 の こうぎを 講義を おこないます 行います 。 今日は、機械翻訳の講義を行います。
56
選択肢が膨大! かなかんじへんかんはにほんごにゅうりょくのいちぶ かな漢字変換は日本語入力の一部 仮名漢字変換は日本語入力の一部
良い! 仮名漢字変換は日本語入力の一部 良い? かな漢字変換は二本後入力の一部 悪い 家中ん事変感歯に㌿御乳力の胃治舞 ?!?! ... 良い候補と悪い候補を区別するには?
57
かな漢字変換の確率モデル[森+98] ひらがな文が与えられた場合、最も確率の高い かな漢字混じり文を計算
ひらがな文が与えられた場合、最も確率の高い かな漢字混じり文を計算 これをどうやってモデル化? かなかんじへんかんはにほんごにゅうりょくのいちぶ かな漢字変換は日本語入力の一部 argmax 𝐸 𝑃 𝐸∣𝐹
58
系列に対する生成モデル ベイズ則で確率を分解 変換モデル(TM) 漢字とかなの関係を考慮 言語モデル(LM)
argmax 𝐸 𝑃 𝐸∣𝐹 = argmax 𝐸 𝑃 𝐹∣𝐸 𝑃 𝐸 𝑃 𝐹 argmax 𝐸 𝑃 𝐸∣𝐹 = argmax 𝐸 𝑃 𝐹∣𝐸 𝑃 𝐸 変換モデル(TM) 漢字とかなの関係を考慮 「にほん」はたぶん「日本」 言語モデル(LM) 前の漢字と次の漢字の関係を考慮 「日本」の後、「語」が現れやすい
59
モデルの例 言語モデル(LM) 変換モデル(TM) P( “今日と明日”)=高 P( “大きな鯨の卵”)=中 P( “明あえ羽か水戸”)=低
(並べ替えモデルは不要)
60
かな漢字変換の系列モデル 漢字→漢字の言語モデル確率 2-gramモデル 漢字→かなの変換モデル確率 <s> かな 漢字 変換
𝑃 𝐸 ≈ 𝑖=1 𝐼+1 𝑃 𝐿𝑀 𝑒 𝑖 ∣ 𝑒 𝑖−1 𝑃 𝐹∣𝐸 ≈ 1 𝐼 𝑃 𝑇𝑀 𝑓 𝑖 ∣ 𝑒 𝑖 PLM(漢字|かな) PLM(かな|<s>) PLM(変換|漢字) … <s> かな 漢字 変換 は 日本 語 ... </s> かな かんじ へんかん は にほん ご PTM(かな|かな) * PTM(かんじ|漢字) * PTM(へんかん|変換) …
61
変換モデル・言語モデルの学習 単語分割・発音付与されたコーパスから … …
かな かんじ へんかん は にほん ご … <s> かな 漢字 変換 は 日本 語 …</s> c(かな→かな)++ c(漢字→かんじ)++ … c(<s> かな)++ c(かな 漢字)++ … 文脈の頻度で割ることで確率を求める (言語モデルの場合は平滑化も利用) PT(漢字|かな) = c(かな 漢字)/c(かな) = 1/3 PE(にっぽん|日本) = c(日本 → にっぽん)/c(日本) = 1/3
62
かな漢字変換候補の選択 良い候補と悪い候補をモデルで区別する かなかんじへんかんはにほんごにゅうりょくのいちぶ
P(E) P(F|E) P(E)*P(F|E) かな漢字変換は日本語入力の一部 4.02*10-3 1.25*10-1 最大! 仮名漢字変換は日本語入力の一部 2.04*10-3 1.25*10-1 かな漢字変換は二本後入力の一部 8.34*10-5 4.12*10-2 家中ん事変感歯に㌿御乳力の胃治舞 1.18*10-10 2.18*10-7 ...
63
組み合わせ爆発で全候補の列挙は不可能 か な か ん じ へ ん か ん 仮説の数は? 1:書 2:無 3:書 4:ん 5:じ 6:へ
か な か ん じ へ ん か ん 1:書 2:無 3:書 4:ん 5:じ 6:へ 7:ん 8:書 9:ん 1:化 2:な 3:化 5:時 6:減 8:化 1:か 2:名 3:か 6:経 8:か 1:下 2:成 3:下 8:下 2:かな 4:管 7:変 9:管 2:仮名 4:感 9:感 3:中 5:感じ 8:変化 5:漢字 9:変換 仮説の数は?
64
組み合わせ爆発で全候補の列挙は不可能 か な か ん じ へ ん か ん
か な か ん じ へ ん か ん 1:書 2:無 3:書 4:ん 5:じ 6:へ 7:ん 8:書 9:ん 1:化 2:な 3:化 5:時 6:減 8:化 1:か 2:名 3:か 6:経 8:か 1:下 2:成 3:下 8:下 2:かな 4:管 7:変 9:管 2:仮名 4:感 9:感 3:中 5:感じ 8:変化 5:漢字 9:変換 か:4 かな:18 かなか:76 かなかん:112 … かなかんじへんかん: 5720 仮説の数は?
65
効率的な探索法:ビタビアルゴリズム 1 2 3 1 2 3 1.4 2.3 4.0 2.5 2.1 ビタビ 1.4 2.3
グラフの最短経路を見つけるアルゴリズム 1.4 4.0 2.3 2.5 1 2 3 2.1 ビタビ 1.4 1 2 2.3 3
66
グラフ? 単語分割の話じゃなかったっけ? ???
67
グラフとしてのかな漢字変換 2.1 2.4 1.3 0:<S> 1:書 2:無 3:</S> 1.8 1.3 0.6 0.9 1:か 2:な 0.4 1.5 0.7 2:かな 2.6 1.0 2:仮名 各エッジは単語を表す エッジの重みは全てのモデルを考慮した負の対数確率 なぜ負? (ヒント:最短経路)
68
ビタビアルゴリズムの探索過程 前向きステップで、各ノードへたどる最短経路の長さを 計算 後ろ向きステップで、最短経路自体を構築
69
前向きステップ e2 1.4 4.0 2.3 2.5 1 2 3 e1 e3 e5 e4 2.1 best_score[0] = 0 for each node in the graph (昇順) best_score[node] = ∞ for each incoming edge of node score = best_score[edge.prev_node] + edge.score if score < best_score[node] best_score[node] = score best_edge[node] = edge
70
例: e2 e5 e3 e1 e4 1 2 3 初期化: 1.4 2.5 4.0 2.3 2.1 best_score[0] = 0 0.0
0.0 1 ∞ 2 ∞ 3 ∞ 2.5 4.0 2.3 e3 e5 e1 2.1 e4 初期化: best_score[0] = 0
71
例: e2 1.4 0.0 1 2.5 2 ∞ 3 ∞ 2.5 4.0 2.3 e3 e5 e1 2.1 e4 初期化: best_score[0] = 0 e1を計算: score = = 2.5 (< ∞) best_score[1] = 2.5 best_edge[1] = e1
72
例: e2 e5 e3 e1 e4 1 2 3 初期化: e1を計算: e2を計算: 1.4 2.5 4.0 2.3 2.1
0.0 1 2.5 2 1.4 3 ∞ 2.5 4.0 2.3 e3 e5 e1 2.1 e4 初期化: best_score[0] = 0 e1を計算: score = = 2.5 (< ∞) best_score[1] = 2.5 best_edge[1] = e1 e2を計算: score = = 1.4 (< ∞) best_score[2] = 1.4 best_edge[2] = e2
73
例: e2 e5 e3 e1 e4 1 2 3 e3を計算: 初期化: e1を計算: e2を計算: 1.4 2.5 4.0 2.3 2.1
0.0 1 2.5 2 1.4 3 ∞ 2.5 4.0 2.3 e3 e5 e1 2.1 e4 e3を計算: 初期化: score = = 6.5 (> 1.4) 変更なし! best_score[0] = 0 e1を計算: score = = 2.5 (< ∞) best_score[1] = 2.5 best_edge[1] = e1 e2を計算: score = = 1.4 (< ∞) best_score[2] = 1.4 best_edge[2] = e2
74
例: e2 e5 e3 e1 e4 1 2 3 e3を計算: 初期化: e1を計算: e4を計算: e2を計算: 1.4 2.5 4.0
0.0 1 2.5 2 1.4 3 4.6 2.5 4.0 2.3 e3 e5 e1 2.1 e4 e3を計算: 初期化: score = = 6.5 (> 1.4) 変更なし! best_score[0] = 0 e1を計算: e4を計算: score = = 2.5 (< ∞) best_score[1] = 2.5 best_edge[1] = e1 score = = 4.6 (< ∞) best_score[3] = 4.6 best_edge[3] = e4 e2を計算: score = = 1.4 (< ∞) best_score[2] = 1.4 best_edge[2] = e2
75
例: e2 e5 e3 e1 e4 1 2 3 e3を計算: 初期化: e1を計算: e4を計算: e2を計算: e5を計算: 1.4
0.0 1 2.5 2 1.4 3 3.7 2.5 4.0 2.3 e3 e5 e1 2.1 e4 e3を計算: 初期化: score = = 6.5 (> 1.4) 変更なし! best_score[0] = 0 e1を計算: e4を計算: score = = 2.5 (< ∞) best_score[1] = 2.5 best_edge[1] = e1 score = = 4.6 (< ∞) best_score[3] = 4.6 best_edge[3] = e4 e2を計算: e5を計算: score = = 1.4 (< ∞) best_score[2] = 1.4 best_edge[2] = e2 score = = 3.7 (< 4.6) best_score[3] = 3.7 best_edge[3] = e5
76
前向きステップの結果: e2 1.4 0.0 2.5 1 2.5 4.0 2.3 2 1.4 3 3.7 e1 e3 e5 e4 2.1 best_score = ( 0.0, 2.5, 1.4, 3.7 ) best_edge = ( NULL, e1, e2, e5 )
77
後ろ向きステップのアルゴリズム e2 1.4 4.0 2.3 0.0 2.5 1 2.5 2 1.4 3 3.7 e1 e3 e5 e4 2.1 best_path = [ ] next_edge = best_edge[best_edge.length – 1] while next_edge != NULL add next_edge to best_path next_edge = best_edge[next_edge.prev_node] reverse best_path
78
後ろ向きステップの例 e2 1.4 0.0 2.5 1 2.5 4.0 2 1.4 2.3 3 3.7 e1 e3 e5 e4 2.1 初期化: best_path = [] next_edge = best_edge[3] = e5
79
後ろ向きステップの例 初期化: e5を計算: e2 1.4 0.0 2.5 1 2.5 4.0 2 1.4 2.3 3 3.7 e1 e3
0.0 2.5 1 2.5 4.0 2 1.4 2.3 3 3.7 e1 e3 e5 e4 2.1 初期化: best_path = [] next_edge = best_edge[3] = e5 e5を計算: best_path = [e5] next_edge = best_edge[2] = e2
80
後ろ向きステップの例 初期化: e2を計算: e5を計算: e2 1.4 0.0 2.5 1 2.5 4.0 2 1.4 2.3 3 3.7
0.0 2.5 1 2.5 4.0 2 1.4 2.3 3 3.7 e1 e3 e5 e4 2.1 初期化: e2を計算: best_path = [] next_edge = best_edge[3] = e5 best_path = [e5, e2] next_edge = best_edge[0] = NULL e5を計算: best_path = [e5] next_edge = best_edge[2] = e2
81
後ろ向きステップの例 初期化: e5を計算: e5を計算: 逆順に並べ替え: 0.0 1 2.5 2 1.4 3 3.7 4.0 2.3
0.0 1 2.5 2 1.4 3 3.7 4.0 2.3 2.1 e1 e2 e3 e5 e4 初期化: e5を計算: best_path = [] next_edge = best_edge[3] = e5 best_path = [e5, e2] next_edge = best_edge[0] = NULL e5を計算: 逆順に並べ替え: best_path = [e5] next_edge = best_edge[2] = e2 best_path = [e2, e5]
82
かな漢字変換の探索 ビタビアルゴリズムを利用 か な か ん じ へ ん か ん 0:<S> 1:書 2:無 3:書 4:ん
か な か ん じ へ ん か ん 0:<S> 1:書 2:無 3:書 4:ん 5:じ 6:へ 7:ん 8:書 9:ん 1:化 2:な 3:化 5:時 6:減 8:化 1:か 2:名 3:か 6:経 8:か 10:</S> 1:下 2:成 3:下 8:下 2:かな 4:管 7:変 9:管 2:仮名 4:感 9:感 3:中 5:感じ 8:変化 5:漢字 9:変換
83
かな漢字変換の探索 ビタビアルゴリズムを利用 か な か ん じ へ ん か ん 0:<S> 1:書 2:無 3:書 4:ん
か な か ん じ へ ん か ん 0:<S> 1:書 2:無 3:書 4:ん 5:じ 6:へ 7:ん 8:書 9:ん 1:化 2:な 3:化 5:時 6:減 8:化 1:か 2:名 3:か 6:経 8:か 10:</S> 1:下 2:成 3:下 8:下 2:かな 4:管 7:変 9:管 2:仮名 4:感 9:感 3:中 5:感じ 8:変化 5:漢字 9:変換
84
かな漢字変換の探索 0:<S>で探索開始 か な か ん じ へ ん か ん 0:<S>
か な か ん じ へ ん か ん 0:<S> S[“0:<S>”] = 0
85
かな漢字変換の探索 0→1のスパンをまたがる単語を全て展開 か な か ん じ へ ん か ん 0:<S> 1:書 1:化
か な か ん じ へ ん か ん 0:<S> 1:書 S[“1:書”] = -log (PTM(か|書) * PLM(書|<S>)) + S[“0:<S>”] 1:化 S[“1:化”] = -log (PTM(か|化) * PLM(化|<S>)) + S[“0:<S>”] 1:か S[“1:か”] = -log (PTM(か|か) * PLM(か|<S>)) + S[“0:<S>”] 1:下 S[“1:下”] = -log (PTM(か|下) * PLM(下|<S>)) + S[“0:<S>”]
86
かな漢字変換の探索 0→2のスパンをまたがる単語を全て展開 か な か ん じ へ ん か ん 0:<S> 1:書 1:化
か な か ん じ へ ん か ん 0:<S> 1:書 1:化 1:か 1:下 2:かな S[1:かな] = -log (PTM(かな|かな) * PLM(かな|<S>)) + S[“0:<S>”] 2:仮名 S[1:仮名] = -log (PTM(かな|仮名) * PLM(仮名|<S>)) + S[“0:<S>”]
87
… かな漢字変換の探索 1→2のスパンをまたがる単語を全て展開 か な か ん じ へ ん か ん 0:<S> 1:書 2:無
か な か ん じ へ ん か ん 0:<S> 1:書 2:無 S[“2:無”] = min( -log (PTM(な|無) * PLM(無|書)) + S[“1:書”], -log (PTM(な|無) * PLM(無|化)) + S[“1:化”], -log (PTM(な|無) * PLM(無|か)) + S[“1:か”], -log (PTMな|無) * PLM(無|下)) + S[“1:下”] ) 1:化 2:な 1:か 2:名 1:下 2:成 S[“2:な”] = min( -log (PTM(な|な) * PLM(な|書)) + S[“1:書”], -log (PTM(な|な) * PLM(な|化)) + S[“1:化”], -log (PTM(な|な) * PLM(な|か)) + S[“1:か”], -log (PTM(な|な) * PLM(な|下)) + S[“1:下”] ) 2:かな 2:仮名 …
88
かな漢字変換のまとめ 仮説の良し悪しを確率モデルで判断 変換モデルと言語モデル 各モデルをコーパスから学習
ビタビアルゴリズムで確率の高い解を探索
89
演習:かな漢字変換の学習(1) 1: 読み付与 2: 言語モデル学習 3: 変換モデル学習 4: 変換の探索
90
演習:かな漢字変換の学習(2) まずかな漢字変換用のディレクトリを作成
KyTeaという形態素解析器で単語分割・読み付与 (手軽に学習できるよう、20000文のみを利用) もう一度単語分割のみを行う (sedで読みを消すこともできる) $ mkdir kkc $ head data/orig/kyoto-train.ja | usr/bin/kytea -notag 1 -tagbound "|" > kkc/kyoto-train.wordpron 品詞不要 単語と読みを「|」で分割 $ head data/orig/kyoto-train.ja | usr/bin/kytea -notags > kkc/kyoto-train.word
91
演習:かな漢字変換の学習(3) 言語モデルと変換モデルを構築 変換モデルで「人」の発音を閲覧
$ usr/local/kkc/train-bigram.py kkc/kyoto-train.word > kkc/kyoto-train.lm $ usr/local/kkc/train-tm.py kkc/kyoto-train.wordpron > kkc/kyoto-train.tm $ grep "^人 " kkc/kyoto-train.tm 人 ひと 人 にん 人 じん
92
演習:かな漢字変換の学習(4) テストに使うひらがなファイルを作成 かな漢字変換を実行
kkc/kyoto-train.tmの確率を変更し、結果を変えてみる $ echo "きよみずでらはきょうとにあります。" > kkc/test.txt $ usr/local/kkc/kkc.py kkc/kyoto-train.lm kkc/kyoto-train.tm kkc/test.txt 清水 寺 は 京都 に あ り ま す 。
93
更に勉強するには 自然言語処理プログラミングチュートリアル(6回目)
94
かな漢字変換 ↓ フレーズベース機械翻訳
95
フレーズベース機械翻訳と かな漢字変換 フレーズベース機械翻訳 かな漢字変換 今日は、機械翻訳の講義を行います。
Today I will give a lecture on machine translation . Today 今日は、 I will give を行います a lecture on の講義 machine translation 機械翻訳 . 。 Today 今日は、 machine translation 機械翻訳 a lecture on の講義 I will give を行います . 。 今日は、機械翻訳の講義を行います。 かな漢字変換 きょうは、きかいほんやくのこうぎをおこないます。 きょうは、 今日は、 きかいほんやく 機械翻訳 の こうぎを 講義を おこないます 行います 。 今日は、機械翻訳の講義を行います。
96
機械翻訳(MT)と かな漢字変換(KKC)の差
並べ替えモデル KKC: 必要なし、MT: 重要 探索アルゴリズム KKC: 単純なビタビ、MT: 並べ替えを考慮し、複雑 学習データ KKC: 読み付きデータ、MT: 対訳データ 学習アルゴリズム KKC: 最尤推定、MT: いろいろな工夫が必要
97
並べ替えモデル 目的言語文が正しい語順になるように確率を付与 鶏 が 食べる 鶏 を 食べる P( )=high P( )=high
鶏 が 食べる 鶏 を 食べる P( )=high P( )=high chicken eats eats chicken 鶏 が 食べる 鶏 を 食べる P( )=low P( )=low eats chicken chicken eats
98
語彙化並べ替えモデル [Koehn+ 05] 順・逆順・不連続 太い → the fat 太郎 を → Taro 順の確率が高い 逆順の確率が高い 入力・出力、右・左などで条件付けた確率 太 太 訪し い男が郎を問た the fat man visited Taro 順 不連続 逆順
99
フレーズベース機械翻訳の探索 (デコーディング, [Koehn+ 03])
目的言語文を文頭から 構築 翻訳された原言語単語 を記憶 スコアの最も高い候補 を出力 ビタビアルゴリズムの 拡張であるビーム探索を 利用 en: he visited the white house ja: en: he visited the white house ja: 彼 は en: he visited the white house ja: 彼 は ホワイト ハウス を en: he visited the white house ja: 彼 は ホワイト ハウス を 訪問 した
100
デコーディングのアルゴリズム概要 まずかな漢字変換と同じように、翻訳候補を列挙 he visited the white house 彼
訪問 した その 白い 家 彼 は 訪ねた 白く 、 家 を 彼 が 会った ホワイト 一軒 家 彼 は 、 白色 ハウス 彼 は 訪問 した 白い 訪問 した ホワイト ・ ハウス ホワイト ・ ハウス を オバマ 政権
101
ビタビアルゴリズムの展開 かな漢字変換と同じように、候補をグラフとして表現 目的言語文の文頭から展開
かな漢字変換と異なり、原言語は文頭からと制約せず 各ノードのラベル: 翻訳し終わった原言語単語 最後に翻訳した単語(並べ替えモデルのため) 目的言語側の最後おn-1単語(言語モデルのため)
102
ビタビグラフの例 言語モデルn=2 E=he visited the white house ○=まだ, ●=完了, ★=最後 … … …
ホワイト ・ ハウス を ★○○○○ 彼 ●○★★★ を he/彼 the white house/ ホワイト ・ ハウス ★○○○○ は he/彼 は ●○★★★ ハウス house/家 house/ハウス ●○○○★ ハウス ○○○○○ <S> ○○○○★ 家 house/一軒 家 the white house/ ホワイト ・ ハウス … ○○★★★ ハウス … …
103
グラフに対するスコア付け 言語モデルn=2 E=he visited the white house ○=まだ, ●=完了, ★=最後
ホワイト ・ ハウス を ★○○○○ 彼 ●○★★★ を he/彼 PTM(he|彼) * PLM(彼|<S>) * PRM(順 | he/彼) PTM(the white house|ホワイト・ハウスを) * PLM(ホワイト|彼) * PLM(・|ホワイト) * PLM(ハウス|・) * PLM(を|ハウス) * PRM(不連続 | the white house|ホワイト・ハウスを) ○○○○○ <S>
104
問題:グラフが膨大 単語の並べ替えだけを考えてもO(n!)
105
問題:グラフが膨大 単語の並べ替えだけを考えてもO(n!) 解決策: 並べ替えの制限を設ける ビーム探索を導入
106
並べ替え制限 探索中n単語以上を翻訳せずに飛ばすことを許さない 例えばn=4の場合 he visited the white house
彼 は ... → 0単語 → OK → 1単語 → OK → 3単語 → OK → 4単語 → NG 訪問 した ... 白い ... 家 ...
107
ビーム探索 n単語が翻訳された仮説の中で、スコアの高いb子だけを 更に展開(n=1, b=3の場合)
he visited the white house 彼 は … 展開 訪問 した … 1 展開 彼 が … 展開 白い … 破棄 彼 … 破棄 …
108
研究 ラティス入力の探索 [Dyer 08] 統語ベース翻訳の探索 [Mi 08] 最小ベイズリスク [Kumar 04]
厳密な解の求め方 [Germann 01]
109
演習:Mosesデコーダで翻訳(1) 学習済みのモデルはmodelディレクトリに moses.ini (設定ファイル)
phrase-table.gz (翻訳モデル) reordering-table.wbe-msd-bidirectional-fe.gz (並べ替えモデル) それぞれを確認 翻訳モデルは: kyoto city , kyoto prefecture ||| 京都 府 、 京都 市 ||| … (様々な統計)
110
演習:Mosesデコーダで翻訳(2) デコーダを実行 好きな文を英語で入力 大文字を使わない 句読点を単語と別で書く
例えば:「he is a student in kyoto .」 $ mosesdecoder/bin/moses -config model/moses.ini … Created input-output object : [26.041] seconds
111
更に勉強するには [Chapter 6] 日本語の資料はまだ少ない…
112
フレーズベース統計的機械翻訳の学習
113
機械翻訳の(基本的な)学習過程 データの収集・作成 単語分割・トークン化 言語モデル 単語の対応付け パターン抽出・スコア付け
訳出(デコーディング) 翻訳の評価 重み調整(チューニング)
114
必要なデータ 対訳文データ 翻訳・並べ替えモデルで利用 単言語データ (目的言語側) 言語モデルに利用
これはペンです。 This is a pen. 昨日は友達と食べた。 I ate with my friend yesterday. 象は花が長い。 Elephants' trunks are long. This is a pen. I ate with my friend yesterday. Elephants' trunks are long.
115
良いデータは 大きい → ノイズを含まない 訳したいテキストと同じ分野 翻訳精度(BLEU) 言語モデルデータ(100万単語)
[Brants 2007] 翻訳精度(BLEU)
116
対訳データの収集方法 質の高い対訳データ: 政府・自治体 ニュース 特許 Webから収集 複数のデータ源を組み合わせる
117
日英の対訳データ アイデアは?
118
例:日英の対訳データ ジャンル 入手 TED講演 講演 無料 英辞郎 辞書 数千円 英辞郎例文 雑誌・例文 京都関連Wikipedia
百科事典 日英中基本文 例文 読売新聞 新聞 契約で無料 田中コーパス 様々 NTCIR PatentMT 特許 Wikipedia言語リンク WWWJDIC
119
Webからのデータ収集 並列ページの発見 [Resnik 03] [画像:毎日新聞]
120
Webからのデータ収集 並列ページの発見 [Resnik 03] 文アライメント [Moore 02]
121
Webからのデータ収集 並列ページの発見 [Resnik 03] 文アライメント [Moore 02]
データ作成のクラウドソーシング [Ambati 10] Mechanical Turk、duolingo等
122
トークン化 太郎が花子を訪問した。 太郎 が 花子 を 訪問 した 。 例:日本語の単語分割 例:英語の小文字化、句読点の分割
太郎 が 花子 を 訪問 した 。 例:英語の小文字化、句読点の分割 Taro visited Hanako. taro visited hanako .
123
トークン化がとても重要 ちょうど良い長さ:正しい翻訳 長すぎると学習データに含まれなければ翻訳不可 短すぎると誤訳の可能性 太郎 が
太郎 が 太郎 を taro ○ taro ○ 長すぎると学習データに含まれなければ翻訳不可 太郎が 太郎を taro ○ 学習データ内 太郎を ☓ 学習データ外 短すぎると誤訳の可能性 太 郎 が 太 郎 を fat ro ☓ fat ro ☓
124
トークン化ツール ヨーロッパの言語 日本語 中国語 Stanford Segmenter, LDC, KyTea, etc...
tokenize.perl en < input.en > output.en tokenize.perl fr < input.fr > output.fr 日本語 MeCab: mecab -O wakati < input.ja > output.ja KyTea: kytea -notags < input.ja > output.ja JUMAN, etc. 中国語 Stanford Segmenter, LDC, KyTea, etc...
125
Taro <ARG1> visited <ARG2> Hanako .
研究 機械翻訳の精度向上につながるトークン化 精度が重要か、一貫性が重要か [Chang 08] 他の言語に合わせた単語挿入 [Sudoh 11] 活用の処理(韓国語、アラビア語等)[Niessen 01] 教師なし学習 [Chung 09, Neubig 12] 太郎 が 花子 を 訪問 した 。 Taro <ARG1> visited <ARG2> Hanako . 단어란 도대체 무엇일까요? 단어 란 도대체 무엇 일 까요 ?
126
部分文字列に基づく機械翻訳 [Neubig+ 12]
単語に基づくモデルではなく 文字列に基づく機械翻訳! 言語資源なしで未知語に対応、精度が単語翻訳と匹敵 the hotel front desk ホテル の 受付 t h e _ h o t e l _ f r o n t _ d e s k ホ テ ル の 受 付
127
演習:データ準備(1) kyoto-testの日本語を分割し、小文字化する kyoto-testの英語をトークン化し、小文字化する
トークン化と小文字化されたデータのディレクトリ作成 kyoto-testの日本語を分割し、小文字化する kyoto-testの英語をトークン化し、小文字化する kyoto-dev, kyoto-tune, kyoto-trainで同じ処理 $ mkdir mydata mydata/tok mydata/low $ usr/bin/kytea -notags < data/orig/kyoto-test.ja > mydata/tok/kyoto-test.ja $ mosesdecoder/scripts/tokenizer/lowercase.perl < mydata/tok/kyoto-test.ja > mydata/low/kyoto-test.ja $ mosesdecoder/scripts/tokenizer/tokenizer.perl < data/orig/kyoto-test.en > mydata/tok/kyoto-test.en $ mosesdecoder/scripts/tokenizer/lowercase.perl < mydata/tok/kyoto-test.en > mydata/low/kyoto-test.en
128
演習:データ準備(2) データから1単語未満、40単語を超える文を削除
演習時間削減のため、2万文だけの学習データを作成 (通常は全てを利用) $ mosesdecoder/scripts/training/clean-corpus-n.perl mydata/low/kyoto-train ja en mydata/low/kyoto-train.cln 1 40 $ head < mydata/low/kyoto-train.cln.ja > mydata/low/kyoto-train.small.ja $ head < mydata/low/kyoto-train.cln.en > mydata/low/kyoto-train.small.en
129
モデル学習
130
言語モデル 目的言語側の各文に確率を与える E1: Taro visited Hanako
良い言語モデル:流暢性の高い文に高い確率を LM E1: Taro visited Hanako E2: the Taro visited the Hanako E3: Taro visited the bibliography P(E1) P(E2) P(E3) P(E1) > P(E2) P(E1) > P(E3)
131
アライメント 文内の単語対応を発見 確率モデルによる自動学習(教師なし)が主流 P(花子|hanako) = 0.99
太郎 が 花子 を 訪問 した 。 taro visited hanako . 太郎 が 花子 を 訪問 した 。 taro visited hanako . 日本語 日本語 日本語 日本語 P(花子|hanako) = 0.99 P(太郎|taro) = 0.97 P(visited|訪問) = 0.46 P(visited|した) = 0.04 P(花子|taro) = English English English English
132
IBM/HMMモデル [Brown+ 93, Vogel+ 96]
1対多アライメントモデル IBM Model 1: 語順を考慮しない IBM Models 2-5, HMM: 徐々に考慮する情報を導 入(精度・計算コスト++) ホテル の 受付 the hotel front desk the hotel front desk ホテル の 受付 X X
133
EMアルゴリズム IBMモデルはEM(Expectation-Maximization)アルゴリズ ムで学習 アイデア:
反復を繰り返すことでモデルの推定精度を向上
134
EMアルゴリズムの例 初期状態:単語の対応は未知、確率も一様 チーズ ムース Mousse di formaggi
本日 の 鮮魚 Pesce del giorno 本日 の チーズ Formaggi del giorno ドルチェ と チーズ Dolce e Formaggi P(チーズ|formaggi) = P(ムース|formaggi) = P(本日|formaggi) = P(の|formaggi) = P(ドルチェ|formaggi) = 0.16 P(と|formaggi) = P(本日|giorno) = P(の|giorno) = P(鮮魚|giorno) = P(チーズ|giorno) = ...
135
EMアルゴリズムの例 Mステップ:確率を更新 チーズ ムース Mousse di formaggi
本日 の 鮮魚 Pesce del giorno 本日 の チーズ Formaggi del giorno ドルチェ と チーズ Dolce e Formaggi P(チーズ|formaggi) = P(ムース|formaggi) = P(本日|formaggi) = P(の|formaggi) = P(ドルチェ|formaggi) = P(と|formaggi) = P(本日|giorno) = P(の|giorno) = P(鮮魚|giorno) = P(チーズ|giorno) = ...
136
EMアルゴリズムの例 Eステップ:単語対応を更新 チーズ ムース Mousse di formaggi
本日 の 鮮魚 Pesce del giorno 本日 の チーズ Formaggi del giorno ドルチェ と チーズ Dolce e Formaggi P(チーズ|formaggi) = P(ムース|formaggi) = P(本日|formaggi) = P(の|formaggi) = P(ドルチェ|formaggi) = P(と|formaggi) = P(本日|giorno) = P(の|giorno) = P(鮮魚|giorno) = P(チーズ|giorno) = ...
137
EMアルゴリズムの例 Mステップ:確率を更新 チーズ ムース Mousse di formaggi
本日 の 鮮魚 Pesce del giorno 本日 の チーズ Formaggi del giorno ドルチェ と チーズ Dolce e Formaggi P(チーズ|formaggi) = 0.9 P(ムース|formaggi) = P(本日|formaggi) = P(の|formaggi) = P(ドルチェ|formaggi) = 0.02 P(と|formaggi) = P(本日|giorno) = P(の|giorno) = P(鮮魚|giorno) = P(チーズ|giorno) = ...
138
EMアルゴリズムの例 Eステップ:単語対応を更新 チーズ ムース Mousse di formaggi
本日 の 鮮魚 Pesce del giorno 本日 の チーズ Formaggi del giorno ドルチェ と チーズ Dolce e Formaggi P(チーズ|formaggi) = 0.9 P(ムース|formaggi) = P(本日|formaggi) = P(の|formaggi) = P(ドルチェ|formaggi) = 0.02 P(と|formaggi) = P(本日|giorno) = P(の|giorno) = P(鮮魚|giorno) = P(チーズ|giorno) = ...
139
1対多アライメントの組み合わせ ホテル の 受付 the hotel front desk the hotel front desk
様々なヒューリスティック手法(grow-diag-final) the hotel front desk ホテル の 受付 X X 組み合わせ the hotel front desk ホテル の 受付
140
ツール mkcls: 2言語で単語クラスを自動発見 GIZA++: IBMモデルによるアライメント(クラスを用い て確率を平滑化)
symal: 両方向のアライメントを組み合わせる (Mosesのtrain-model.perlの一部として実行される) ホテル の 受付 the hotel front desk ホテル の 受付 the hotel front desk ホテル の 受付 the hotel front desk +
141
研究 アライメントは本当に重要なのか?[Ganchev+ 08] 教師ありアライメント [Fraser 06, Haghighi 09]
統語情報を使ったアライメント [DeNero 07] フレーズベースアライメント [Marcu 02, DeNero 08]
142
フレーズ抽出 ホ テ 受 ルの付 the hotel front desk アライメントに基づいてフレーズを列挙 ホテル の → hotel
ホ テ 受 ルの付 ホテル の → hotel ホテル の → the hotel 受付 → front desk ホテルの受付 → hotel front desk ホテルの受付 → the hotel front desk the hotel front desk
143
フレーズのスコア計算 5つの標準的なスコアでフレーズの信頼性・使用頻度
フレーズ翻訳確率 P(f|e) = c(f,e)/c(e) P(e|f) = c(f,e)/c(f) 例: c(ホテル の, the hotel) / c(the hotel) 語彙(lexical)翻訳確率 フレーズ内の単語の翻訳確率を利用(IBM Model 1) 低頻度のフレーズ対の信頼度判定に役立つ P(f|e) = Πf 1/|e| ∑e P(f|e) 例: (P(ホテル|the)+P(ホテル|hotel))/2 * (P(の|the)+P(の|hotel))/2 フレーズペナルティ:すべてのフレーズで1
144
ツール extract: フレーズ抽出 phrase-extract/score: フレーズのスコア付け
(Mosesのtrain-model.perlの一部として実行される)
145
研究 翻訳モデルの分野適用 [Koehn 07, Matsoukas 09] 不要・信頼度の低いフレーズの削除 [Johnson 07]
フレーズ曖昧性解消 [Carpuat 07]
146
従来の流れの長所短所 + 意外と強力、Mosesなどで広く使われる - 複雑でヒューリスティックスがたくさん
単語 アライメント (GIZA++) f→e 1対多 対応 組み 合わせ フレーズ 抽出 パラレル テキスト 多対多 対応 フレーズ テーブル 単語 アライメント (GIZA++) e→f 1対多 対応 + 意外と強力、Mosesなどで広く使われる - 複雑でヒューリスティックスがたくさん - 段階に分かれるため、最終目的であるフレーズテーブ ルの構築に合わないアライメントを獲得 - 網羅的に抽出されたフレーズテーブルは膨大
147
同時アライメント・抽出 [Neubig+ 11]
階層的 フレーズ アライメント パラレル テキスト フレーズ テーブル + 直接フレーズテーブルをモデル化できる + ヒューリスティックスの必要がなくなる + 精度を保ちながらフレーズテーブルのサイズが減らせ る Inversion Transduction Grammar (ITG)を用いた階層的モ デルで実現 pialignツールキットで実装
148
語彙化並べ替えモデル 順・逆順・不連続 太い → the fat 太郎 を → Taro 順の確率が高い 逆順の確率が高い the fat
入力・出力、右・左などで条件付けた確率 太 太 訪し い男が郎を問た the fat man visited Taro 順 不連続 逆順
149
ツール extract: フレーズ抽出と同一 lexical-reordering/score: 並べ替えモデルを学習
(Mosesのtrain-model.perlの一部として実行される)
150
演習:翻訳モデルの学習 (1) 学習を一気に行うスクリプト:
$ mosesdecoder/scripts/training/train-model.perl -parallel -external-bin-dir $HOME/alagin/usr/local/giza-pp -root-dir $HOME/alagin/train -corpus $HOME/alagin/mydata/low/kyoto-train.small -f en -e ja -alignment grow-diag-final-and -reordering msd-bidirectional-fe -lm 0:3:$HOME/alagin/lm/kyoto-train.ja.blm:8 &> training.log
151
演習:翻訳モデルの学習 (2) 学習後、アライメントの結果を閲覧
アライメント:train/model/aligned.grow-diag-final-and データ: mydata/low/kyoto-train.small.{ja,en} 閲覧の前に、データをheadで削減 閲覧UIを起動し、これらを選択 $ head -100 train/model/aligned.grow-diag-final-and > mydata/align.txt $ head -100 mydata/low/kyoto-train.small.ja > mydata/ja.txt $ head -100 mydata/low/kyoto-train.small.en > mydata/en.txt $ java -jar download/AlignmentTool.jar
152
機械翻訳の評価
153
翻訳の曖昧性 他の機械学習・言語処理タスクと違い、翻訳には大きな 曖昧性 花子 が 太郎 に 会った Hanako met Taro Hanako met to Taro Hanako ran in to Taro Taro met Hanako The Hanako met the Taro →翻訳の評価がとても難しい
154
人手評価 意味的妥当性(Adequacy): 原言語文の意味が伝わるか 流暢性(Fluency): 目的言語文が自然か
比較評価(Pairwise): XとYどっちの方が良いか 太郎が花子を訪問した Taro visited Hanako the Taro visited the Hanako Hanako visited Taro 妥当? ○ ○ ☓ 流暢? ○ ☓ ○ Xより良い B, C C
155
許容性(Acceptability) [Goto+ 11]
妥当性と流暢性を組み合わせた評価基準 Yes AA Yes ネーティブ並の流暢性 A Yes 文法的に正しい No Yes B 簡単に理解できる 原言語文の内容が理解できる No Yes C No 重要な情報は全て含まれている No F No
156
自動評価 システム出力は正解文に一致するか 翻訳の正解は単一ではないため、複数の正解を利用する ことも
正解文: Taro visited Hanako システム出力: the Taro visited the Hanako 正解文: Taro visited Hanako Taro ran in to Hanako システム出力: the Taro visited the Hanako
157
BLEU [Papineni+ 03] n-gram適合率+短さペナルティ 最初に提案された自動評価尺度 未だに最も標準的
Reference: Taro visited Hanako System: the Taro visited the Hanako 1-gram: 3/5 2-gram: 1/4 brevity penalty = 1.0 BLEU-2 = (3/5*1/4)1/2 * 1.0 = 0.387 Brevity: min(1, |System|/|Reference|) = min(1, 5/3)
158
RIBES [Isozaki+ 10] 語順に着目した評価尺度 単語の順位相関を利用
日英・英日翻訳で異なる手法(RBMT・SMT)でも人間 評価と高い相関 正解: Taro visited Hanako Taro visits Hanako Hanako Taro visited X RIBES: BLEU(+1):
159
研究 言語資源を用いた評価尺度 METEOR: 類義語 [Banerjee 05] MEANT: 意味解析 [Lo 11]
チューニングに良い評価尺度 [Cer 10] 複数の評価尺度の利用 [Albrecht 07] 評価のクラウドソーシング [Callison-Burch 11]
160
演習:人手評価 翻訳結果を格納したファイル: download/en-ja-result.tsv
好きな表計算ソフトで開き、数文にAcceptability評価を 付ける
161
演習:自動評価 download/kyoto-test-{pb,hiero,preorder}.jaに3つの翻訳 器の出力
BLEUによる評価 RIBESによる評価 $ mosesdecoder/scripts/generic/multi-bleu.perl data/tok/kyoto-test.ja < download/kyoto-test-pb.ja $ mosesdecoder/scripts/generic/multi-bleu.perl data/tok/kyoto-test.ja < download/kyoto-test-hiero.ja $ mosesdecoder/scripts/generic/multi-bleu.perl data/tok/kyoto-test.ja < download/kyoto-test-preorder.ja $ python3 usr/local/RIBES /RIBES.py -r data/tok/kyoto-test.ja download/kyoto-test-{pb,hiero,preorder}.ja
162
チューニング
163
チューニング[Och+ 02] 各モデルのスコアを組み合わせた解のスコア スコアを重み付けると良い結果が得られる
チューニングは重みを発見: wLM=0.2 wTM=0.3 wRM=0.5 LM TM RM ○ Taro visited Hanako -4 -3 -1 -8 ☓ the Taro visited the Hanako -5 -4 -1 -10 ☓ Hanako visited Taro -2 -3 -2 -7 最大 ☓ 最大 ○ LM TM RM ○ Taro visited Hanako 0.2* -4 0.3* -3 0.5* -1 -2.2 ☓ the Taro visited the Hanako 0.2* -5 0.3* -4 0.5* -1 -2.7 ☓ Hanako visited Taro 0.2* -2 0.3* -3 0.5* -2 -2.3
164
対数線形モデル … 訳文の対数確率を素性の重み付き和で組み合わせる φiは各モデルの対数確率
𝑃 𝐸∣𝐹 = 1 𝑍 𝑖 𝑒 λ 𝑖 ϕ 𝑖 𝐸,𝐹 ϕ 1 𝐸,𝐹 =log 𝑃 𝐿𝑀 𝐸 ϕ 2 𝐸,𝐹 =log 𝑃 𝑇𝑀 𝐸∣𝐹 ϕ 3 𝐸,𝐹 =log 𝑃 𝑇𝑀 𝐹∣𝐸 …
165
the Taro visited the Hanako
誤り率最小化(MERT) [Och 03] BLEUなどの評価尺度を候補生成・重み調整の反復で最 適化 n-best出力(dev) 入力 (dev) 解探索 the Taro visited the Hanako Hanako visited Taro Taro visited Hanako ... 太郎が花子を訪問した モデル 重み 正解文 (dev) 良い重み の発見 Taro visited Hanako
166
MERTの重み更新 重みを1個ずつ更新 重み BLEU wLM wTM wRM 初期値: 0.1 0.1 0.1 0.20 wLMを最適化
0.4 0.1 0.1 0.32 wTMを最適化 0.4 0.1 0.1 0.32 wRMを最適化 0.4 0.1 0.3 0.4 wLMを最適化 0.35 0.1 0.3 0.41 wTMを最適化
167
重み1つの最適化 入力: n-best 固定された重み 調整する重み f1 φLM φTM φRM BLEU e1,1 1 -1 e1,2
固定された重み 調整する重み f1 φLM φTM φRM BLEU e1,1 1 -1 e1,2 e1,3 f2 φLM φTM φRM BLEU e2,1 1 -2 e2,2 3 e2,3 2 wLM=-1, wTM=1 wRM=???
168
重み1つの最適化 各仮説を線へ変換 変数: aは調整する素性の値 bは固定された素性の重み付き和 xは調整する重み(未知) 𝑦=𝑎𝑥+𝑏
169
重み1つの最適化 例: wLM=-1, wTM=1, wRM=??? f1 φLM φTM φRM e1,1 1 -1 e1,2 e1,3
𝑦=𝑎𝑥+𝑏 𝑎= ϕ 𝑅𝑀 𝑏= 𝑤 𝐿𝑀 ϕ 𝐿𝑀 + 𝑤 𝑇𝑀 ϕ 𝑇𝑀 f1 φLM φTM φRM e1,1 1 -1 e1,2 e1,3 a1,1=-1 b1,1=-1 a1,2=0 b1,2=1 a1,3=1 b1,3=-1
170
重み1つの最適化 線をフラフに描写: f1の候補 f2の候補 a1,1=-1 b1,1=-1 a2,1=-2 b2,1=-1 a1,2=0
𝑦=𝑎𝑥+𝑏 f1の候補 f2の候補 BLEU=1 BLEU=0 e1,1 e1,3 e2,1 e2,3 e1,2 e2,2 a1,1=-1 b1,1=-1 a2,1=-2 b2,1=-1 a1,2=0 b1,2=1 a2,2=1 b2,2=-3 a1,3=1 b1,3=-1 a2,3=-2 b2,3=1
171
重み1つの最適化 xの各域における最も値の高い線を見つける これは凸包(convex hull)と呼ぶ f1の候補 f2の候補 e1,3
172
重み1つの最適化 凸包を用いて各域におけるスコアを計算 f1 f2 e1,3 e1,1 e2,1 e2,3 e1,2 e2,2 BLEU
173
重み1つの最適化 複数の文を1つの精度グラフに変換 f1 f2 BLEU 精度 BLEU
174
重み1つの最適化 最も精度の高い域の真ん中を新しい重みの値として選択 精度 BLEU wRM ←1.0
175
まとめ 各文に対して: n-best候補を作成 線に変換し、凸包を作成 凸包を精度グラフに変換 全文の精度グラフを組み合わせる
最もスコアの高い域を見つける 重みの値を精度が高くなるように更新
176
その他の学習法 オンライン学習 [Liang 06, Watanabe 07] 1文ずつスコアが高くなるように重みを更新
+ 多くの素性が利用可能 + 収束が早い - コーパス全体を同時に考慮できない ランク学習 [Hopkins 11] n-best中の文でBLEUが高い順にスコアが並ぶように学 習 + 実装が簡単
177
研究 ラティス出力のチューニング [Macherey 08] チューニングの高速化 [Suzuki 11]
複数の評価尺度の同時チューニング [Duh 12]
178
演習:チューニング MERTを行うmert-moses.plを利用 (decoder-flagsで並列スレッド数を指定)
チューニングが終わればBLEUの推移を表示 $ mosesdecoder/scripts/training/mert-moses.pl $HOME/alagin/mydata/low/kyoto-tune.en $HOME/alagin/mydata/low/kyoto-tune.ja $HOME/alagin/mosesdecoder/bin/moses $HOME/alagin/train/model/moses.ini -mertdir $HOME/alagin/mosesdecoder/bin/ -working-dir $HOME/alagin/tune -decoder-flags "-threads 4" &> tuning.log $ grep BLEU tune/*.moses.ini
179
構文解析
180
自然言語は曖昧性だらけ! I saw a girl with a telescope 構文解析(パージング)は構造的な曖昧性を解消
181
構文解析の種類 I saw a girl with a telescope I saw a girl with a telescope
係り受け解析: 単語と単語のつながりを重視 句構造解析: 句とその再帰的な構造を重視 I saw a girl with a telescope S VP PP NP NP NP PRP VBD DT NN IN DT NN I saw a girl with a telescope
182
句の再帰的な構造 I saw a girl with a telescope S VP PP NP NP NP PRP VBD DT NN
IN DT NN I saw a girl with a telescope
183
句の再帰的な構造 I saw a girl with a telescope S VP PP NP NP NP PRP VBD DT NN
IN DT NN I saw a girl with a telescope
184
句の再帰的な構造 I saw a girl with a telescope ??? S VP PP NP NP NP PRP VBD DT
NN IN DT NN I saw a girl with a telescope
185
句の再帰的な構造 I saw a girl with a telescope ??? S VP PP NP NP NP PRP VBD DT
NN IN DT NN I saw a girl with a telescope
186
句の再帰的な構造 I saw a girl with a telescope ??? S VP PP NP NP NP PRP VBD DT
NN IN DT NN I saw a girl with a telescope
187
I saw a girl with a telescope
違う構造→違う解釈 S VP ??? NP PP NP NP NP PRP VBD DT NN IN DT NN I saw a girl with a telescope
188
I saw a girl with a telescope
違う構造→違う解釈 S VP ??? NP PP NP NP NP PRP VBD DT NN IN DT NN I saw a girl with a telescope
189
I saw a girl with a telescope
違う構造→違う解釈 S VP ??? NP PP NP NP NP PRP VBD DT NN IN DT NN I saw a girl with a telescope
190
I saw a girl with a telescope
違う構造→違う解釈 S VP ??? NP PP NP NP NP PRP VBD DT NN IN DT NN I saw a girl with a telescope
191
予測問題としての構文解析 I saw a girl with a telescope 文Xが与えられ、構文木Yを予測
「構造予測」の問題(品詞推定、単語分割と同様) S VP PP NP NP NP PRP VBD DT NN IN DT NN I saw a girl with a telescope
192
構文解析の確率モデル I saw a girl with a telescope 文Xが与えられ、事後確率の最も高い構文木Yを予測 S VP
PP NP NP NP PRP VBD DT NN IN DT NN I saw a girl with a telescope argmax 𝑌 𝑃 𝑌∣𝑋
193
生成モデル 構文木Yと文Xが同時に確率モデルにより生成されたと する Xを固定すると、同時確率が最も高いYは事後確率も最 も高い 𝑃 𝑌,𝑋
argmax 𝑌 𝑃 𝑌∣𝑋 = argmax 𝑌 𝑃 𝑌,𝑋
194
P( ) 確率的文脈自由文法(PCFG) I saw a girl with a telescope 構文木の同時確率をどう定義するか? S
VP P( ) PP NP NP NP PRP VBD DT NN IN DT NN I saw a girl with a telescope
195
確率的文脈自由文法(PCFG) I saw a girl with a telescope PCFG:各ノードの確率を個別に定義
P(S → NP VP) S P(VP → VBD NP PP) VP P(PP → IN NP) PP P(NP → DT NN) NP NP P(PRP → “I”) NP P(NN → “telescope”) PRP VBD DT NN IN DT NN I saw a girl with a telescope
196
確率的文脈自由文法(PCFG) I saw a girl with a telescope PCFG:各ノードの確率を個別に定義
構文木の確率はノードの確率の積 P(S → NP VP) S P(VP → VBD NP PP) VP P(PP → IN NP) PP P(NP → DT NN) NP NP P(PRP → “I”) NP P(NN → “telescope”) PRP VBD DT NN IN DT NN I saw a girl with a telescope P(S → NP VP) * P(NP → PRP) * P(PRP → “I”) * P(VP → VBD NP PP) * P(VBD → “saw”) * P(NP → DT NN) * P(DT → “a”) * P(NN → “girl”) * P(PP → IN NP) * P(IN → “with”) * P(NP → DT NN) * P(DT → “a”) * P(NN → “telescope”)
197
確率的構文解析 構文解析は確率が最大の構文木を探索すること ビタビアルゴリズムは利用可能か? argmax 𝑌 𝑃 𝑌,𝑋
198
確率的構文解析 構文解析は確率が最大の構文木を探索すること ビタビアルゴリズムは利用可能か? 答え:いいえ!
理由:構文木の候補はグラフで表せず超グラフとなる argmax 𝑌 𝑃 𝑌,𝑋
199
超グラフとは? I saw a girl with a telescope I saw a girl with a telescope
2つの構文木がある とする S 0,7 VP 1,7 NP 2,7 S 0,7 PP 4,7 NP 0,1 NP 2,4 NP 5,7 VP 1,7 PRP 0,1 VBD 1,2 DT 2,3 NN 3,4 IN 4,5 DT 5,6 NN 6,7 PP 4,7 I saw a girl with a telescope NP 0,1 NP 2,4 NP 5,7 PRP 0,1 VBD 1,2 DT 2,3 NN 3,4 IN 4,5 DT 5,6 NN 6,7 I saw a girl with a telescope
200
超グラフとは? I saw a girl with a telescope I saw a girl with a telescope
その大半は同じ S 0,7 VP 1,7 NP 2,7 S 0,7 PP 4,7 NP 0,1 NP 2,4 NP 5,7 VP 1,7 PRP 0,1 VBD 1,2 DT 2,3 NN 3,4 IN 4,5 DT 5,6 NN 6,7 PP 4,7 I saw a girl with a telescope NP 0,1 NP 2,4 NP 5,7 PRP 0,1 VBD 1,2 DT 2,3 NN 3,4 IN 4,5 DT 5,6 NN 6,7 I saw a girl with a telescope
201
超グラフとは? I saw a girl with a telescope 両方に現れるエッジだけを残すと: S 0,7 VP 1,7 NP
2,7 PP 4,7 NP 0,1 NP 2,4 NP 5,7 PRP 0,1 VBD 1,2 DT 2,3 NN 3,4 IN 4,5 DT 5,6 NN 6,7 I saw a girl with a telescope
202
超グラフとは? I saw a girl with a telescope 1番目の構文木のみに存在するエッジを追加: S 0,7 VP
1,7 NP 2,7 PP 4,7 NP 0,1 NP 2,4 NP 5,7 PRP 0,1 VBD 1,2 DT 2,3 NN 3,4 IN 4,5 DT 5,6 NN 6,7 I saw a girl with a telescope
203
超グラフとは? I saw a girl with a telescope 2番目の構文木のみに存在するエッジを追加: S 0,7 VP
1,7 NP 2,7 PP 4,7 NP 0,1 NP 2,4 NP 5,7 PRP 0,1 VBD 1,2 DT 2,3 NN 3,4 IN 4,5 DT 5,6 NN 6,7 I saw a girl with a telescope
204
超グラフとは? I saw a girl with a telescope 両方の構文木のみに存在するエッジを追加: ここで2択:
0,7 ここで2択: 赤を選択すると1番目構文木 青を選択すると2番目構文木 VP 1,7 NP 2,7 PP 4,7 NP 0,1 NP 2,4 NP 5,7 PRP 0,1 VBD 1,2 DT 2,3 NN 3,4 IN 4,5 DT 5,6 NN 6,7 I saw a girl with a telescope
205
なぜ「超」グラフ? I saw エッジの「次数」は子の数 超グラフの次数はエッジの次数の最大値 グラフは次数1の超グラフ! 次数1 次数2
次数3 PRP 0,1 VBD 1,2 VP 1,7 VP 1,7 I saw VBD 1,2 NP 2,7 VBD 1,2 NP 2,4 PP 4,7 1 2 3 2.5 4.0 2.3 2.1 1.4 例 →
206
重み付き超グラフ I saw a girl with a telescope グラフと同じく: 超グラフのエッジに重みを付与
負の対数確率(ビタビアルゴリズムと同等の理由) S 0,7 -log(P(S → NP VP)) -log(P(VP → VBD NP)) VP 1,7 NP 2,7 -log(P(VP → VBD NP PP)) PP 4,7 NP 0,1 NP 2,4 NP 5,7 PRP 0,1 VBD 1,2 DT 2,3 NN 3,4 IN 4,5 DT 5,6 NN 6,7 log(P(PRP → “I”)) I saw a girl with a telescope
207
超グラフの探索法 構文解析=超グラフの最もスコアの小さい木を探索 グラフではビタビアルゴリズムを利用
前向きステップ: 各ノードまでの最短経路を計算 後ろ向き: 最短経路を復元 超グラフもほとんど同等のアルゴリズム 内ステップ: 各ノードの最小部分木のスコアを計算 外ステップ: スコア最小の木を復元
208
ノードの内ステップ VP1,7の最小スコアを計算 VP 1,7 e2 NP 2,7 e1 PP 4,7 NP 2,4 VBD 1,2
209
ノードの内ステップ VP1,7の最小スコアを計算 e2 e1 score(e1) = -log(P(VP → VBD NP PP)) +
best_score[VBD1,2] + best_score[NP2,4] + best_score[NP2,7] score(e2) = -log(P(VP → VBD NP)) + best_score[VBD2,7] VP 1,7 e2 NP 2,7 e1 PP 4,7 NP 2,4 VBD 1,2
210
ノードの内ステップ VP1,7の最小スコアを計算 e2 e1 score(e1) = -log(P(VP → VBD NP PP)) +
best_score[VBD1,2] + best_score[NP2,4] + best_score[NP2,7] score(e2) = -log(P(VP → VBD NP)) + best_score[VBD2,7] best_edge[VB1,7] = argmine1,e2 score VP 1,7 e2 NP 2,7 e1 PP 4,7 NP 2,4 VBD 1,2
211
ノードの内ステップ VP1,7の最小スコアを計算 e2 e1 score(e1) = -log(P(VP → VBD NP PP)) +
best_score[VBD1,2] + best_score[NP2,4] + best_score[NP2,7] score(e2) = -log(P(VP → VBD NP)) + best_score[VBD2,7] best_edge[VB1,7] = argmine1,e2 score best_score[VB1,7] = score(best_edge[VB1,7]) VP 1,7 e2 NP 2,7 e1 PP 4,7 NP 2,4 VBD 1,2
212
文法からの超グラフ構築 超グラフは解けるが、構文解析で与えられるのは 解くための超グラフをどうやって構築するか? 文法 文
P(S → NP VP) = 0.8 P(S → PRP VP) = 0.2 P(VP → VBD NP PP) = 0.6 P(VP → VBD NP)= 0.4 P(NP → DT NN) = 0.5 P(NP → NN) = 0.5 P(PRP → “I”) = 0.4 P(VBD → “saw”) = 0.05 P(DT → “a”) = 0.6 ... I saw a girl with a telescope
213
CKYアルゴリズム CKY(Cocke-Kasami-Younger)アルゴリズムは文法に基 づいてハイパーグラフを構築して解く 文法はチョムスキー標準形(CNF) ルールの右側は非終端記号2つもしくは終端記号1つ この条件を満たさないルールは変更可能 OK OK Not OK! S → NP VP S → PRP VP VP → VBD NP PRP → “I” VBD → “saw” DT → “a” VP → VBD NP PP NP → NN NP → PRP VP → VBD NP_PP NP_PP → NP PP VP → VBD NP PP NP → PRP + PRP → “I” NP → “I”
214
CKYアルゴリズム まずは終端記号のルールをスコア付きで展開 I saw him PRP 0,1 NP 0,1 VP 1,2 VBD 1,2
2,3 NP 2,3 1.0 0.5 3.2 1.4 2.4 2.6 I saw him
215
CKYアルゴリズム 0,2のノードを全て展開 I saw him S 0,2 SBAR 0,2 4.7 5.3 PRP 0,1 NP 0,1
VP 1,2 VBD 1,2 PRP 2,3 NP 2,3 1.0 0.5 3.2 1.4 2.4 2.6 I saw him
216
CKYアルゴリズム 1,3のノードを全て展開 I saw him S 0,2 SBAR 0,2 VP 1,3 4.7 5.3 5.0 PRP
0,1 NP 0,1 VP 1,2 VBD 1,2 PRP 2,3 NP 2,3 1.0 0.5 3.2 1.4 2.4 2.6 I saw him
217
CKYアルゴリズム 0,3のノードを全て展開 I saw him SBAR 0,3 S 0,3 6.1 5.9 S 0,2 SBAR 0,2
VP 1,3 4.7 5.3 5.0 PRP 0,1 NP 0,1 VP 1,2 VBD 1,2 PRP 2,3 NP 2,3 1.0 0.5 3.2 1.4 2.4 2.6 I saw him
218
CKYアルゴリズム 文を全てカバーする「S」ノードを見つけて、エッジを 展開 I saw him SBAR 0,3 S 0,3 6.1
5.9 S 0,2 SBAR 0,2 VP 1,3 4.7 5.3 5.0 PRP 0,1 NP 0,1 VP 1,2 VBD 1,2 PRP 2,3 NP 2,3 1.0 0.5 3.2 1.4 2.4 2.6 I saw him
219
CKYアルゴリズム 左の子、右の子を再帰的に展開 I saw him SBAR 0,3 S 0,3 6.1 5.9 S 0,2 SBAR
VP 1,3 4.7 5.3 5.0 PRP 0,1 NP 0,1 VP 1,2 VBD 1,2 PRP 2,3 NP 2,3 1.0 0.5 3.2 1.4 2.4 2.6 I saw him
220
CKYアルゴリズム 左の子、右の子を再帰的に展開 I saw him SBAR 0,3 S 0,3 6.1 5.9 S 0,2 SBAR
VP 1,3 4.7 5.3 5.0 PRP 0,1 NP 0,1 VP 1,2 VBD 1,2 PRP 2,3 NP 2,3 1.0 0.5 3.2 1.4 2.4 2.6 I saw him
221
CKYアルゴリズム 左の子、右の子を再帰的に展開 I saw him SBAR 0,3 S 0,3 6.1 5.9 S 0,2 SBAR
VP 1,3 4.7 5.3 5.0 PRP 0,1 NP 0,1 VP 1,2 VBD 1,2 PRP 2,3 NP 2,3 1.0 0.5 3.2 1.4 2.4 2.6 I saw him
222
CKYアルゴリズム 左の子、右の子を再帰的に展開 I saw him SBAR 0,3 S 0,3 6.1 5.9 S 0,2 SBAR
VP 1,3 4.7 5.3 5.0 PRP 0,1 NP 0,1 VP 1,2 VBD 1,2 PRP 2,3 NP 2,3 1.0 0.5 3.2 1.4 2.4 2.6 I saw him
223
構文解析ツール 英語の句構造解析器: Stanford Parser: 頑健に解析が可能
Berkeley Parser: Stanfordより高性能 日本語は係り受け解析が主流: EDA: 単語ベース係り受け解析、KyTeaと利用 CaboCha: 文節ベース係り受け解析MeCabと利用 係り受け解析結果は変更可能
224
演習:英語の構文解析 構文解析する例文をファイルに書き込む Stanford Parserで英語の構文解析を行い、表示する
$ echo "I saw a girl with a telescope." > mydata/to-parse.en $ usr/local/stanford-parser /lexparser.sh mydata/to-parse.en > mydata/parsed.en $ head mydata/parsed.en (ROOT (S (NP (PRP I)) (VP (VBD saw) (NP (DT a) (NN girl)) (PP (IN with) (NP (DT a) (NN telescope)))) (. .)))
225
階層的フレーズベース翻訳
226
階層的フレーズベース翻訳(Hiero) [Chiang 07]
フレーズベース翻訳は連続した単語列の変換 しかし、連続しない良質なパターンも数多くある これを利用するのは階層的フレーズベース he visited the white house 彼 は ホワイト ・ ハウス を 訪問 した 例: X1 visited X2 → X1 は X2 を 訪問 した X1 that was X2 → X2 で あった X1
227
フレーズベースとの差 学習の変更:不連続なフレーズも抽出 訳出の変更:構文解析と類似した訳出アルゴリズム
228
不連続なフレーズの抽出 ホ ワ ハ イ ウ 訪し 彼はト・スを問た 1.まずは連続フレーズを抽出 he → 彼 he → 彼 は
ホ ワ ハ イ ウ 訪し 彼はト・スを問た 1.まずは連続フレーズを抽出 he → 彼 he → 彼 は the white house → ホワイト・ハウス visited → 訪問 した he visited the white house → 彼 は ホワイト・ハウス を 訪問 した … he visited the white house 2.一部を変数に置き換える the X1 house → X1・ハウス he X1 the white house → 彼 は ホワイト・ハウス を X1 he visited X1 → 彼 は X1 を 訪問 した
229
階層的フレーズベース デコーディング he visited the white house 超グラフのスコア最大の木を探索することで訳出
まずは文にマッチするルールを探索 he visited the white house 原言語 目的言語 スコア he 彼 he 彼 は X1 visited X2 X1 は X2 を 訪問 した 1.4 X1 visited X2 X1 は X2 を 訪ねた 0.4 the white house ホワイト ・ ハウス 1.5 the X1 house X1 家 white 白い
230
階層的フレーズベース デコーディング ルールとその関係を表す超グラフを作成 X0,5 X2,5 the X1 house/X1 家:-0.1
X1 visited X2/ X1 は X2 を 訪問 した:1.4 X1 visited X2/ X1 は X2 を 訪ねた:0.4 X0,5 X2,5 the white house/ ホワイト・ハウス:1.5 the X1 house/X1 家:-0.1 X0,1 X3,4 he/彼:-1.5 he/彼 は:-4.2 white/白い:-0.3
231
階層的フレーズベース デコーディング スコア最大の木を求める X0,5 X2,5 the X1 house/X1 家:-0.1 X0,1
X1 visited X2/ X1 は X2 を 訪問 した:1.4 X1 visited X2/ X1 は X2 を 訪ねた:0.4 X0,5 X2,5 the white house/ ホワイト・ハウス:1.5 the X1 house/X1 家:-0.1 X0,1 X3,4 he/彼:-1.5 he/彼 は:-4.2 white/白い:-0.3
232
階層的フレーズベース デコーディング スコア最大の木による目的言語訳を出力 彼 は ホワイト ・ ハウス を 訪問 した X0,5 X2,5
X1 visited X2/ X1 は X2 を 訪問 した:1.4 X1 visited X2/ X1 は X2 を 訪ねた:0.4 X0,5 X2,5 the white house/ ホワイト・ハウス:1.5 the X1 house/X1 家:-0.1 X0,1 X3,4 he/彼:-1.5 he/彼 は:-4.2 white/白い:-0.3 彼 は ホワイト ・ ハウス を 訪問 した
233
言語モデルを考慮したデコーディング 言語モデルの考慮: 各ノードの前n-1、後ろn-1単語を保持する必要 X0,5,彼|した
X1 visited X2/ X1 は X2 を 訪問 した:1.4 X1 visited X2/ X1 は X2 を 訪ねた:0.4 X2,5,白い|家 X2,5,ホワイト|ハウス the X1 house/X1 家:-0.1 the white house/ ホワイト・ハウス:1.5 X0,1,彼|彼 X0,1,彼|は X3,4,白い|白い he/彼:-1.5 he/彼 は:-4.2 white/白い:-0.3
234
言語モデルを考慮したデコーディング 探索空間が拡大! 近似的な探索が必要 ビーム探索を導入:原言語文の文字列に対する仮説数の 最大値を設ける
Cube Pruning:子の組み合わせの効率化[Chiang 07] 並べ替えの制限
235
演習:階層的フレーズベースモデルの学習 Mosesの通常の学習に 「-hierarchical -glue-grammar -max-phrase-length 5」 を追加するだけ モデルを閲覧:trainhiero/model/rule-table.gz $ mosesdecoder/scripts/training/train-model.perl -hierarchical -glue-grammar -max-phrase-length 5 -parallel -external-bin-dir $HOME/alagin/usr/local/giza-pp -root-dir $HOME/alagin/trainhiero -corpus $HOME/alagin/mydata/low/kyoto-train.small -f en -e ja -alignment grow-diag-final-and -reordering msd-bidirectional-fe -lm 8:3:$HOME/alagin/lm/kyoto-train.ja.blm &> traininghiero.log
236
統語ベース機械翻訳
237
統語ベース機械翻訳[Sato+ 90] 今まで紹介した手法は構文解析を利用しない
構文解析は句を同定し、曖昧性を解消 →訳の質向上につながると考えられる 原言語でも目的言語でも利用可能
238
翻訳モデルの種類 to string string tree tree dependency dependency
he visited the white house 彼 は ホワイト ハウス を 訪問 した tree tree S S VP VP PP PP NP NP NP to NP NP VP PRP VBD DT NNP NNP N P N N P N V he visited the white house 彼 は ホワイト ハウス を 訪問 した dependency dependency dobj subj det nsubj n n n dobj n n he visited the white house 彼 は ホワイト ハウス を 訪問 した
239
string-to-tree翻訳 [Galley+ 06]
目的言語側のみで統語情報を利用 階層的フレーズベースとほとんど同じ仕組み ルールの目的言語側に句のラベルを付与する 原言語 目的言語 句 スコア he 彼 NP -1.5 he 彼 は NP -4.2 X1 visited X2 NP1 は NP2 を 訪問 した S 1.4 X1 visited X2 NP1 は NP2 を 訪ねた S 0.4 the white house ホワイト ・ ハウス NP 1.5 the X1 house ADJ1 家 NP -0.1 white 白い ADJ -0.3
240
string-to-tree翻訳 [Galley+ 06]
デコーディングの際は目的言語の句ラベルを考慮 ルールと合わないラベルのノードを利用しない (NPのところにADJを入れない) X1 visited X2/ NP1 は NP2 を 訪問 した:1.4 X1 visited X2/ NP1 は NP2 を 訪ねた:0.4 S0,5 NP2,5 the white house/ ホワイト・ハウス:1.5 the X1 house/ADJ1 家:-0.1 NP0,1 ADJ3,4 he/彼:-1.5 he/彼 は:-4.2 white/白い:-0.3
241
tree-to-string翻訳 原言語側のみに統語情報を利用 2種類の方式 同時構文解析+翻訳:仕組みはstring-to-treeと同様
+構文解析誤りに比較的頑健 - 遅い - 並べ替え制限が必要 事前構文解析:事前に解析を行ってから翻訳 + 速い + 長距離の並べ替えは問題ない - 解析誤りの影響大
242
句構造に基づく翻訳 [Liu+ 06] 構文木上のルールマッチングを行う x1 with x0 VP0-5 VP2-5 PP0-1
x1 x0 N0 P1 PP2-3 VP4-5 友達 と N2 P3 V4 SUF5 ate ご飯 を 食べ た a meal a friend
243
句構造に基づく翻訳 [Liu+ 06] ルールを表す超グラフを作 成 デコーディングは階層的フ レーズベースと類似 VP0-5 VP2-5
PP0-1 N0 P1 PP2-3 VP4-5 友達 と N2 P3 V4 SUF5 ご飯 を 食べ た VP0-5 x1 with x0: 0.56 VP2-5 x1 x0: 0.6 N0 VP4-5 friend: 0.12 N2 ate: 0.5 my friend: 0.3 a meal: 0.5 rice: 0.3
244
係り受け構造に基づく翻訳 [Quirk+ 05]
dependency-to-string翻訳もある dobj det nsubj nsubj dobj n he visited the white house X1 visited X2 X1 X2 訪問 した 彼 は ホワイト ハウス を 訪問 した
245
係り受け構造に基づく翻訳 [Sato+ 90, Nakazawa+ 06]
京大のシステムはdependency-to-dependencyで両言語 に対する係り受けを利用 dobj det nsubj nsubj dobj n he visited the white house X1 visited X2 彼 は ホワイト ハウス を 訪問 した X1 X2 訪問 した n n n dobj dobj n subj
246
句構造 vs. 係り受け構造 X1 X3 X2 句構造:語彙化されていないルールも利用可→一般性
VP X1 X3 X2 X1:NP X3:NP (SVO → SOV) X2:VBD 係り受け構造:関係のある単語は木上近いところにある →語彙選択に強い? dobj dobj run a program run a marathon
247
統語情報を使った翻訳の実装 ツール: 同時パージング・翻訳:Mosesは{tree|string}-to- {tree|string}を実装
事前パージング:現在良いオープンソースの実装はない (近日公開?) (少し複雑なため本セミナーで演習は行わない)
248
前並べ替え
249
前並べ替え[Xia+ 04] フレーズベース翻訳は様々な魅力があるが、長距離の並 べ替えは弱点
前並べ替え:まず原言語文を目的言語文に近い順番に並 べ替え フレーズベース翻訳の精度向上が見込まれる F= 彼 は ご飯 を 食べた F’= 彼 は 食べた ご飯 を E= he ate rice
250
統語情報を用いた前並べ替え 原言語の構文木に対して並べ替えルールを定義 kare wa gohan o tabeta kare wa
S VP D= waP oP S D'= PRN wa N o V VP waP oP F= kare wa gohan o tabeta PRN wa V N o F'= kare wa tabeta gohan o E= he ate rice
251
非常にシンプルなルールで大きな効果 数ルールでドイツ語英語翻訳の精度を大幅に向上 [Collins+ 05]
英語からSOV言語への翻訳のためのルール[Xu+ 08] 英日翻訳において「統語的主辞を後ろに持っていけば良 い」[Isozaki+ 10]
252
Head Finalization [Isozaki+ 10]
253
前並べ替えとtree-to-string
前並べ替えは句をまたぐ翻訳ルールも利用可能 VP VP PP PP X が 高い X が 好き X is high likes X
254
統語情報を利用しない前並べ替え [Neubig+ 12]
Inversion Transduction Grammarを利用 言語非依存、対訳データから学習可能 laderツールキットとして実装 S I D= S S D'= S T T T T T I S S F= kare wa gohan o tabeta T T T T T F'= kare wa tabeta gohan o
255
演習:ITGを使った前並べ替え laderの英日翻訳用モデルを利用
usr/local/lader-model-kftt-en-ja/run-lader-en-ja.shを編集 LADER_DIRを「$HOME/alagin/usr/local/lader-0.1.3」に usr/local/lader-model-kftt-en-ja/kftt-en-ja.modを編集 「/home/ユーザ/alagin/usr/local/lader-0.1.3/kftt-en-ja.pt」のようにフルパスを kftt-en-ja.ptのところに置き換える 並べ替えるファイルを作成し、並べ替える $ echo "kiyomizu-dera temple is one of the famous sites in kyoto ." > mydata/to-parse.en $ usr/local/lader-model-kftt-en-ja/run-lader-en-ja.sh kiyomizu-dera temple kyoto in famous sites the of one is . 清水 寺 は 京都 の 有名 な 場所 の 一つ である 。
256
実用的な話
257
翻訳システムの改良過程 初期システムを作成 繰り返し: 翻訳を生成し、人手評価を行う 最も問題となっている箇所を定量的に分析
その問題を解決する方法を調べる 実装して導入する 確認のため自動評価を利用
258
オープンソースソフトの使い方 機械翻訳はオープンソースソフトで恵まれている 使い方がよく分からない時は遠慮なく作者に連絡
Mosesのメーリングリスト
259
翻訳がうまく行かない理由 BLEUが1.0ぐらい、何が間違っている? よくある犯人: データの行数が合っていない
前処理を行っていない、学習とテストで違う ログファイルを読み、エラーを探す
260
現在・これからの機械翻訳
261
日英翻訳精度の一例 システム: フレーズベース、前並べ替え(lader)、tree-to- string
アライメントGIZA++、チューニングMERT データ: 京都関連Wikipedia文、学習には~350k文 評価: BLEU, RIBES, Acceptability (0-5) 構文解析日:KyTea+EDA、英:Egret
262
実験結果(英日)
263
実験結果(日英)
264
英日 F2S vs. PBMT+Pre Input:
Department of Sociology in Faculty of Letters opened . PBMT+Pre: 開業 年 文学 部 社会 学科 。 F2S: 文学 部 社会 学 科 を 開設 。 F2Sが名詞句+動詞を正しく解釈
265
英日 F2S vs. PBMT+Pre Input:
Afterwards it was reconstructed but its influence declined . PBMT+Pre: その 後 衰退 し た が 、 その 影響 を 受け て 再建 さ れ た もの で あ る 。 F2S: その 後 再建 さ れ て い た が 、 影響 力 は 衰え た 。 F2Sが2つの動詞句の関係を正しく復元
266
(NP (NP Introduction) (PP of KANSAI THRU PASS) (NP Miyako) (NP Card))
英日 F2S vs. PBMT+Pre Input: Introduction of KANSAI THRU PASS Miyako Card PBMT+Pre: スルッと kansai 都 カード の 導入 F2S: 伝来 スルッと KANSAI 都 カード F2Sの構文解析誤り (NP (NP Introduction) (PP of KANSAI THRU PASS) (NP Miyako) (NP Card))
267
“に は … 関係 が” が正しく“related to”と翻訳
日英 T2S vs. PBMT+Pre Input: 史実 に は 直接 の 関係 は な い 。 PBMT+Pre: in the historical fact is not directly related to it . T2S: is not directly related to the historical facts . “に は … 関係 が” が正しく“related to”と翻訳
268
日英 T2S vs. PBMT+Pre Input:
九条 道家 は 嫡男 ・ 九条 教実 に 先立 た れ 、 次男 ・ 二条 良実 は 事実 上 の 勘当 状態 に あ っ た 。 PBMT+Pre: michiie kujo was his eldest son and heir , norizane kujo , and his second son , yoshizane nijo was disinherited . T2S: michiie kujo to his legitimate son kujo norizane died before him , and the second son , nijo yoshizane was virtually disowned . T2Sが句を正しく分割
269
T2Sの構文解析誤り(“Yamana”が1つの名詞句として解釈)
日英 T2S vs. PBMT+Pre Input: 日本 語 日本 文学 科 1474 年 ~ 1478 年 - 山名 政 豊 PBMT+Pre: the department of japanese language and literature in 1474 to masatoyo yamana T2S: japanese language and literature masatoyo yamana 1474 shokoku-ji in - T2Sが句をまたぐルールの抽出が失敗 T2Sの構文解析誤り(“Yamana”が1つの名詞句として解釈)
270
現在の機械翻訳は何が得意? 多くの言語対で実用的なレベル 特に英仏、日韓のような近い言語対 フレーズベース翻訳が力を発揮 大規模の対訳データ
対訳の言語資源が豊富な言語間は高精度な翻訳 Webなどから対訳データを大量に収集できる分野 専門用語と慣用句
271
現在の機械翻訳は何が苦手? 統語や活用の形態が大きく異なる言語対 統語情報を用いた手法で改善を図れる が…、構文解析誤りが翻訳の精度を悪化
大きく異なる言語対では単語対応が取りにくい ローカルな情報で解決できない問題 活用の一致、文書の一貫性 大規模な学習コーパスが存在しない場合 少数言語 対訳データが存在しない分野、書き方(口語) 英語を含まない言語対
272
参考文献
273
参考文献 J. Albrecht and R. Hwa. A re-examination of machine learning approaches for sentence-level mt evaluation. In Proc. ACL, pages , 2007. V. Ambati, S. Vogel, and J. Carbonell. Active learning and crowdsourcing for machine translation. Proc. LREC, 7: , 2010. S. Banerjee and A. Lavie. METEOR: An automatic metric for MT evaluation with improved correlation with human judgments. In Proc. ACL Workshop, 2005. Y. Bengio, H. Schwenk, J.-S. Senecal, F. Morin, and J.-L. Gauvain. Neural probabilistic language models. In Innovations in Machine Learning, volume 194, pages T. Brants, A. C. Popat, P. Xu, F. J. Och, and J. Dean. Large language models in machine translation. In Proc. EMNLP, pages , 2007. P. F. Brown, V. J. Pietra, S. A. D. Pietra, and R. L. Mercer. The mathematics of statistical machine translation: Parameter estimation. Computational Linguistics, 19: , 1993. C. Callison-Burch, P. Koehn, C. Monz, and O. Zaidan. Findings of the 2011 workshop on statistical machine translation. In Proc. WMT, pages 22-64, 2011. M. Carpuat and D. Wu. How phrase sense disambiguation outperforms word sense disambiguation for statistical machine translation. In Proc. TMI, pages 43-52, 2007. D. Cer, C. Manning, and D. Jurafsky. The best lexical metric for phrasebased statistical MT system optimization. In NAACL HLT, 2010. P.-C. Chang, M. Galley, and C. D. Manning. Optimizing Chinese word segmentation for machine translation performance. In Proc. WMT, 2008. E. Charniak, K. Knight, and K. Yamada. Syntax-based language models for statistical machine translation. In MT Summit IX, pages 40-46, 2003. S. Chen. Shrinking exponential language models. In Proc. NAACL, pages , 2009.
274
参考文献 D. Chiang. Hierarchical phrase-based translation. Computational Linguistics, 33(2), 2007. T. Chung and D. Gildea. Unsupervised tokenization for machine translation. In Proc. EMNLP, 2009. M. Collins, P. Koehn, and I. Kucerova. Clause restructuring for statistical machine translation. In Proc. ACL, 2005. J. DeNero, A. Bouchard-Cote, and D. Klein. Sampling alignment structure under a Bayesian translation model. In Proc. EMNLP, 2008. J. DeNero and D. Klein. Tailoring word alignments to syntactic machine translation. In Proc. ACL, volume 45, 2007. K. Duh, K. Sudoh, X. Wu, H. Tsukada, and M. Nagata. Learning to translate with multiple objectives. In Proc. ACL, 2012. A. Fraser and D. Marcu. Semi-supervised training for statistical word alignment. In Proc. ACL, pages , 2006. M. Galley, J. Graehl, K. Knight, D. Marcu, S. DeNeefe, W. Wang, and I. Thayer. Scalable inference and training of context-rich syntactic translation models. In Proc. ACL, pages , 2006. K. Ganchev, J. V. Graca, and B. Taskar. Better alignments = better translations? In Proc. ACL, 2008. J. T. Goodman. A bit of progress in language modeling. Computer Speech & Language, 15(4), 2001. I. Goto, B. Lu, K. P. Chow, E. Sumita, and B. K. Tsou. Overview of the patent machine translation task at the ntcir-9 workshop. In Proceedings of NTCIR, volume 9, pages , 2011. A. Haghighi, J. Blitzer, J. DeNero, and D. Klein. Better word alignments with supervised ITG models. In Proc. ACL, 2009.
275
参考文献 M. Hopkins and J. May. Tuning as ranking. In Proc. EMNLP, 2011.
H. Isozaki, T. Hirao, K. Duh, K. Sudoh, and H. Tsukada. Automatic evaluation of translation quality for distant language pairs. In Proc. EMNLP, pages , 2010. H. Isozaki, K. Sudoh, H. Tsukada, and K. Duh. Head nalization: A simple reordering rule for sov languages. In Proc. WMT and MetricsMATR, 2010. J. H. Johnson, J. Martin, G. Foster, and R. Kuhn. Improving translation quality by discarding most of the phrasetable. In Proc. EMNLP, pages , 2007. P. Koehn, A. Axelrod, A. B. Mayne, C. Callison-Burch, M. Osborne, and D. Talbot. Edinburgh system description for the 2005 IWSLT speech translation evaluation. In Proc. IWSLT, 2005. P. Koehn, F. J. Och, and D. Marcu. Statistical phrase-based translation. In Proc. HLT, pages 48-54, 2003. P. Koehn and J. Schroeder. Experiments in domain adaptation for statistical machine translation. In Proc. WMT, 2007. P. Liang, A. Bouchard-C^ote, D. Klein, and B. Taskar. An end-to-end discriminative approach to machine translation. In Proc. ACL, pages , 2006. Y. Liu, Q. Liu, and S. Lin. Tree-to-string alignment template for statistical machine translation. In Proc. ACL, 2006. C.-k. Lo and D. Wu. Meant: An inexpensive, high-accuracy, semiautomatic metric for evaluating translation utility based on semantic roles. In Proc. ACL, pages , 2011. W. Macherey, F. Och, I. Thayer, and J. Uszkoreit. Lattice-based minimum error rate training for statistical machine translation. In Proc. EMNLP, 2008. D. Marcu and W. Wong. A phrase-based, joint probability model for statistical machine translation. In Proc. EMNLP, 2002.
276
参考文献 S. Matsoukas, A.-V. I. Rosti, and B. Zhang. Discriminative corpus weight estimation for machine translation. In Proc. EMNLP, pages , 2009. H. Mi, L. Huang, and Q. Liu. Forest-based translation. In Proc. ACL, pages , 2008. R. Moore. Fast and accurate sentence alignment of bilingual corpora. Machine Translation: From Research to Real Users, pages , 2002. T. Nakazawa, K. Yu, D. Kawahara, and S. Kurohashi. Example-based machine translation based on deeper NLP. In Proc. IWSLT, pages 6470, 2006. G. Neubig, T. Watanabe, and S. Mori. Inducing a discriminative parser to optimize machine translation reordering. In Proc. EMNLP, pages , Korea, July 2012. G. Neubig, T. Watanabe, S. Mori, and T. Kawahara. Machine translation without words through substring alignment. In Proc. ACL, pages , Jeju, Korea, July 2012. G. Neubig, T. Watanabe, E. Sumita, S. Mori, and T. Kawahara. An unsupervised model for joint phrase alignment and extraction. In Proc. ACL, pages , Portland, USA, June 2011. S. Niessen, H. Ney, et al. Morpho-syntactic analysis for reordering in statistical machine translation. In Proc. MT Summit, 2001. F. J. Och. Minimum error rate training in statistical machine translation. In Proc. ACL, 2003. F. J. Och and H. Ney. Discriminative training and maximum entropy models for statistical machine translation. In Proc. ACL, 2002. K. Papineni, S. Roukos, T. Ward, and W.-J. Zhu. BLEU: a method for automatic evaluation of machine translation. In Proc. COLING, pages , 2002. C. Quirk and A. Menezes. Dependency treelet translation: the convergence of statistical and example-based machine-translation? Machine Translation, 20(1):43-65, 2006.
277
参考文献 P. Resnik and N. A. Smith. The web as a parallel corpus. Computational Linguistics, 29(3): , 2003. S. Sato and M. Nagao. Toward memory-based translation. In Proceedings of the 13th conference on Computational linguistics-Volume 3, pages Association for Computational Linguistics, 1990. J. Suzuki, K. Duh, and M. Nagata. Distributed minimum error rate training of smt using particle swarm optimization. In Proc. IJCNLP, pages , 2011. S. Vogel, H. Ney, and C. Tillmann. HMM-based word alignment in statistical translation. In Proc. COLING, 1996. T. Watanabe, J. Suzuki, H. Tsukada, and H. Isozaki. Online largemargin training for statistical machine translation. In Proc. EMNLP, pages , 2007. F. Xia and M. McCord. Improving a statistical MT system with automatically learned rewrite patterns. In Proc. COLING, 2004. 森 信介, 土屋 雅稔, 山地 治, and 長尾 真. 確率的モデルによる仮名漢字変換. In 情報処理学会第125 回自然言語処理研究会(NL-125), 1998.
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.