このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

用語のバリエーション記述のための正規表現

専門用語においても、同義語・類義語、表記のゆれなどは相当にあります。「こんな言い方もある、あんな言い方もある」と列挙していると、ときに長大なリストになってしまうことがあります。列挙する代わりに正規表現を使うとコンパクトに記述できます。

正規表現により、用語のバリエーションを記述する方法を説明します。なお、「正規表現が何であるか」を知らなくてもかまいませんし、その説明もしません。もし興味があれば、次の記事を参照してください。

内容:

選択肢と省略可能

基本は次の二種類の書き方です。

  1. 選択肢: {A | B}
    AもBも同じ意味なので、どちらか一方を好きに選んでよいことを表します。選択肢がもっとたくさんあるときは、{A | B | C}、{A | B | C | D} のように書きます。
  2. 省略可能: {A}?
    Aは省略してもよいことを表します。

選択肢と省略可能を組み合わせて使ってもかまいません。{{A}? | B}C{D | E{F}?}? が表す語(文字列)をすべて列挙してみると次のようになります。

  1. ACD
  2. ACEF
  3. ACE
  4. AC
  5. CD
  6. CEF
  7. CE
  8. C
  9. BCD
  10. BCEF
  11. BCE
  12. BC

列挙するときは、次のような図を描いて、startからendに至る道を漏れなくたどるようにすると便利です。

具体例

具体例を出しましょう。

例 1

線形代数の文脈で、f:V→V という形(域と余域が同じ)線形写像を次のように呼ぶと約束したとしましょう。

  • {線形 | 線型}?{変換 | 自己写像}

この表現が表す語を列挙すると、

  1. 線形変換
  2. 線形自己写像
  3. 線型変換
  4. 線型自己写像
  5. 変換
  6. 自己写像

となります*1。これらの用語を許す理由は、例えば次のようになるでしょう。

  1. 「線形」と「線型」は表記のゆれなので、どちらでもよいとする。
  2. 「変換」と「自己写像」を同義語として使うと約束する。
  3. 線形代数の文脈なら、「線形」(または「線型」)は省略してもいいだろう。
例 2
  • {形式{的}? | フォーマル}?{体系 | システム}

これを展開すると:

  1. 形式的体系
  2. 形式的システム
  3. 形式体系
  4. 形式システム
  5. フォーマル体系
  6. フォーマルシステム
  7. 体系
  8. システム

「形式システム」、「フォーマル体系」はあまり聞きませんが、別に悪くはないでしょう。

例 3
  • {関数 | 演算{子}?}{記号 | 名}?

これを展開すると:

  1. 関数記号
  2. 関数名
  3. 関数
  4. 演算子記号
  5. 演算子
  6. 演算子
  7. 演算記号
  8. 演算名
  9. 演算

想定される文脈は、形式体系における言語の定義ですね。記号と実体(例えば、関数記号と関数そのもの)を混同するのはマズイのですが、「関数記号」を「関数」と呼んでしまうことは珍しくないので、その習慣を反映して「関数記号」も「関数」も同義語扱いしています。

例 4
  • {一貫性 | 整合性}{公理 | 等式 | 関係 | 恒等式 | 制約 | 法則}

これを展開すると:

  1. 一貫性公理
  2. 一貫性等式
  3. 一貫性関係
  4. 一貫性恒等式
  5. 一貫性制約
  6. 一貫性法則
  7. 整合性公理
  8. 整合性等式
  9. 整合性関係
  10. 整合性恒等式
  11. 整合性制約
  12. 整合性法則

これは、"coherence axiom"の翻訳語です。coherence → {一貫性 | 整合性} は訳語のゆれですが、英語でも次のバリエーションがあります。

  • coherence {axiom | equation | relation | identity | constraint | law}

英語と日本語での例

次の例は、セミナーで出したことがあります。

  • {{X-}?{parametrized | indexed}}? family {of Ys}?

先に、この表現を図にしたものを示しましょう。

この図を見ながら、上記の表現が表す語を列挙します。

  1. X-parametrized family of Ys
  2. X-parametrized family
  3. X-indexed family of Ys
  4. X-indexed family
  5. parametrized family of Ys
  6. parametrized family
  7. indexed family of Ys
  8. indexed family
  9. family of Ys
  10. family

