2009年02月03日

kaj を訳し分ける (1)

#1 La filo trinkas kafon kaj teon.
#2 La patrino estis juna kaj bela.
#3 Ni kantis kaj dancis.
#4 La patro trinkas kafon, kaj la patrino trinkas teon.

上の文を「トラちゃん95」は下のように訳します。

#1 息子はコーヒーと茶を飲む。
#2 母は若いそして美しかった。
#3 私達は歌ったそして踊った。
#4 父はコーヒーを飲む,そして母は茶を飲む。

#3と#4は「私達は歌い(そして)踊った」「父はコーヒーを飲み(そして)母は茶を飲む」となれば申し分ないのでしょうが、今のままでもアクセプタブルだと思います。

問題は#2で、これを合格とするのは疑問が残ります。一方、私がなでしこ版のプログラムに取り組む前に作ってみた BASIC版のプログラムは、

#1 息子はコーヒーをそして茶を飲む。
#2 母は若いそして美しいであった。

という、クオリティーのさらに低い訳文を出力します。#1は「トラちゃん95」と同じように、そして#2は「母は若く(そして)美しかった」と訳せるようプログラムを改良したいと思います。

posted by アキラ at 20:41| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2009年02月02日

学習する通訳プログラムの一例

コンピューターYが人間Xとこんなふうに対話して、ほとんど白紙の状態から語彙や文法の知識を段々と身につけていく。そんなシステムができたら面白いなと思いました。

X:通訳! Birds catch insects.
Y:birds?
X:birdoj
Y:catch?
X:kaptas
Y:insects?
X:insektoj
Y:Birdoj kaptas insektoj. こんな訳でいいですか?
X:よくない
Y:どこがよくないですか?
X:insektoj
Y:どんなふうにすればいいんですか?
X:insektojn
Y:Birdoj kaptas insektojn. これでいいですか?
X:いい
Y:次は何ですか?
X:通訳! Birds caught insects.
Y:caught?
X:kaptis
Y:Birdoj kaptis insektojn. こんな訳でいいですか?
X:いい

posted by アキラ at 19:01| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2009年02月01日

文法を学習するプログラム

BASICなどのプログラミングをおぼえたばかりの人が作るゲームの中に「アニマル」というのがあります。「20の扉」形式で動物の名前を当てるゲームですが、どんなものなのか具体的に知らない人はグーグルなどで「animal guessing game」というキーワードで検索すればいっぱい出てきます(私のおすすめは Braingle: Zoo Keeper Game)。

このゲームのような簡単なプログラムでも、語彙を学習するプログラムを作ることはできます。では、文法はどうでしょうか。

文法を学習して、翻訳のテクニックを少しずつ身につけていくプログラム。そういうプログラムを作るのはどれくらいむずかしいのでしょうか。


posted by アキラ at 23:27| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2009年01月31日

上野式のまぎらわしさ

誰もが英語の授業で学んだ5文型。
それをもじったシステムが上野さんの翻訳プログラムでは使われています。

学校文法の表記を大文字で行ない、上野さんの方式を小文字で表記すると

SVO SVOO
svo svgo

上野さんの文型表記にもsvooというパターンはありますが、それは学校文法のSVOOとは違っています。上野式では目的語が2つの単語で構成されていることを意味するのであり、学校文法の SVOに相当するものなのです。

The girl bought the book. = ssvoo

posted by アキラ at 23:48| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2009年01月30日

一長一短

私が英語を日本語に翻訳するプログラムを作ろうとして最初に思いついたアイデアは、文末から文頭へ逆向きに訳すことを基本とするものでした。今から20年前、パソコン雑誌で上野さんの記事を目にした頃のことです。

中学の英語の授業で習う5文型のように単純な英文では、あまりこのアプローチのありがたみを実感することはないと思います。例えば、

#1 Mariko was hungry.
#2 Mariko saw crabs.

文型は SVC、SVOで、上野式のように

SVC → SCV
SVO → SOV

といった変換ルールで語順を操作するのと違わないように見えます。ところが

#3 Mariko saw crabs at the bottom of the sea.

のように SVOの後に長い尻尾のような語句が続く文では大きな違いが出ます。

sea(海)the of(の)bottom(底)the at(で)crabs(蟹)saw(見た)

のように簡単に訳文を作れてしまうのに対して、上野式はこの種の文が本当に苦手で、事実上お手上げです。

では私の思いついた方法に弱点はないのかと言えば、そうは問屋がおろさないケースがやっぱりあるのです。

#4 Mariko saw big red crabs.

上野式では、この文型を

SVooo → SVO → SOV

と難なく処理しますが、これを単純に文末から文頭へ逆向きに訳したのでは「蟹・赤い・大きい・見た」となって正しい訳文とはほど遠いものになってしまいます。

つまり私の方法では、句は後ろから前へ訳していくが、個々の句の中の単語は普通に前から後ろへ訳すという二重の面倒な操作をしなければならないのです。

そして、これと比べれば重要度は低いですが、

#5 Mariko went from Tokyo to Sapporo by airplane.

の from 〜 to 〜 のように後ろから前へという順番で訳すと不自然な文章ができあがってしまう場合もあります。

こちらを直し、あちらを修整しといったことの繰り返しによってプログラムの特徴だった単純明快さがどんどん失われていくのにつれて、私の意欲もおとろえていき、プログラムの開発は長い、長い冬眠に入ってしまったのでした。

posted by アキラ at 18:46| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2009年01月29日

「山の頂きは雲の上にある」と訳せるだろうか?

弱点をカバーするように処置した結果、"La libro estas sur la tablo."といった文も「本はテーブルの上にある」と正しく訳せるようになりました。

