語彙規則(lexical rule)は、語彙素(lexeme)と呼ばれる語彙項目の基本形から新たな語彙項目を生成するための規則です。 例えば、動詞の原形から過去形を、名詞の単数形から複数形を作るといった規則が考えられます。 Enjuにおける語彙規則の種類は、"enju/types.lil"で定義されています。 また、その実装は"enju-devel/invlexrule.lil", "enju-devel/lexrule.lil"および"enju-devel/lexcommon.lil"で定義されています。 なお、語彙規則の種類および実装はEnjuの文法に特化したものになっています。
Enjuの語彙規則には、通常の語彙素から語彙項目への変換をするものと逆に語彙項目から語彙素への変換をするものの二種類があります。 これは、コーパス指向文法開発の欠点をカバーし、より多くの語彙項目を獲得するための工夫です。 コーパスから得られた語彙項目のほとんどは何らかの統語的変化を起こしているので、文法抽出の際にはまず逆方向の語彙規則を適用して語彙素を獲得します。 最後に、順方向の語彙規則をすべての語彙素に適用して辞書を拡張します。 この方法をとると、順方向の規則のみを用いるよりも多くの語彙素が得られるため語彙項目も多くなります。 また、各規則間には半順序関係が定義されており、この順序に従って一つの語彙項目(語彙素)に複数の語彙規則を重ねて適用することができます。
enju/types.lil | 語彙規則の種類を列挙しています。各規則は'hpsg_lexical_rule'型のsubtypeになっています。 |
enju-devel/invlexrule.lil | 逆方向の語彙規則と、これを利用して語彙素を獲得するためのmayzのインタフェースreduce_lexical_template/5を実装しています。 |
enju-devel/lexrule.lil | 順方向の語彙規則と、これを利用して語彙素から新たな語彙項目を獲得するためのmayzのインタフェースexpand_lexical_template/5, expand_lexicon/3を実装しています。 |
enju-devel/lexcommon.lil | invlexrule, lexrule両方で使われるインタフェースを実装しています。具体的には、規則の適用順序や述語項構造の書き換え規則、語彙素であるための条件などです。 |
名前 | 動作 | 例 |
---|---|---|
動詞の語彙規則 | ||
singular3rd_verb_rule | 動詞の原形から3人称現在単数形を生成します。 | |
no_singular3rd_verb_rule | 動詞の原形から現在形(3人称単数以外)を生成します。 | |
past_verb_rule | 動詞の原形から過去形を生成します。 | |
prp_verb_rule | 動詞の原形から現在進行形を生成します。 | |
passive_verb_rule | 動詞の原形から過去分詞形(受動態)を生成します。生成された語彙項目は意味上の主語を表すbyで始まる前置詞句をcomplementにとります。 | John must love Mary. -> Mary must be loved by John. |
drop_by_rule | 受動態の動詞のcomplementから意味上の主語を示す前置詞句を取り除きます。 | Mary is loved by John. -> Mary is loved. |
perfect_verb_rule | 動詞の原形から過去分詞形(現在完了形)を生成します。 | |
movement_rule | 他動詞の目的語が移動した状態の語彙項目を生成します。 | I like apples. -> Apples I like. |
sentence_movement_rule | 補文をとる動詞において、補文が移動した状態の語彙項目を生成します。 | John said "Hello." -> "Hello" John said. |
pc_prp_r_sbj_rule | pc_*_ruleは分詞構文を扱うための語彙規則で、従属節中の動詞の語彙項目を生成します。3種類の属性によって、8種類に分類されています。
|
The weather getting worse, the picnic was cancelled. |
pc_prp_r_rule | Walking in the park, I run into Hank. | |
pc_prp_l_sbj_rule | ||
pc_prp_l_rule | I went through my pocket looking for the key. | |
pc_passive_r_sbj_rule | ||
pc_passive_r_rule | Written in plain English, the book is easy to read. | |
pc_passive_l_sbj_rule | ||
pc_passive_l_rule | ||
prp_r_adjunct_rule | 右側の名詞句を修飾する現在分詞を生成します。この名詞句は動詞の意味上の主語になります。 | A man runs. -> a running man |
prp_l_adjunct_rule | 左側の名詞句を修飾する現在分詞を生成します。この名詞句は動詞の意味上の主語になります。 | A man runs in the park. -> a man running in the park |
passive_l_adjunct_rule | 左側の名詞句を修飾する過去分詞を生成します。この名詞句は動詞の意味上の目的語になります。 | He broke the window. -> the window broken by him |
passive_r_adjunct_rule | 右側の名詞句を修飾する過去分詞を生成します。この名詞句は動詞の意味上の目的語になります。 | He broke the window. -> the broken window |
imperative_rule | 命令形を生成します。 | |
yn_question_rule | 疑問文中の助動詞を生成します。 | I can swim. -> Can you swim? |
gerund_rule | 動名詞を生成します。 | |
dative_shift_rule(*) | 与格移動を行います。 | He gave her the book. -> He gave the book to her. |
inversion_rule | (sentence_movement がかかった状態などから)主語と動詞の順序を入れ替えます。 | "Hello", John said. -> "Hello", said John. |
insertion_l_rule | 補文をとる動詞において、主語と動詞のが補文に挟まれた状態の語彙項目を生成します。左側の補文が主辞になります。 | He said, "The president resigned because of the problem". -> "The president resigned" he said, "because of the problem." |
insertion_r_rule | 補文をとる動詞において、主語と動詞のが補文に挟まれた状態の語彙項目を生成します。右側の補文が主辞になります。 | He said "The president resigned". -> "The president" he said, "resigned." |
subject_extraction_rule | 補文をとる動詞において、補文の中に動詞句が埋め込まれた状態の語彙項目を生成します。 | I think John loves Mary. -> Who do you think loves Mary? |
extraposition_sbj_rule | 主語を外置した状態の語彙項目を生成します。 | That dogs bark annoys people. -> It annoys people that dogs bark. |
extraposition_obj_rule | 目的語を外置した状態の語彙項目を生成します。 | I believe the problem to be obvious. -> I believe it to be obvious that the problem is not easy. |
名詞の語彙規則 | ||
plural_noun_rule | 名詞の単数形から複数形を生成します。 | |
noun_adjective_rule | 右側の名詞を修飾するような名詞を生成します。 | automobile factory |
前置詞の語彙規則 | ||
content_extraction_rule | 前置詞句中の名詞句が移動した状態の語彙項目を生成します。 | I stayed at the hotel. -> At which hotel did you stay? |
形容詞副詞の語彙規則 | ||
comparative_rule | 比較級の語彙項目を生成します。 | |
superative_rule | 最上級の語彙項目を生成します。 |
語彙規則は基本的にすべての単語に同じように適用されますが、(*)を付けた規則については特殊なケースとみなし、コーパス内で規則の適用が観測された動詞にのみ適用されます。