2009年02月22日

基本的なツールを作って HSPを習得する

HSPも「なでしこ」と同様にすんなり使い方がのみこめるだろうと考えていたのですが、思い通りにはいっていません。いまだに勝手がのみこめずフラストレーションを感じているような有様です。

駄目だとわかれば迂回するしかありません。岩壁をよじのぼるようなアプローチは止めにして、時間をかけて山道を登っていくことにします。

翻訳プログラムに関連する簡単なツールを作っていくことで HSPの使い方をおぼえていこうと思います。このブログも当面は HSPのお勉強ノートみたいになってしまうかもしれません。




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

2009年02月16日

日本語からの翻訳、主語と補語の数の一致

SVC構文で、SとCの数を一致させる問題はとりあえず解決しました。

【原文】
私は日本人です。
彼は学生です。
その女性は学生です。
マリアさんは学生です。
マリアとグロリアは学生です。
その家は小さいです。
そのケーキはとても甘いです。
私たちは日本人です。
私は日本人ではありません。
あなたは日本人ですか。
あなたたちは日本人ですか。

【訳文】
Mi estas japano.
Li estas studento.
La virino estas studento.
Maria estas studento.
Maria kaj Gloria estas studentoj.
La domo estas malgranda.
La kuko estas tre dolcxa.
Ni estas japanoj.
Mi ne estas japano.
Cxu vi estas japano?
Cxu vi estas japanoj?

次は形容詞の比較級、最上級(「マリオはジョンより背が高いです」や「マリオは彼らの中で一番背が高いです」)に取り組みたいと思います。



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

2009年02月14日

Chipmunk Basic, HSP, Mind

2つのプログラミング言語(フリーソフト)、なでしこと Tiny Basic for Windowsとで翻訳プログラムを作っていくつもりでしたが、選択肢を増やしたいと思います。

日本語→エスペラントについては、なでしこと Mindを使うものとします。

エスペラント→日本語については、Tiny Basic for Windowsに加えて Chipmunk Basicと HSPを使うものとします。

Tiny Basic for Windowsではランダム・ファイルが使えませんが、Chipmunk Basicでは使えます。Chipmunk Basicのもう一つの利点は、Windows版以外に、Mac OS版もあり、Linux版もあるというところです。

Chipmunk Basic

http://ja.wikipedia.org/wiki/Chipmunk_Basic

Hot Soup Processor (HSP)

http://ja.wikipedia.org/wiki/Hot_Soup_Processor

Mind

http://ja.wikipedia.org/wiki/Mind



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

2009年02月13日

日本語からの翻訳、初歩的な問題

【原文】
私は日本人です。
彼は学生です。
その女性は学生です。
マリアさんは学生です。
マリアとグロリアは学生です。
その家は小さいです。
そのケーキはとても甘いです。

【文を単語に分解】
私 は 日本人 です
彼 は 学生 です
その 女性 は 学生 です
マリア さん は 学生 です
マリア と グロリア は 学生 です
その 家 は 小さい です
その ケーキ は とても 甘い です

【訳文】
Mi japano estas.
Li studento estas.
La virino studento estas.
Maria studento estas.
Maria kaj Gloria studento estas.
La domo malgranda estas.
La kuko tre dolcxa estas.

まず語順は元のままで一語一語置き換えるだけのプログラムを作ってみました。日本語の文を単語に分解する作業が相当に面倒だったので、エスペラントへの翻訳は入口にたどりついた時点で一休みという格好です。

今回の例で明らかに問題なのは"Maria kaj Gloria studento estas." 主語と補語の数が一致していません。SVC構文ならではの問題です。

SOVの場合はSとOの境を見間違えることはないですが、SCVの場合、Cが形容詞であるとまぎらわしくなりそうです。



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

2009年02月10日

原文の語順を訳文に反映させることの是非

「母は蟹を食べた」をエスペラントに訳せば、普通は

Patrino mangxis krabon.

となるのでしょうが、日本語の語順に対応するように

Patrino krabon mangxis.

