言語処理の優先順位 言語処理の諸問題 一番単純なモデルは 「このMLは日本人用と仮定する。 よって、 自動応答メッセージは、つねに日本語で返す」 というものです。 もちろん、さまざまな問題が考えられます。 第一に、このモデルでは、ML作成時に何言語用かを指定する必要があります。 第二に、 間違って(日本語が読めない人から)送られてきたメールに対しても、 日本語でエラーメッセージを返します。 第三に、 日本人がメールを送ってきていたとしても、 今、 メールを読んでいる環境で日本語が使えないかもしれませんし、 メールヘッダの Accept-Language: がアテになるでしょうか? おそらく、少しはアテになるでしょう。 よって、 メールヘッダの Accept-Language: を無視するのもよろしくありません。 ただし、きちんと Accept-Language: がつけられているとも限りませんが… たとえば、 Accept-Language: ja などとしてある場合は ja が優先だと分かります。 しかしながら、 そういったものがなく、 かつ、 「日本人が help というメールを送ってきた」場合、 返事を us-ascii で返すべきなのか? それとも iso-2022-jp で返すべきなのか? プログラムには判断できません。 たとえば、こんなメールでは、どう判断するのが正しいでしょう? 例: From: rudo@example.co.jp Subject: help mime-version: 1.0 content-type: text/plain; charset=us-ascii help charset を素直に考えると英語で返すべきですが、 この例では、 たまたま本文が英語しか含まないために charset=us-ascii になっているだけです。 しかたがないので、 このMLが(日本人相手のため)日本語優先と設定されているなら、 日本語と英語のメッセージ両方を返すべきでしょう。 逆に、 英語のMLという想定なら、 英語のメッセージを返すだけでいいはずです。 いずれにせよ、 Accept-Lanaguage: が指定されていれば、それを尊重するべきです。 英語のML(language_preference_order = en)の場合でも、 Accept-Lanaguage: ja なら(できるだけ)日本語で返事をするべきでしょう。 &fml8; 標準のメッセージであれば、この動作が可能です。 日本語優先のML language_preference_order という変数があります。 日本語がデフォルトのMLでは次のように指定されています。 language_preference_order = ja en このヒントを使い、 次のような処理をしています。 以下では、 送られてきたメールヘッダを場合分けして考えてみましょう。 Accept-Language: ja, en 日本語(だけ)で返すと判断します。 Accept-Language: en 英語(だけ)で返すと判断します。 Accept-Language: は無し、Content-Type: では charset=iso-2022-jp 日本語(だけ)で返すと判断します。 Accept-Language: は無し、Content-Type: では charset=us-ascii 日本語(だけ)で返していいと判断できません。 日本語と英語のコンビで返すべきだと考えます。 Accept-Language: は無し、Content-Type: も無し 日本語(だけ)で返していいと判断できません。 日本語と英語のコンビで返すべきだと考えます。 英語優先のML language_preference_order という変数が次のように指定されます。 language_preference_order = en このヒントを使い、 次のような処理をしています。 以下では、 送られてきたメールヘッダを場合分けして考えてみましょう。 Accept-Language: ja, en 日本語(だけ)で返すと判断します。 Accept-Language: en 英語(だけ)で返すと判断します。 Accept-Language: は無し、Content-Type: では charset=iso-2022-jp 日本語(だけ)で返すと判断します。 Accept-Language: は無し、Content-Type: では charset=us-ascii 英語(だけ)で返すと判断します。 Accept-Language: は無し、Content-Type: も無し 英語(だけ)で返すと判断します。