作者: Bruce.
日時: 2009/3/06(16:36)
Bruce.です。

davi さんは書きました:
> Bruce.さん みなさん < こん??は でび@これからVistaインスコ作業 です
> 
> On Thu, 05 Mar 2009 20:37:56 +0900
> "davi" <davi-1984@...> wrote:
> 
>> この話題のずっと先には、「翻訳ソフトは、内部でどんな
>> 処理をしているんだろう?」という疑問があります。
>>
>> そんな話題をabcでやるのが適切かどうかはわかりません。
> 
> 「考え方としてはこうなのかな?」と、以下のように考えてみました。


作ったことも、既存のものの中を見たこともありませんが、多分違うでしょう。
まず、文章をきちんと(or それなりに)解釈するものであれば、単語の並びを
文として解析する手順があるはずですから、でびさんが考えたものとは
まるで違う構造になるはずです。

ま、それはそれとして、

> おそらく、対訳辞書の並び順がこれでは問題が生じるはずです。
> 例えば、例文の末尾2行目にある、
> 【She】 said, (〜略〜) as 【long】 as
> 
> はチャンと訳されるでしょう。
> 
> ところが、「long long ago」と「long」は訳し分けたいし、
> 「fisherman」の中には「she」の文字列や「a」があります。
> 
> つまり、対訳辞書ファイルのSort順は、かなり大事な部分なの
> だろう…と考えています。

別にソートしとかなきゃいけないこたないです。
先頭部分を共有する単語(やイディオム)が複数存在するときに
最長のものを取り出せばいいわけで、それに向いたデータ構造というのは
あります。
まあそれが awkなりで実装するのがお手軽にできるか、というとそうではないで
しょうけど。

トライ木
トライ木 - Wikipedia
http://ja.wikipedia.org/wiki/%E3%83%88%E3%83%A9%E3%82%A4%E6%9C%A8
Trie - Wikipedia, the free encyclopedia
http://en.wikipedia.org/wiki/Trie

基数木 - Wikipedia
http://ja.wikipedia.org/wiki/%E3%83%91%E3%83%88%E3%83%AA%E3%82%B7%E3%82%A2%E6%9C%A8
Radix tree - Wikipedia, the free encyclopedia
http://en.wikipedia.org/wiki/Radix_tree

それから、lex というツールがありますが、こいつは同じ先頭部分を持つ正規表
現を複数並べても、
出現順ではなく、マッチした長さが長いものを優先してくれます。

-- 
木村浩一/KIMURA Koichi
 I thought what I'd do was, I'd pretend I was one of those deaf-mutes or
shoud I?
 mail kbk at kt.rim.or.jp
 web  www.kt.rim.or.jp/~kbk/zakkicho/index.html