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

ご連絡は上記 X アカウントに DM にてお願いします。

[参照用 記事]

用語辞書とそのグラフ表現: 曖昧性の扱い方

しばらくブログ記事を書いてませんでした。圏論的確率論やマルコフ圏について書こうかと思っていたのですが、使う用語法で悩んでしまいました。そう言えば、確率・統計の用語法の曖昧性にはさんざん悩んでいました(以下の過去記事参照)。

このての悩みを少しでも解消するために、今年の春に、用語の曖昧多義性などをグラフで視覚化する試みをしていました。

この記事は、用語法の曖昧性の悩みを解消する話の続きです。用語辞書と呼ぶ“ある種のデータベース”を想定して、そのグラフ表現として用語・用法図や知識グラフを再解釈します。

記事内で使う文字の色については「文字の色の約束(再確認)」を参照してください。$`\newcommand{\cat}[1]{\mathcal{#1}}
\newcommand{\mbf}[1]{\mathbf{#1}}
\newcommand{\mrm}[1]{\mathrm{#1}}
%\newcommand{\mbb}[1]{\mathbb{#1}}
%\newcommand{\msc}[1]{\mathscr{#1}}
%\newcommand{\u}[1]{\underline{#1} }
%\newcommand{\o}[1]{\overline{#1} }
%\newcommand{\In}{\text{ in } }
%\newcommand{\hyp}{\text{-} }
%\newcommand{\Imp}{\Rightarrow }
%\newcommand{\Iff}{\Leftrightarrow}
\newcommand{\T}[1]{ \text{#1} }
%\newcommand{\op}{\mathrm{op} }
%\newcommand{\id}{\mathrm{id} }
%\newcommand{\pto}{\nrightarrow} % proarrow to
%\newcommand{\dto}{\looparrowright} % dependent to
%\newcommand{\hto}{\rightsquigarrow} % hetero to
%\newcommand{\parto}{\supset\!\to}
%\newcommand{\twoto}{\Rightarrow}
%\newcommand{\C}{\mathop{;}} % Composition (diagrammatic order)
`$

内容:

ハブ記事:

用語辞書

用語辞書〈dictionary of technical terms〉とは、用語の分類や意味・使い方について記述した辞書エントリ〈dictionary entry〉の集まりです。単なる辞書エントリの集合ではなくて、辞書エントリのあいだに様々な関連性〈relationship〉があります*1。

辞書エントリをデータベースのレコードとみなしたとき、次のフィールドがあります。

  1. 見出し語〈head word〉
  2. アンカー性〈anchorness〉
  3. 属性〈attributes〉
    1. 構文ソート〈syntactic sort〉
    2. 言語〈language〉
  4. 意味記述〈meaning description〉

各フィールドについて説明します。

見出し語〈head word〉は、用語そのもので、文字列と考えます。専門用語〈technical term〉しか考えませんが、説明のための例には日常語も使います ―― 例えば「サッカー」「ハンバーガー」「冷蔵庫」「馬」など。

アンカー性〈anchorness〉は $`\mrm{True}`$ か $`\mrm{False}`$(真偽値)のどちらかで、その辞書エントリが意味記述を持つかどうかを表すフラグです。アンカー性の値が $`\mrm{True}`$ なら意味記述を持ちます。$`\mrm{False}`$ なら持ちません。

アンカー性の値が $`\mrm{True}`$ である辞書エントリをアンカー・エントリ〈anchor entry〉、$`\mrm{False}`$ である辞書エントリを非アンカー・エントリ〈non-anchor entry〉と呼ぶことにします。非アンカー・エントリには意味記述がありません。「それじゃ、辞書エントリとして役に立たないじゃないか?」と思うかも知れませんが、非アンカー・エントリは他の辞書エントリへの参照〈リンク〉(後述)を持てるので、ちゃんと役に立ちます。

辞書エントリに関する様々な情報は、幾つかの属性〈attribute〉フィールドで表現します。とりあえず、構文ソートと言語の2つの属性を考えますが、必要に応じて属性フィールドを増やすことができます。

構文ソート〈syntactic sort〉は、用語の品詞〈part of speech〉です。言語学の用語では統語範疇〈syntactic category〉といいますが、category が圏論とかぶるのがイヤなので syntactic sort としました。誤解の心配がなければ、単にソート〈sort〉ともいいます。構文ソートの値は当面 $`\T{CN}, \T{PN}, \T{RN}, \T{RA},\T{NRA}`$ の5つ(詳細後述)ですが、必要に応じて増やす予定です。

