Ermitejo - エスペラント語日本語翻訳

#BLOGO
2007
9/
14

エスペラント発音解析の実装方法 (単語辞書引き機能 versio 0.9.5)

分類: 公開, 開発記 / タグ: , , ,

ようやくversio 0.9.0で実装を始めた音韻関連の機能が整いつつあります。直近で更新した内容は、韻文中での発音に関する二点です。

修正点 versio 0.9.5の詳細と、実装方法の紹介

versio 0.9.5 (23-a publikigo, en 2007/09/11)

前者では、アクセントを変更しないという点が曲者です。エスペラントの規則性ゆえに、実装も極めて論理的かつ簡素なものとなっていたのですが、こういう特例の存在により、優雅さとは程遠い泥臭い実装を行う羽目になります。前者ではl’を「ル」と読めるようになるのですが、l’armoをルアーモと読んでしまうために、ここでも特例を設けてラーモと読めるように処理を書き加えました。

エスペラントの字面から発音を得るロジック

良い機会なので、発音をカタカナやIPAで転記する処理の概要をご紹介します。あまり変なことを考えず、人間の頭の中で行っている処理を素直にコード化することが一番と言えます。

  1. まず、これまでの形態素解析で、既に語根や接辞の区切り文字を持った文字列が得られています。例えば、samideanojnという単語はsam/ide/an/o/j/nという文法上の区切りです。
  2. ここで、単純に「/」を区切り文字として、splitにより元の文字列というスカラを一旦リストに分解して配列に突っ込みます。
  3. この配列について、接尾辞や品詞語尾であった場合には、前の要素と結合するようにします。例えば、('sam', 'ide', 'an', 'o', 'j', 'n')('sam', 'ideanojn')になります。これはまだ文法上の区切りですが、続け読みが出来るように配慮された配列になっています。
  4. それぞれの要素について、「子音」「母音」「子音と母音」という音韻上の区切りを得ます。この際、文字が母音か子音かを判断しながら、文字を一つずつ処理していきます。内部処理では字上符付き文字をx後置式としているので、ここが私がうっかりはまった陥穽でした。'sam'('sa', 'm')に、'ideanojn'('i', 'de', 'a', 'no', 'j', 'n')に分解されます。これで、それぞれの要素が一つの音に対応するような配列になりました。
  5. 上記を結合して('sa', 'm', 'i', 'de', 'a', 'n', 'o', 'j', 'n')というリストを得て、配列に突っ込みます。
  6. アクセント位置を決定します。配列を後ろから辿って、二つめの母音がある要素がアクセント付きの場所です。
  7. 上記状態を、単純にIPAに置換します。エスペラントのアルファベートはIPAと1対1の関係にありますから、単純にtrすれば事足ります。アクセント位置には長母音の記号を与えて完成です。samとideanojとの間は空白を入れておきます。
  8. また、カタカナ発音にも置換します。カタカナ発音は子音と母音からなる二重ハッシュ構造を予め作っておき、ハッシュのキーをそれぞれ指定すれば事足ります。例えば、'sa'$japana->{'s'}{'a'}で「サ」が求まりますし、母音のみや子音のみの場合にはダミーのキーを与えて$japana->{'m'}{'_'}で「ム」、$japana->{'_'}{'i}で「イ」が求まるという次第です。長母音で「ー」を与えて完成です。

このように可能な限り手を抜いて楽をして発音させている無邪気な実装なので、世知辛いesper’などという文字列を与えたら、まず「’」なんてハッシュキーがないのでこけますし、これを無視したら母音が一つ足りないわけでエスペル(エがアクセント)と読もうとするしで大変です。

そこで、以下のように機能追加することによって、こうした言語現象にも対応出来るようにしました。

(#39の続きを読む)

< 脇書非表示 > 脇書表示

Ĉu vi scias?

hidrargo

過去の記事

2007 年 9 月
« 8 月   10 月 »
 12
3456789
10111213141516
17181920212223
24252627282930

分類

最近の記事

最近のコメント

最近のトラックバック

RSS

メタ情報

Aŭtorrajto: © Organizo por Zona Servo per Sinkrona Solvo. Ĉiuj rajtoj estas rezervitaj.
Copyright: © Organization for Zonal Service with Synchronous Solution. All rights reserved.