ちわ、時田%頭パンクしたぁ です(^^;

途中まで考えて頭パンクしました(笑)
特に 2. B. のパイプ記号で引用のようにしてる部分が爆発してます
途中で校正をあきらめました(^^;
結論は 英→日 はやめた方がいいだろうということです(笑)

こんな文章 表に出すなよな>俺 (^^;


From: Wakou Aoyama <wakou / fsinet.or.jp>
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 <wakou / fsinet.or.jp>
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