としても間違いではないことになっています。では「母は北海道で蟹を食べた」だったら、どうでしょう。 「北海道で」を意味する"en Hokajdo"は、文中のどこでも好きなところに置けるのでしょうか? 文頭や文末に置いて

Patrino krabon mangxis en Hokajdo.
En Hokajdo, patrino krabon mangxis.

とするのは問題はなさそうですが、主語の後に置いて

Patrino en Hokajdo krabon mangxis.

としても、意味は変わらないのでしょうか。"en Hokajdo"が直前の patrinoを修飾しているように見えてしまって、mangxisを修飾しているようには見えにくくなる恐れはないのでしょうか。その心配がないのであれば、上の文はきれいに日本語の語順に対応しているので、翻訳の手順は非常にシンプルになります。

「北海道で」は動詞の「食べた」しか修飾できないのに対して、"en Hokajdo"は副詞的にも形容詞的にもふるまえるところに問題の根っこがあります。日本語からエスペラントに訳した文の意味を取り違えられないようにするには、やはり誤った解釈を許すような余地をなくしてしまうのが一番です。

エスペラントでは主語と目的語と動詞の順番は自由に決められますが、語順の自由性はあくまでも三者の間での話であって、三者以外の語句が割り込んでくることまでは許容していないと思います(国連のコア・メンバーである常任理事国みたいな存在)。

日本語の「母は北海道で蟹を食べた」で特別な存在は動詞の「食べた」だけです。残りの「母は」「北海道で」「蟹を」はまったく平等であり、「北海道で」だけを格下に扱わねばならぬ理由は見つかりません。

エスペラント→日本語の翻訳では原文の語順を訳文に反映しても問題はなさそうですが、日本語→エスペラントの翻訳ではそれは避けて、すべて無難なSVO語順で処理するのが得策だろうと思います。



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

2009年02月09日

プリプロセッサーに処理させたいこと

Instruistinojn viajn fratinoj niaj vidis.

この文は、英語へ機械翻訳するのはちょっと面倒です。しかし日本語に翻訳するのであれば、形容詞が前置されず後置されているのが問題なだけで、あとはどうということはありません。

よくよく考えてみると、エスペラントの語順の奔放さに対応できるくらい日本語は柔軟なのです。

"instruistinojn viajn"という目的語が文頭にあることは日本語なら訳文に正しく反映させることができますが、英語では無理だと思います。

対格マーカー(-n)によって目的語は間違いなく識別されます。文末の語が動詞であることも容易にわかります。残りの部分を主語と解釈することを妨げるような事実はないので、この文は OSVという文型であると判断されます。

エスペラントの文をスキャンして、形容詞が後置されているのを発見したら名詞の前に移動させる。前処理プログラムに私がやらせたいことの一つが、そういう処理です。

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

2009年02月07日

エスペラントからエスペラントへ、日本語から日本語への翻訳

英語も日本語も、形容詞は名詞の前に置かれます。
英語も日本語も、主語は動詞の前に来ます。

something special のような用法とか、疑問文とかまで含めると、英語が日本語と同じであるとは言えませんが、基本的には共通していると考えられます。

日本語と英語とが共有している、この常識がエスペラントには必ずしも通用しません。したがって翻訳ソフトは、形容詞が名詞の後にあってもいいようにしなければならず、目的語が動詞の前に来たり、主語が動詞の後に来たりするケースにも備えなければなりません。

語順の自由さは、エスペラントの使い手には魅力的でしょうが、翻訳ソフトを作ろうとする者には難題となります。この問題を解決する策は色々とあるのでしょうが、私は非常にシンプルな方法を採用したいと思います。

主語・動詞・目的語という語順になってない文は書き換えて、おなじみの語順にしてしまう。名詞を修飾する形容詞が前ではなく後に置かれている場合は、名詞と形容詞の位置を入れ換える。これらの処理は、翻訳プログラム本体は行なわず、前処理を受け持つプログラムに任せることにするのです。