言語〈language〉は、用語がどの自然言語であるかを識別します。値は $`\T{ja}, \T{en}, \T{de}`$(それぞれ、日本語、英語、ドイツ語)などです。

意味記述〈meaning description〉が何であるかを正確に定義するのは難しいので、「言葉の意味を記述したもの」程度でお茶を濁しておきます。とはいえ、数学的・外延的意味を定義できないわけではありません。十分に大きなグロタンディーク宇宙をとれば、用語の指示対象〈denotation〉は、グロタンディーク宇宙内のひとつの要素として確定すると想定できます。

用語辞書の話をしている文脈では、用語辞書を単に辞書〈dictionary〉、辞書エントリを単にエントリ〈entry〉と省略することがあります。この節冒頭の箇条書きでは、属性〈attributes〉の箇条項目のなかに構文ソート〈sytactic sort〉と言語〈language〉が入れ子になってますが、5つのフィールドをフラットに並べた形で考えることが多いです。

用語辞書に関する注意事項

用語辞書に関して誤解しがちなことを注意します。

日常的な「辞書」のイメージから、辞書エントリはたくさんあるだろうと思いがちですが、辞書エントリは少数でもかまいません。単一のエントリだけからなる辞書もあります。数個のエントリからなる辞書もよく使います。

逆に無限個のエントリからなる辞書も使います。例えば、「0次元ユークリッド空間」、「1次元ユークリッド空間」、「2次元ユークリッド空間」‥‥ という用語達は、$`\mbf{N}`$ と一対一対応するので可算無限個のエントリ達を要求します。

要するに辞書の大きさ(集合としての基数〈cardinality〉)は自由だ、ということです。「大きくなくてはならない」とか、「有限でなくてはならない」といった制約はありません。

次に重要なことは、見出し語はキーにならないことです。これは、ひとつの辞書に同じ見出し語が何度も出現するかも知れない、ということです。異なるエントリに同一の見出し語が出現して意味が違うとき、その語はその辞書において同綴異義語〈semantic homograph | どうてついぎご〉だといいます。

人名でいえば、同姓同名だが別人な状況です。「一休さん」のお話に出てくる、「橋」と「端」をひらがなで書いた「はし」と「はし」は同綴異義語です。「はし」と「はし」のような同綴異議語は、トンチやダジャレ、韻を踏むときに使われます。

同綴〈homograph | どうてつ〉だが品詞〈構文ソート〉が違うこともあります。「サッカー」や「テニス」はスポーツの種別として普通名詞ですが、「サッカーボール」「テニスボール」として使うときは形容詞です。我々の用語辞書では、構文ソートが違えば別なエントリにします。「普通名詞としての『サッカー』」のエントリと、「形容詞としての『サッカー』」のエントリを別に作る、ということです。

同じ見出し語で構文ソートが違う複数エントリがあると、その語はその辞書において同綴異種語〈sortal homograph | どうてついしゅご〉だといいます。意味記述を持つエントリどうしでは、構文ソートが違って意味が同じことはあり得ません*2。ただし、意味記述を持たないエントリもあるので、構文ソートが違うエントリすべてについて、意味が違うと判定できるわけではありません。

三つ目の注意事項は、たくさんの辞書を同時に使うことがある、ということです。ここでは、名前(辞書名)で識別された、たくさん(かも知れない)辞書の集まりを用語法〈terminology〉だと定義します。用語に関する文脈は、単一の辞書というより用語法 ―― つまり辞書の族〈family〉により作られるとみなします。もちろん、“用語法=辞書の族”がたまたま単一辞書から構成されていることはあり得ますが、複数の辞書達が文脈を形成することが普通でしょう。

構文ソート

構文ソート〈品詞 | 統語範疇〉について説明しておきましょう。先に注意しておくと、日本語や英語の文法の話をするわけではないです。用語辞書を目的にして設計された人工的な構文ソートの話をします。

我々の辞書において、構文ソートの値は次の5つです。

  1. CN : 普通名詞〈Common Noun〉
  2. PN : 固有名詞〈Proper Noun〉
  3. RN : 役割り名詞〈Role Noun〉
  4. RA : 制限的形容詞〈Restrictive Adjective〉
  5. NRA : 非制限的形容詞〈Non-Restrictive Adjective〉

普通名詞〈CN〉、固有名詞〈PN〉は学校で習ったでしょう。

