From: ktokita@... Date: 1999-12-22T04:10:50+09:00 Subject: [ruby-list:19820] Re: 自動翻訳プロキシサーバ (Re: 自動翻訳プロジェクト) ちわ、時田%頭パンクしたぁ です(^^; 途中まで考えて頭パンクしました(笑) 特に 2. B. のパイプ記号で引用のようにしてる部分が爆発してます 途中で校正をあきらめました(^^; 結論は 英→日 はやめた方がいいだろうということです(笑) こんな文章 表に出すなよな>俺 (^^; From: Wakou Aoyama Subject: [ruby-list:19815] Re: 自動翻訳プロキシサーバ (Re: 自動翻訳プロジェクト) Date: Wed, 22 Dec 1999 00:52:42 +0900 > 青山です。 > > On Wed, 22 Dec 1999 00:02:46 +0900, > matz@netlab.co.jp (Yukihiro Matsumoto) wrote: > > > |それとも、うまくいってるみたいという 以前のメールって > > |スクリプト部分も含めてうまく言っているって事なのかなぁ… > > > > 「うまくいってるみたい」ってのは日→英だったからじゃないです > > かねえ。 > > ああ、そうでした。英→日ではソース内も翻訳してしまいますね。とはいえ、 > 単純な翻訳でも Foo.new などは大丈夫ですし、先のような文の属性まで使い > 分ければもう少しいけるかも。 From: Wakou Aoyama Subject: [ruby-list:19814] Re: 自動翻訳プロキシサーバ (Re: 自動翻訳プロジェクト) Date: Wed, 22 Dec 1999 00:45:11 +0900 > 取り出された sentence には、次の特異メソッドが定義されています。 どういう単位で sentence を取り出す/王様に渡す のかよく分からないけれど 英→日の翻訳を行うなら、 is_need_trans なのかどうかの情報を 判別する必要が出てくるのは間違いないでしょうね。 普通に考えて、どうすればそれが実現できるのか考えてみましょうか。 1. 文章、ソース を分割するための情報をあらかじめ入れておく 一番簡単なのは、入力ファイルの中に ソース部分 #あえてソースと呼びます比較サンプルのperlソースとか #Cソースとかもありえますから と、ソース以外の部分を区別できる情報を入れておく方法。 あるいは、人力による ソース部分とそれ以外の分割作業 だけど、人力に頼るのは このプロジェクトの本旨からはずれて しまいますから、考えないでいいでしょうね :-) 2. 文章、ソースの分割を完全に自動で行う まず、話を簡単にする為に 対象になるソースが rubyだけだと仮定 してみます。 -- A. 予約語や記号の並び等から推察する たとえば File.open(filename) なんて部分は クラス名.メソッド名(変数) なんてふうになります とりあえず、私 まだ rubyは使い方のわかった機能だけで なんとか使っている程度なので、上記の例のどこに SPCがあっても大丈夫で どこは 何があってはいけないとかって 何とも言えないのが なんとも歯痒い部分ではあるけれど 上記のような「rubyの文」「になりうる部分」を切り出して その「部分」の繋がりが「rubyのソース」として不自然でない かを解析する… んで、その「rubyのソースとして不自然でない部分のかたまり」は is_need_trans == false とする。 正規表現や文字列なんかを判定するのも難しそうだなぁ(^^; 例えば "Hello world!!\n" なんて風に正規表現を含んだ文字列 なら、スクリプトの一部と仮定する出来るかもしれないけれど。 例えば "tell me if you go"なんて文字列は evalの引数になるかも 知れない(^^; それに perlや Cと違って、宣言が不要だから 変数 を 変数として 認識するのが困難ですよね。 -- B. 例えば、 rubyのソース解析部分をもってきて、うまく解析できる部分を rubyスクリプトと仮定する(is_need_trans == false) とはいえ、これも難しいでしょうね。 ソースの 始まり/終り が仮定できないのに解析するのは困難で しょうねぇ…(^^; |解析部分は analyse1(input)なんて感じになってて |analyse2() analyse3() なんて風に何passかにわけて |解析する事になると… |んで 引数の inputは入力ファイルをトークンに区切ったwordを |キーに持つハッシュになってて、analyse1()は |それぞれのトークンに | |仮に解析部分を analyse1(input) なんて感じで使えるとして |input は入力ファイルのをトークンに区切った wordをキーに持つ |ハッシュで analyse()は そのそれぞれのトークンに |スクリプトのソースになり得るか否かを設定する。 |例えば \n なんてスクリプト特有の表現が入っていたら |その部分は |はじめ、文章全体で解析を試みて 先頭でエラーになるようなら |先頭の wordを取り除いて再度解析 なんて処理の繰り返し |になるんだろうなぁ… |analyse(str)の戻り値が 何word目まで解析可能かを返すような |仕様にしたとして、何word以上解析できるようならスクリプトと |見なせるのかとか… |あるいは、スクリプト特有のパターン、例えば \n なんて部分があったら うっぎゃー 駄目だ もう訳わかめ(^^; -- これが更に、perlと rubyの比較スクリプトなんかが入った 文章の場合だと…(^^; あと、エラーの出るスクリプトで、これがエラーになるのは何故? みたいな、初心者の質問とかだと スクリプトとして 全然認識されなかったりして…(^^; やっぱ、日→英 だけに限定するのが一番かな?(^^; -- 時田幸粋 E-mail: ktokita@ma.neweb.ne.jp URL : http://www1.neweb.ne.jp/wa/ktokita