この記事では、このブログで使う知識グラフの特徴について解説し、今後機能を拡充する際の方針と、予定している機能追加(の一部)について簡単に述べます。
記事内で使う文字の色については「文字の色の約束(再確認)」を参照してください。$`\newcommand{\T}[1]{ \text{#1} }`$
内容:
ハブ記事:
特徴
このブログで使っている(今後も使おうとしている)知識グラフには次の特徴があります。
- 構文的情報(曖昧多義語、用語のコンフリクト、省略・短縮語など)も記入している。構文的情報は、意味とは関係ない。これは、「意味ネットワーク」という呼び名を避けた理由。
- 形式意味論だけではなくて、非形式意味論/コノテーション意味論(後述)も併用する。
- 形式意味論として、デノテーション意味論〈denotational semantics | 表示的意味論〉と翻訳意味論〈{translation | translational} semantics〉を混合して使っている。
- 語、節、文などの概念が入っているので、従来の形式言語理論でも定式化が可能。
- 知識グラフのトポロジー(「知識グラフ 3: 構文構造と形式意味論 // 語彙と文法」参照)を担う有向グラフに関しては、組み合わせグラフ理論/幾何グラフ理論が使える。
- 構文論が意味的世界のなかで展開できる。
- 意味的世界の事物を、容易に構文側(語彙と文法)に取り込める。
「構文的情報も入れ込む」、「完全な形式意味論を目指さない」のは特徴でもあり方針でもあります。形式化できない/難しい部分では、自然言語記述や他の図(ストリング図やペースティング図)による記述も遠慮なく使う、ということです。
知識グラフは記述・説明の手段と割り切って、定義や証明には(無理には)使わないのも方針です。知識グラフを使った推論はある程度はできるだろうし、面白い話題ですが、過剰な期待はしないことにします。知識グラフが定義や証明の補助にはなっても、主役にはなれないでしょう。
不均質性
意図的というより結果的なんですが、知識グラフは複数の目的を持ち、複数の手法を併用・混合しています。
- 構文記述と意味記述
- 絵図構文とテキスト構文
- 形式意味論と非形式意味論・コノテーション意味論
- デノテーション意味論と翻訳意味論
- 知識グラフとその他の図式
一様性・一律性に欠けて不均質です(ごちゃ混ぜ感はあります)。事情をちょっと言っておきます。
当初は、曖昧多義語/同義語/省略語/コンフリクトなどの構文的情報のグラフィカルな表現が目的でした。後から意味記述の機能を追加したので、木に竹を接いだ印象はあります。
知識グラフは視覚的認識を目的とした絵図〈picture | diagram | figure | graph〉ですが、語・節・文などはテキスト表現可能です(「知識グラフ 3: 構文構造と形式意味論」の前半参照)。グラフィカルな表示がないとメリットは失われますが、テキスト言語としての定式化も(やりたければ)可能です。
形式意味論は、集合論・圏論・依存型理論などに基づく意味論です。非形式意味論〈informal semantics〉は、形式意味論以外の厳密性を求めない意味論です。非形式意味論にはコノテーション意味論〈connotational semantics〉が含まれます。言葉のコノテーション〈connotation〉とは、その言葉から連想されるイメージ・感覚・場面・ニュアンスなどです。コノテーション意味論は、コノテーションを積極的に利用します。もちろん厳密性は期待できませんが、納得感(わかった気がする)には寄与します。
知識グラフの形式意味論は、デノテーション意味論と翻訳意味論のハイブリッド方式です(「知識グラフ 3: 構文構造と形式意味論 // 意味関数」参照)。固有名と一般名の意味論はデノテーション意味論で、文の意味論は翻訳意味論です。なお、カタカナ書きで「デノテーション」としているのは、「表示」という翻訳語は denotation とむしろ逆の解釈をされるからです。2つ前の段落内の「グラフィカルな表示」は graphical denotaion じゃなくて graphical representation です。
知識グラフは、ストリング図やペースティング図と併用します。知識グラフがすべての用途に向いているわけではないからです。例えば、モノイドの結合法則をストリング図やペースティング図で表せばわかりやすいですが、知識グラフでの記述は困難です(やる意味はないです)。
形容詞
知識グラフで使う語は、固有名、一般名、役割り名、関係キーワードのいずれかです。今後、形容詞(この節で説明)と動詞(次節)も追加する予定です。
形容詞を扱うには、次の関係キーワードを追加します。
- qualifies または 修飾する
形容詞を含む文パターンは次の形です。
$`\quad \xymatrix{
\T{【形容詞】〇〇} \ar[r]^{\T{修飾する}}
&\T{【一般名】☓☓}
}`$
具体例は:
$`\quad \xymatrix{
\T{白い} \ar[r]^{\T{修飾する}}
&\T{花}
}`$
$`\quad \xymatrix{
\T{背が高い} \ar[r]^{\T{修飾する}}
&\T{少年}
}`$
$`\quad \xymatrix{
\T{素数である} \ar[r]^{\T{修飾する}}
&\T{自然数}
}`$
名詞は形容詞に修飾されますが、名詞は形容詞としても使えます。
$`\quad \xymatrix{
\T{白い} \ar[r]^{\T{修飾する}}
&\T{花である} \ar[d]^{\T{修飾する}}
\\
{}
&\T{モノ}
}`$
$`\quad \xymatrix{
\T{背が高い} \ar[r]^{\T{修飾する}}
&\T{少年である} \ar[d]^{\T{修飾する}}
\\
{}
&\T{人間}
}`$
$`\quad \xymatrix{
\T{素数である} \ar[r]^{\T{修飾する}}
&\T{自然数である}\ar[d]^{\T{修飾する}}
\\
{}
&\T{数}
}`$
この節は予定・予告を書いているだけなので今はこれ以上の説明はしませんが、名詞(一般名)と形容詞は一対一対応しているとみなせます。名詞と形容詞はあまり違わないのです。
動詞
動詞を扱うには、次の関係キーワードを追加します。
- operates
- outputs
動詞を含む文パターン(operates/outputs文)は次の形です。
$`\quad \xymatrix@C+1pc{
\T{【動詞】〇〇} \ar[r]^{\T{operates}}
\ar[d]_{\T{outputs}}
&\T{【一般名】☓☓}
\\
\T{【一般名】△△}
}`$
動詞は、関数の名前を動詞として表現したものです。具体例は:
$`\quad \xymatrix@C+1pc{
\T{足す} \ar[r]^{\T{operates}}
\ar[d]_{\T{outputs}}
&\T{2つの自然数}
\\
\T{自然数}
}`$
$`\quad \xymatrix@C+1pc{
\T{対数をとる} \ar[r]^{\T{operates}}
\ar[d]_{\T{outputs}}
&\T{正実数}
\\
\T{実数}
}`$
$`\quad \xymatrix@C+1pc{
\T{線形変換する} \ar[r]^{\T{operates}}
\ar[d]_{\T{outputs}}
&\T{ベクトル}
\\
\T{ベクトル}
}`$
これらの例では、動詞の代わりに名詞「足し算」「対数関数」「線形変換」が使えます。名詞と動詞はあまり違わないのです。
日常的な意味での動詞、例えば「食べる」がoperates/outputs文でうまく書けるとは限りません。以下の「??」(2箇所)のところに適切な言葉を埋められますか?
{(食べる, operates, ??), (食べる, outputs, ??)}
「食べる」は動詞(関数の名前)ではなくて、関係を表す一般名としたほうが、なんとかなるかも知れません(以下、正しいかどうか自信はないけど)。
$`\quad \xymatrix{
{}
&\T{【一般名】食べる}
{}
\\
\T{【役割り名】eater} \ar[ur]^-{\T{particip-of}}
\ar[d]_{\T{should-be}}
&{}
&\T{【役割り名】eatee}\ar[ul]_{\T{particip-of}}
\ar[d]^{\T{should-be}} \ar[ll]^{\T{depen}}
\\
\T{生物}
&{}
&\T{食物} \ar[ll]^{\T{depen}}
}
`$
関係の参加者役割り名〈participant role name〉(「知識グラフ 2: 直感的かつ正確な伝達のために // 関係と参加者」参照)である eater, eatee は苦し紛れのネーミングです。
eatee から eater への depen (depends on) の矢印は、構成素・参加者のあいだの依存性(「知識グラフ 2: 直感的かつ正確な伝達のために // 構成素のあいだの依存性」参照)を示します。「食物」から「生物」への depen の矢印は、構成素・参加者のあいだの依存性に伴う型の依存性(依存型理論の概念)です。どんな食物を食べるかは生物ごとに異なるので、生物が決まらないと「食べる食物達の集合」が決まりません。
「食べる」は一例に過ぎませんが、国文法・英文法、日常感覚での品詞(名詞、動詞、形容詞など)が、知識グラフにおける品詞としてそのまま通用するわけではないのです。知識グラフによる知識記述/知識表現には、国文法・英文法とは異なる手法・流儀・作法・コツがあります。
知識グラフの書き換え
知識グラフを書き換える(「描き換える」のほうがふさわしいでしょうが)ことがあります。例えば、関係キーワード part-of は has に置き換えて矢印の向きを反対にしてかまいません。
$`\quad \xymatrix{
{}
&\T{自動車}
&{}
\\
\T{タイヤ} \ar[ur]^{\T{part-of}}
&\T{ハンドル} \ar[u]|{\T{part-of}}
&{エンジン} \ar[ul]_{\T{part-of}}
}
`$
$`\quad \xymatrix{
{}
&\T{自動車} \ar[dl]_{\T{has}}
\ar[d]|{\T{has}}
\ar[dr]^{\T{has}}
&{}
\\
\T{タイヤ}
&\T{ハンドル}
&{エンジン}
}
`$
これは知識グラフを別な知識グラフに書き換えています。知識グラフを別な種類の図式に書き換えることもあります。
$`\quad \xymatrix{
{}
&\T{平面の点}
&{}
\\
\T{x座標} \ar[ur]^{\T{part-of}} \ar[d]_{\T{should-be}}
&{}
&{y座標} \ar[ul]_{\T{part-of}} \ar[d]^{\T{should-be}}
\\
\T{実数}
&{}
&\T{実数}
}
`$
この知識グラフは、以下のペースティング図(可換図式ではない)に書き換え可能です。
$`\quad \xymatrix@C+1pc{
\T{平面の点} \ar@/^1pc/[r]^{\T{x座標}} \ar@/_1pc/[r]_{\T{y座標}}
&\T{実数}
}`$
今後、もっと複雑な書き換えも登場するでしょう。系統的書き換えには書き換え規則〈rewriting rules〉が必要であり、書き換えを伴う知識グラフは項書き換え系〈term rewriting system〉(書き換え対象がグラフなので、グラフ書き換え系〈graph rewriting system〉のほうがふさわしいでしょう)となります。
知識フレーム
知識グラフは、土台となる有向グラフにラベル(ときにラベル以外の属性も)を載せた構造です。ラベルに使う語〈word〉は語彙〈vocabulary〉から選びます。有向グラフへのラベル付けは、文法〈grammar〉によって統制されます(「知識グラフ 3: 構文構造と形式意味論 //語彙と文法」参照)。
知識グラフに出現する固有名・一般名にはデノテーション〈指示対象〉が決まり、知識グラフの文〈sentence〉にも論理式として(翻訳的な)“意味”が決まります。これは、知識グラフの意味論(意味割り当て、意味関数〈意味写像〉)です。
そして、知識グラフには、前節で触れた書き換え規則の集合が付随しているかも知れません。語彙、文法、有向グラフへのラベル付け、意味論、書き換え規則を一緒にまとめて知識フレーム〈knowledge frame〉と呼ぶことにします。
$`\quad \xymatrix{
{}
&{}
&\T{知識フレーム}
\\
\T{語彙} \ar[urr]^{\T{part-of}}
&\T{文法} \ar[ur]|{\T{part-of}}
&\T{ラベル付け} \ar[u]|{\T{part-of}}
&\T{意味論} \ar[ul]|{\T{part-of}}
&\T{書き換え規則} \ar[ull]_{\T{part-of}}
}`$
知識フレームは、知識記述・知識表現のためのデータ構造です。マービン・ミンスキー〈Marvin Lee Minsky〉の“フレーム”と同じデータ構造ではありませんが、目的・用途は同じです。何かを解釈しようとするとき、文脈に応じて適切な知識フレームが“起動”されて、解釈に利用されます。
用語・用法図
知識グラフの出発点は用語・用法図でした(「パンダ用法と用語・用法図」参照)。用語・用法図は、言葉(呼び名、言い回し)の問題を図解することが目的で、意味記述は特に考えていませんでした。
今後とも、用語・用法図は使い続けます。見た目では、用語・用法図と知識グラフは区別つきませんし、区別する必要もないです。が、言葉(呼び名、言い回し)の問題を図解するために使っている図(ラベル付き属性付きグラフ)の用途は用語・用法図です。
例えば、「用語・用法図で分析: 「評価」とラムダ計算」で出した翻訳の曖昧性を表す図を知識グラフのフォーマット(描き方)で描いてみます。
$`\T{翻訳の曖昧性}\\
\quad \xymatrix{
{}
&{\T{replacement}}
\\
{\T{代入}} \ar@{|->}[ur] \ar@{|->}[r] \ar@{|->}[dr]
&{\T{substitution}}
\\
{\T{置換}} \ar@{|->}[uur] \ar@{|->}[ur] \ar@{|->}[dr]
&{\T{assignment}}
\\
{\T{割り当て}} \ar@{|->}[ur]
&{\T{permutation}}
}
`$
この図は、意味論と無関係とはいいませんが、言葉の問題を主題的に扱っています。