「高いであった」とか「美しいである」のような適切でない訳文を生成してしまう問題も、同じ方針で解決したいと思います。つまり翻訳プログラム本体で解決しようとするのではなく、後処理のプログラムにバトンを渡し、「高いであった」を「高かった」に、「美しいである」を「美しい」に直させるのです。



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

2009年02月06日

SkyDrive でファイルを共有

MSNに無料のオンラインファイル保存サービスがあったはずだと思い、調べてみたら、やはりありました。正式な名称は Windows Live SkyDrive。25GB の容量で、写真データ、Word やExcel のファイルなど、どんなファイルでも保存できるとのことです。

製作途中の私のプログラムを SkyDriveへアップロードし、興味のある人には試用してもらえるようにしたいと考えています。

http://windowslive.jp.msn.com/guide/skydrive/step1.htm


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

2009年02月05日

おなじみの語順

Free Esperanto Course の第3課にこんなことが書いてありました。

In this 10-lesson course we are going to stick to the subject-verb-object word order, but in well-written Esperanto texts other word orders are frequently used for reasons of emphasis and text coherence. If you use Esperanto you will rapidly acquire a feeling for word order. The best word order to use depends mainly on the context, so it is difficult to give precise "rules".

この文章は「livedoor翻訳」で訳すと、次のようになります。
「この10のレッスン・コースでは、私たちは主題動詞オブジェクト語順に固執するつもりです。しかし、よく書けているエスペラント・テキストでは、他の語順は、強調およびテキスト統一の理由で頻繁に使用されます。エスペラントを使用すれば、急速に語順に対する思いやりを得るでしょう。使用する最良の語順は主としてコンテキストに依存します。したがって、正確な「規則」を与えるのは難しい。」
livedoorの翻訳は Yahooや Exciteの翻訳に比べると劣っていることが多いのですが、今回に限っては livedoorが一番まともな訳になっていました。

さて、問題は語順です。subject-verb-object word order、つまり主語・動詞・目的語という語順は英語では当たり前ですが、エスペラントではそうではありません。そのことを考慮して Esperantilo が作られていることは既に確認した通りですが、トラちゃん95がどうだったかはチェックしていませんでした。

さきほど確認してみたところ、トラちゃん95は主語・動詞・目的語という語順を前提にしているらしいことがわかりました。英語的な語順をはずれた文(例えば Instruistinojn viajn fratinoj niaj vidis.)は、翻訳の質がひどく落ちてしまうからです。

私は、英語→日本語プログラムに手を加えてエスペラント→日本語プログラムとしているため、やはり同じ問題をかかえていることは認識しています。

もし新たに、英語的な常識に全然とらわれない翻訳プログラムを作るのであれば、そのプログラムはエスペラントだけでなく、タガログ語やインドネシア語といった風変わりな言語もうまく翻訳できるようになる可能性があります。

英語→日本語プログラムをベースにしたものと、まるっきり発想の違うもの。その二本立てでやってみるのも面白いかなと私は考え始めています。


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

2009年02月04日

ふたたび品詞コードについて

しばらくのあいだ上野式について研究してきましたが、そろそろ自分自身のプログラムに戻るべき頃だと思います。品詞分類については学ぶべきところもあったので、上野式も参考にして、今後は次のような品詞コードを使っていくことにします。

*a 形容詞
*b be動詞
*c 接続詞
*d 限定詞
*e 名詞(対格)
*i 自動詞
*k 形容詞(対格)
*n 名詞
*p 前置詞
*t 他動詞
*x 助動詞
*y 副詞
*1 代名詞(主格)
*5 代名詞(対格)

例えばエスペラントの Mi iras al Japanio.
は 1ipn となります。

この文をタガログ語に訳した Pupunta ako sa Japan.
は i1pn です。

エスペラントの Johano estas Filipinano.
は nbn で、
タガログ語の Pilipino si Johano.
は nmn となります。

タガログ語の siは主格マーカーであって be動詞ではありません。タガログ語には be動詞に相当するものがないのです。

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

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年以上新しい記事の投稿がないブログに表示されております。