めでたし、めでたしと言いたいところですが、疑問がわいてきました。この文は sur la tabloを sur_la_tabloと書き換えた上で副詞として登録(品詞コードは 6)して、SVL → SLVの変換ルールを適用したものです(L は副詞句)。次の文は同じようにして訳せるでしょうか?

La supro de la granda monto estas super la nuboj.

"super la nuboj"は最初の文と同じように処理されるからいいのですが、"de la granda monto"はそんなわけにはいきません。これは副詞句ではなくて、先行する名詞を修飾するフレーズだからです。

この辺が上野式の限界なのでしょうか?


posted by アキラ at 21:13| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2009年01月28日

これで上野式の弱点がカバーできる

大辞典・小辞典のダブル辞書方式を採用すれば、上野さんの翻訳システムの最大の弱点がカバーできます。今日になってそのことに気がつきました。

前置詞を含む文を訳そうとすると明らかにボロが出てしまうので、前処理で問題を取り除くことにするのです。

We live there.
We live in Tokyo.

上野式は1番目の文はすんなり訳せますが、2番目のような文は苦手とします。だったら、その原因である"in Tokyo"を単純な副詞に変えてしまえばいい。「コロンブスの卵」的なアイデアでした。前処理する段階で原文を修正することとし、"in Tokyo"という句を"in_Tokyo"という語に置き換え、"in_Tokyo"を副詞として小辞典に自動的に登録してしまうのです。この小辞典は臨時ファイルだから翻訳が済めば消去されてしまいます。

"without milk"も"with milk and sugar"も、あたかもそれが一つの長い単語であるかのように扱うわけです。前処理のプログラムは少々肥大化しますが、たぶんこれが最もシンプルな解決策だと思います。


posted by アキラ at 19:00| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2009年01月27日

あっと驚くような方法

問題の文は次の2つです。

La filoj trinkas teon sen lakto.
Patrino trinkas kafon kun lakto kaj sukero.

トラちゃん95で訳してみると、このような翻訳になりました。

「息子はミルク無しで茶を飲む。」
「母はミルクそして砂糖で[と共に]コーヒーを飲む。」

訳語を一つにしぼれない単語(この場合は kunと kaj)をどう扱うかですが「で、と共に」のように併記するのが一つの方法。そして、もう一つの方法は kajの訳語のように敢えて一方を取って、他方を捨てる(「そして」を取って「と」を捨てる)という行き方です。むずかしいところをトラちゃん95はなかなかうまく切り抜けていると感心しました。

感心できないのは上野式で、上の例文のような文型を本当に翻訳する力はありません。なぜなら、

We drive for Tokyo next week.

を訳すためには辞書の中に

drive;j;ドライブする
for Tokyo;6;東京へ
next week;t;来週

のようなデータが登録されてなければならないからです。"next week"は仕方ないとして、"for Tokyo"のような語句が辞書になければならないというのはナンセンスです。主要な地名すべてとfor, to, in, atを組み合わせた語句が辞書に登録されていることを求める翻訳ソフト! 冗談だとしても馬鹿げています。

3回分の連載記事を端から端まで読み直してみたのですが、前置詞句を含む文を上野式で訳す場合には"for Tokyo", "without milk", "with milk", "with sugar", "with milk and sugar"のような語句を一つ一つ辞書に登録してやる以外に方法はありません。私は呆れてしまいました。


posted by アキラ at 20:28| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2009年01月26日

上野式で訳せる文型、訳せない文型

23日の「上野式システムの翻訳の手順」で説明したプログラム。
25日の「大辞典から小辞典を自動生成する」で作り方を紹介した辞書データ。
これらを組み合わせたシステムで、 Free Esperanto Course の Lesson 1 で使われているすべてのエスペラント文を日本語に訳すことができるかどうか、試してみました。

訳せたのは下記の文です。最後の5つの文が訳せていることに注目してほしいと思います。
Birdo kaptas insekton.
Birdoj kaptis insektojn.
Birdoj kaptos insektojn.
La birdoj kaptas la insektojn.
La birdo kaptis la insekton.
La knabinoj vidos la instruiston.
La instruisto vidis la knabinojn.
La birdoj vidis la insektojn.
La amiko vendos lakton.
La instruistoj forgesis la teon.
La knaboj faros la kukon.
La viroj vendis kukojn.
La viro vendis kukon.
Viro legas libron.
Libron legas viro.
Viro libron legas.
Libron viro legas.
Legas viro libron.
Legas libron viro.

訳せなかった文は2つあって、そこに上野式の最大の短所が現れているので、明日にでも詳しく書いてみるつもりです。


posted by アキラ at 22:54| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2009年01月25日

大辞典から小辞典を自動生成する

大辞典の中の次のようなデータから

birdo;1;鳥
insekto;1;虫
kapt;3;捕える,捕えた
granda;5;大きい

下記のような小辞典データを生成するプログラムを作ってみました。

訳語は「birdo=鳥
birdoj=鳥
birdon=鳥を
birdojn=鳥を
insekto=虫
insektoj=虫
insekton=虫を
insektojn=虫を
kaptas=捕える
kaptis=捕えた
kaptos=捕えるだろう
granda=大きい
grandaj=大きい
grandan=大きい
grandajn=大きい」
属性は「birdo=1s
birdoj=1l
birdon=es
birdojn=el
insekto=1s
insektoj=1l
insekton=es
insektojn=el
kaptas=3
kaptis=3p
kaptos=3f
granda=5s
grandaj=5l
grandan=ks
grandajn=kl」

翻訳しようとする文章を読み込んで単語リストを作るように拡張すれば、非常にシンプルな翻訳システムができあがったことになります。

そのソフトで、どれくらい込み入った文型が訳せるのか、具体的に調べたいと思います。

posted by アキラ at 22:41| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。