役割り名詞〈RN〉は学校文法では出てこない品詞です。複数の構成素〈constituent | 成分〉からなる構造物〈structure〉において、構成素を識別するための名前です。

役割り名詞は、日本語の「の」や英語の "of" と共に使う名詞になります。使い方のパターンは、

  • 〈普通名詞または固有名詞〉 の 〈役割り名詞〉
  • 〈役割り名詞〉 of 〈普通名詞または固有名詞〉

となります。「ハンバーガーのパティ」や「馬の脚」とかです。英語だと冠詞や単数形・複数形とかがややこしいですが、それを無視して単純化すれば、"patty of hamburger" や "leg of horse" とかです。

データ型の話で言えば、レコード型に対するフィールド名が役割り名詞です。辞書エントリ自体がレコード型データだったので、フィールド名を決めれば、そのフィールド名の構文ソートは役割り名詞になります。例えば:

  1. HeadWord ← これはレコード型 DictEntry の第一フィールド名、役割り名詞
  2. Anchorness ← これはレコード型 DictEntry の第二フィールド名、役割り名詞
  3. SyntacticSort ← これはレコード型 DictEntry の第三フィールド名、役割り名詞

"patty" や "leg" は普通名詞〈CN〉でもあります。「普通名詞としての patty」と「役割り名詞としての patty」は別な辞書エントリになります。"patty of hamburger" の "hamburger" は普通名詞ですが、"hamburger patty" 内の "hamburger" は制限的形容詞〈RA〉(後述、すぐ下)です。

制限的形容詞〈RA〉は、名前が指し示す範囲を狭める形容詞です。例えば、「競走馬」は、馬全体より狭い意味になります。「ミニサイズ冷蔵庫」も、冷蔵庫全体より狭い意味になります。形容詞としての「競走」(名詞もある)や、「ミニサイズ」が制限的形容詞の例です。

「馬」を「天」で修飾した「天馬〈てんば | てんま〉」は、もはや馬ではありません。天馬は、馬の一種でもなく、特定用途の馬でもなく、ペガサスなどの架空の動物です。形容詞としての「天」のように、修飾すると元の意味をずらしてしまう形容詞が非制限的形容詞〈NRA〉です。

構文ソートに別名があります。「名詞」を「名」といってもいいので、普通名、固有名、役割り名でもかまいません。普通名は、一般名〈generic name〉、種別名〈{class | kind} name〉とも呼びます。

ところで、「白馬」の「白」は制限的形容詞でしょうか、それとも非制限的形容詞でしょうか? 常識的に考えれば、馬全体のなかに白馬もいるので制限的ですが、白馬は馬とは違った存在物になるという主張もあります。

辞書エントリの書き方

辞書エントリは、5つ(意味記述がないなら4つ)のフィールドを持つデータベース・レコードとみなせますから、タプルの形で書けます。例えば:

  • (実数, True, CN, ja, ...)
  • (円周率, True, PN, ja, ...)

「...」の部分は、「実数」とは何か? 「円周率」とは何かを定義・説明している記述ですが、具体的には書かないで省略します。

英語の非アンカー・エントリも入れると:

  • (実数, True, CN, ja, ...)
  • (円周率, True, PN, ja, ...)
  • ("real number", False, CN, en)

空白を含む見出し語は、全体で一語であることを示すために引用符で囲むことにします。非アンカー・エントリ(アンカー性の値が $`\T{False}`$ であるエントリ)には意味記述がありません。よって、フィールドは4つです。

辞書エントリの、意味記述を除いた部分を簡潔に書くための構文を導入します。実例は:

  • !実数[sort=CN, lang=ja]
  • !円周率[sort=PN, lang=ja]
  • "real number"[sort=CN, lang=en]

アンカー・エントリには先頭に感嘆符を付けます。非アンカー・エントリには何も付けません。見出し語の後のブラケット内に属性を書きます。属性は、!実数[sort=CN][lang=ja] のように分けて書いてもかまいません。

以上がエントリの書き方のルールですが、省略と略記のルールを追加します。まず、言語(lang属性)は見れば分かることが多いので省略可能です。構文ソート(sort属性)を省略した場合は CN(普通名詞)とみなすことにします。このルールのもとで、次のように短く書けます。

  • !実数
  • !円周率[sort=PN]
  • "real number"

構文ソート(sort属性)だけを添えることが多いので、[sort=XXX] を #XXX と略記します。すると:

  • !実数
  • !円周率#PN
  • "real number"