この例は英語でしたが、日本語に翻訳すると:

  • {{X {の|で|-}? }? {パラメータ | インデックス | 添字} { {付き | 付けられた}? }? {Yの}? }? {ファミリー | 族}

全部列挙するのは大変なので、数個だけ挙げると:

  • Xのパラメータ付きYのファミリー (日本語としてやや不適切)
  • Xのパラメータ付きYの族 (日本語としてやや不適切)
  • Xのパラメータ付きファミリー (日本語として曖昧)
  • ...
  • ...
  • ファミリー

日本語になると、組み合わせ方によっては、不適切な語や曖昧な語が出てきてしまいます。「Xでインデックス付けられたYの族」あたりが(長いけど)適当でしょう。この言葉の意味は「XからYへの写像」と同じです。なんらかのニュアンスを込めてこんな言い方をするのです。

ウンザリする例

Lawvere theory という概念があります。

Lawvere theory の翻訳語としてあり得そうな日本語は次のようでしょう。

  • {代数{的}? | ローヴェア | Lawvere | {ローヴェア | Lawvere}{の}?代数{的}?}{理論 | セオリー | {理論 | セオリー}?圏}

展開すると:

  1. 代数的理論
  2. 代数的セオリー
  3. 代数的理論圏
  4. 代数的セオリー圏
  5. 代数的圏
  6. 代数理論
  7. 代数セオリー
  8. 代数理論圏
  9. 代数セオリー圏
  10. 代数圏
  11. ローヴェア理論
  12. ローヴェアセオリー
  13. ローヴェア理論圏
  14. ローヴェアセオリー圏
  15. ローヴェア圏
  16. Lawvere理論
  17. Lawvereセオリー
  18. Lawvere理論圏
  19. Lawvereセオリー圏
  20. Lawvere圏
  21. ローヴェアの代数的理論
  22. ローヴェアの代数的セオリー
  23. ローヴェアの代数的理論圏
  24. ローヴェアの代数的セオリー圏
  25. ローヴェアの代数的圏
  26. ローヴェアの代数理論
  27. ローヴェアの代数セオリー
  28. ローヴェアの代数理論圏
  29. ローヴェアの代数セオリー圏
  30. ローヴェアの代数圏
  31. ローヴェア代数的理論
  32. ローヴェア代数的セオリー
  33. ローヴェア代数的理論圏
  34. ローヴェア代数的セオリー圏
  35. ローヴェア代数的圏
  36. ローヴェア代数理論
  37. ローヴェア代数セオリー
  38. ローヴェア代数理論圏
  39. ローヴェア代数セオリー圏
  40. ローヴェア代数圏
  41. Lawvereの代数的理論
  42. Lawvereの代数的セオリー
  43. Lawvereの代数的理論圏
  44. Lawvereの代数的セオリー圏
  45. Lawvereの代数的圏
  46. Lawvereの代数理論
  47. Lawvereの代数セオリー
  48. Lawvereの代数理論圏
  49. Lawvereの代数セオリー圏
  50. Lawvereの代数圏
  51. Lawvere代数的理論
  52. Lawvere代数的セオリー
  53. Lawvere代数的理論圏
  54. Lawvere代数的セオリー圏
  55. Lawvere代数的圏
  56. Lawvere代数理論
  57. Lawvere代数セオリー
  58. Lawvere代数理論圏
  59. Lawvere代数セオリー圏
  60. Lawvere代数圏

カタカナ表記のバリエーション(ローヴェル、ロウヴィエールとか)、音引き、ナカグロなどのゆれも考えると、さらに増えます。ウゲーッ。

*1:[追記]自然言語では、形容詞の位置・順序は比較的自由です。例えば、「線形自己写像」も「自己線形写像」も許容されます。自由に動かせる形容詞を正規表現で表すのは面倒で不格好になりがちです。正規表現を拡張して、{A & B} で {AB | BA} を表すことがあります。これを使えば、「{線形 & 自己}写像 = {線形自己 | 自己線形}写像 = {線形自己写像 | 自己線形写像}」となります。[/追記]