メインコンテンツまでスキップ

概要

このドキュメントでは、本プログラムの文法システムの中核的な設計思想と機能について解説する。

本システムの目的

本システムの目的は、入力された単語や句の組み合わせ(構成素)が、定義された文法規則に照らして適格であるか不適格であるかを判定することである。そして、適格であると判定された場合には、その構造的な意味を日本語の構成素として生成する。

設計思想

本システムは、以下の2つの要素から構成されている。

  1. 言語普遍的な文法 (Grammar) 単語を組み合わせるための、特定の言語(例: 英語、日本語)に依存しない汎用的な規則群。「ある単語が要求する要素が、その左右に正しく配置されているか」といった抽象的な組み合わせの妥当性のみを検証する。

  2. 言語固有の語彙 (Lexicon) 個々の単語(例: "book", "read")が持つ文法的な性質を定義したデータ。ある単語がどのような種類の要素をいくつ要求するか、そしてそれがどのように翻訳されるかといった情報は、すべて語彙側に記述される。

この設計により、中核となる「文法」部分を変更することなく、「語彙」の定義を差し替えることで、理論上は英語以外の言語の解析にも対応可能である。

この「言語に依存しない文法」は、生成文法の文脈で議論される普遍文法(Universal Grammar)の概念に対応するものと考えることもできる。

語彙の定義

本システムにおける最大の特徴は、すべての語彙項目が、伝統文法における品詞(名詞、動詞など)に関わらず、Phraseという統一された形式(インターフェイス)で定義される点である。

これにより、各語彙はそれ自体が小さな文法規則のように振る舞う。例えば、動詞 "read" と名詞 "book" の語彙定義は、以下のように同じ構造で記述される(簡略版)。

動詞 "read" の定義例

{
// この語彙が持つ中心的な性質。これは「動詞(verb)」である。
"head": { "type": "verb", "tense": "present", ... },

// 左側に要求する要素。主格(case: "nom")の「三人称単数以外(non-3sing)」の名詞句を1つ要求する。
"left": [{ "head": { "type": { "type": "nominal", ... }, "agr": { "type": "non-3sing" }, "case": "nom" } }],

// 右側に要求する要素。対格[目的格](case: "acc")の名詞句を1つ要求する。
"right": [{ "head": { "type": { "type": "nominal", ... }, "case": "acc" } }],

// 翻訳を生成するための規則。
"translationTemplates": {
"default": [{ "path": ["right", 0], "particle": "を" }, "読む"],
"imperfective": [{ "path": ["right", 0], "particle": "を" }, "読ま"],
"past": [{ "path": ["right", 0], "particle": "を" }, "読んだ"]
}
}

名詞 "book" の定義例

{
// この語彙が持つ中心的な性質。これは「三人称単数(3sing)」の「名詞(nominal)」である。
"head": { "type": { "type": "nominal", ... }, "agr": { "type": "3sing" } },

// `left`と`right`は空配列(省略)。この単語は他の要素を要求しない。

// 翻訳を生成するための規則。
"translationTemplates": {
"default": ["本"]
}
}

このように、単語の振る舞いはすべて、全く同じ形式のデータに沿って定義される。

なお、多くの語彙が持つ共通の性質(例: 英語の動詞は主語を左に取る)を効率的に捉えるため、多くの語彙はテンプレートに沿って生成されているが、これはあくまで便宜的なものである。例外的な振る舞いをする語彙は、上記形式に沿って個別に定義することで、文法に一切の変更を加えることなく容易に対応できる。

このアプローチは、一見すると文法の情報量を語彙に移動させただけのように見えるかもしれない。しかし、これにより、品詞ごとに異なる文法規則を多数用意するのではなく、「ある要素が、自身の定義に沿って他の要素と結合できるか」という単一の汎用的な規則で文全体を組み立てることが可能になる。結果として、システム全体の複雑さが大幅に軽減され、例外的な単語への対応も容易になる。

意味の生成

意味(日本語訳)の生成は、語彙定義に含まれる翻訳テンプレートに基づいて行われる。これは、AIモデルが膨大なデータから統計的に最も確からしい訳を推測する一般的な機械翻訳とは根本的に異なる。

本システムでは、文の構造的な関係性、すなわち述語(動詞など)と項(主語や目的語など)の対応関係を明示的に捉え、その構造に基づいて決定論的に翻訳文を構築する。例えば、「主語は助詞『が』を伴う」「目的語は助詞『を』を伴う」といった規則がテンプレート内に記述されている。

理論的背景

本システムの文法は、ノーム・チョムスキーによって創始された生成文法の流れを汲んでいる。生成文法では、単純な句構造文法(文脈自由文法)では捉えきれない、長距離依存("What did you see ___?")といった複雑な現象を扱うことが1つの課題とされた。現代の文法理論では、より多くの情報を語彙に担わせる語彙化文法 (Lexicalized Grammar) のアプローチが主流となっている。

本システムは、その中でも特に主辞駆動句構造文法 (HPSG: Head-Driven Phrase Structure Grammar) の基本原則に強く影響を受けている。各要素を詳細な素性(feature)の集合体として捉え、それらを単一化 (unification) という操作で矛盾なく統合できるか否かによって文の適格性を判定する、というHPSGの考え方がシステムの中核をなしている。ただし、実装上の実用的な理由から、専門的な名称や定義の一部は簡略化・変更されている。

他にも、代表的な語彙化文法には、組み合わせ範疇文法(CCG: Combinatory Categorial Grammar)、語彙機能文法(LFG: Lexical Functional Grammar)などがある。

本ドキュメントについて

このドキュメントの本文では、ここまで概説した内容について、以下の点を詳細に解説する。

  • 適格性の判定: 語彙定義と単一化を用いて、単語の組み合わせが文法的に正しいかを判断する具体的な仕組み。
  • 複雑な構文の実現: 主語と動詞の一致や、wh疑問文("What did you see?" など)といった複雑な構文が、統一された語彙形式と汎用的な文法規則の組み合わせによってどのように実現されるか。
  • 意味生成の仕組み: 翻訳テンプレートが、解析された構文構造からどのようにして最終的な日本語文を合成するかの詳細なプロセス。