省略・略記のルールにより、エントリ全体を見出し語だけに圧縮して書けることもあります。しかし、辞書エントリとその見出し語は徹底的に区別しましょう。我々が興味を持つのは辞書エントリであり、見出し語はその一部に過ぎません。同じ見出し語にたくさんのエントリがあるかも知れません。

[補足]
エントリの略記法は、タプルを文字列にエンコードしていることになります。このようなエンコードのとき問題となるのは、「見出し語の先頭が '!' だったら?」とか「見出し語の一部に '#' が含まれていたら?」とかです。

よく使われる対処法はエスケープです。エスケープ文字やエスケープ構文についてここでは述べませんが、ともかく対処法はあるのです。
[/補足]

[補足]
過去記事「知識グラフ 2: 直感的かつ正確な伝達のために // バッククォートとサーカムフレックス」では、構文ソートの情報を前置一文字にエンコードしています。

構文ソートが固有名であることはバッククォートを前置して示す約束です。固有名としての「円周率」は「`円周率」です。構文ソートが役割り名であることはサーカムフレックスを前置して示します。役割り名としての「(ハンバーガーの)パティ」は「^パティ」です。

このてのエンコードは短く書けるメリットがありますが、書き方を覚えるのが億劫で、すぐ忘れます。
[/補足]

辞書エントリのあいだの関連性: forward

辞書エントリのあいだの関連性〈relationship〉があるとは、視覚化〈visualize〉すると、エントリ(を表すノード)のあいだにリンクがあることです。視覚化なしで関連性を説明することも出来ますが、ここでは視覚化を前提に説明します。

まずは実例を挙げます。

$`\quad \xymatrix@C+1pc{
\T{"real number"} \ar[r]^-{\T{forward} }
&\T{!実数}
}
`$

これは、エントリ $`\T{"real number"}`$ とエントリ $`\T{!実数}`$ が、$`\T{forward}`$ とラベルされた関連性で結ばれていることを示します。

$`\T{forward}`$ とラベルされた関連性をフォワード関連性〈forward relationship〉と呼びます。フォワード関連性の意味は、意味記述を持たないエントリ〈非アンカー・エントリ〉の意味を他のエントリの意味でまかなう、ということです*3。上の例では、$`\T{"real number"}`$ の意味は $`\T{!実数}`$ の意味だとします。

フォワード関連性は最もよく出てくる関連性なので、ラベルを乗せる代わりに矢印 $`\mapsto`$ で表すことにします。フォワード関連性の矢印により、曖昧多義語を表現できます。

$`\quad \xymatrix{
{\T{}}
&{\T{}}
&{\T{!確率測度}}
\\
{\T{}}
&{\T{確率分布}} \ar@{|->}[ur] \ar@{|->}[r] \ar@{|->}[dr]
&{\T{!確率密度関数}}
\\
{\T{分布}} \ar@{|->}[ur] \ar@{|->}[r] \ar@{|->}[dr]
&{\T{!凸結合}}
&{\T{!像確率測度}}
\\
{\T{}}
&{\T{質量分布}}
&{\T{}}
}
`$

上の図で、$`\T{!確率測度}`$、$`\T{!確率密度関数}`$、$`\T{!像確率測度}`$、$`\T{!凸結合}`$ はアンカー・エントリで意味記述が付いています。しかし、$`\T{分布}`$、$`\T{確率分布}`$、$`\T{質量分布}`$ は非アンカー・エントリで、それ自体では意味が分かりません。

非アンカー・エントリの意味が知りたいときは、矢印 $`\mapsto`$ をたどることになります。例えば、$`\T{分布} \mapsto \T{確率分布} \mapsto \T{!確率測度}`$ とたどれます。意味を求めてたどる道が複数あるので、$`\T{分布}`$ は曖昧多義になります。$`\T{分布} \mapsto \T{質量分布}`$ とたどっても、$`\T{質量分布}`$ が意味記述を持ってない(非アンカー・エントリ)なので、意味は分からないままです。

曖昧多義であることは、辞書のなかのエントリの性質です。見出し語の性質ではありません。曖昧多義性を持つエントリを多義エントリ〈polysemous entry〉と呼びます。

エントリが多義かどうかは、辞書に相対的に決まります。辞書のなかに $`\T{分布}`$ と $`\T{!確率測度}`$ の2つのエントリしかなくて、$`\T{分布} \mapsto \T{!確率測度}`$ なら、$`\T{分布}`$ は多義エントリではありません。

エントリ達とそのあいだのフォワード関連性〈forward relationship〉だけでも曖昧多義性の分析ができます。

意味的な関連性: part-of, has

意味的な関連性〈semantic relationship〉とは、エントリが持つ意味に基づく関連性です。意味的な関連性を視覚化したグラフは意味ネットワーク〈semantic network〉となります。

ここでは、パートオブ関連性〈part-of relationship〉について述べます。

パートオブ関連性の視覚化〈図示〉は次のように書きます。

$`\quad x \overset{\T{part-of}(r)}{\longrightarrow} y`$

$`x, y, r`$ は辞書エントリですが、構文ソートの制約が付きます。

  • $`r`$ のソートは RN(役割り名)でなくてはならない
  • $`x, y`$ のソートは CN(一般名)または PN(固有名)でなくてはならない

$`x \overset{\T{part-of}(r)}{\longrightarrow} y`$ の意味は、

  • y の r〈r of y〉は x である

です。すぐ後で例を挙げます。

矢印の向きを逆にしたときは、

$`\quad y \overset{\T{has}(r)}{\longrightarrow} x`$

と書きます。part-of と has に矢印の向き以外の差はありません。

今述べている part-of, has は、「用語・用法図から知識グラフへ // 知識グラフと指標」と「用語・用法図から知識グラフへ // 知識グラフ」で導入した part-of, should-be の2本の矢印を1本にまとめたものです。1本の矢印なので、より簡潔に書けます。

日常的な例を挙げると:

$`\quad \xymatrix@C+3pc{
{\T{バンズ#CN}}
\ar[r]^-{ \T{part-of}(\T{バンズ#RN} ) }
&{\T{ハンバーガー#CN} }
}
`$

has を使うなら:

$`\quad \xymatrix@C+3pc{
{\T{ハンバーガー#CN}}
\ar[r]^-{ \T{has}(\T{バンズ#RN} ) }
&{\T{バンズ#CN} }
}
`$

これを普通の日本語にすると、「ハンバーガーのバンズはバンズである」です。ただし、2回出現する「バンズ」の構文ソート〈品詞〉が違います。片方は役割り名で、ハンバーガーという構造の構成素の役割り名です。もう一方は一般名〈普通名詞〉でパンの種類*4です。

ハンバーガー業界の専門用語だと、ハンバーガーという構造の構成素のなかで、上のパンを「クラウン〈crown〉」、下のパンを「ヒール〈heel〉」と呼びます。この専門用語を使うと:

$`\quad \xymatrix@C+3pc{
{\T{バンズ#CN}}
\ar[r]^-{ \T{part-of}(\T{クラウン#RN} ) }
&{\T{ハンバーガー#CN} }
}
`$

この関連性の意味は、

  • ハンバーガー(という構造)のクラウン(上に載せるパン)はバンズ(という種類のパン)である

確率・統計から似た例を挙げましょう。確率空間の下部構造である可測空間を「標本空間」と呼ぶことにして、一方、可測空間の別名としても「標本空間」を使うと約束している前提で:

$`\quad \xymatrix@C+3pc{
{\T{標本空間#CN}}
\ar[r]^-{ \T{part-of}(\T{標本空間#RN} ) }
&{\T{確率空間#CN} }
}
`$

この関連性の意味は、

  • 確率空間(という構造)の標本空間(と呼ぶ下部構造)は標本空間(つまり可測空間)である

そしてそれから

よく使う意味的関連性は他に、is-a(過去記事では included)、is(is-a とは別)、exclusive などもあります。グラフにより、用語や文の構文解析ツリーを表すこともあります(「知識グラフ 3: 構文構造と形式意味論」に書いています)。

複数の辞書をマージすると、フォワード関連性による多義性とは別な多義性(アンカー・エントリの意味が多義化する)が現れます。色々な多義性の分析やそれを解消する工夫が必要になります。曖昧多義性の問題は実に頭が痛いですね。

*1:関連性は関係と言っても同じ事ですが、関係データベースの用語である「関係」と誤認・誤解されないように「関連性」としました。

*2:[追記]「用語辞書: 何が問題なのか? // 「綴」「種」「義」」で、制約を緩めています。「あり得ません」は撤回します。[/追記]

*3:過去記事では、may-be, equals などと書いていた関連性を統合したものです。

*4:丸い形をした歯切れがよいパンです。