fc2ブログ

形容詞ア段の失敗

 やっぱり古いスクリプトには穴があった。
 「現代日本語の文法記述はかなりの部分カバーできている」とか言ってコードを晒したがひとつ大事な漏れがあった。形容詞ア段末尾の、ア段音の子音がなに行音かを網羅するのを忘れていた。慌てて探したらだいたい見当はついた。

  ア行:思いつかない。
  カ行:「赤い」。
  ガ行:「苦い」。
  サ行:「浅い」。
  ザ行:「うざい」。
  タ行:「痛い」。
  ダ行:思いつかない。
  ナ行:「無い」「勿体ない」「穢い」。
  ハ行:思いつかない。
  パ行:「酸っぱい」。
  バ行:「やばい」。
  マ行:「甘い」。
  ヤ行:「早い」。
  ラ行:「辛い」。
  ワ行:「怖い」。だけど音韻変化するのか?

 とにかく十二音はあるのと、受身・尊敬:可能:使役の形態素の処理があるのであと数十行は行数が増えるはずだ。それを入れて八百行未満で収まるかどうかで今後の方針が決まると思う。そんなわけで、明日はどっちだ。
スポンサーサイト



現代日本語の文法

 現代日本語の形態素レベルの記述文法の、文法記述ファイルの修正がほぼ終わった。あとは言語処理系を復活させてコーパスデータで叩いて精度を上げるだけだ。行数にして(しつこく強調するが、空白行とコメントを含めて)620行。
 昔はコーパスデータを用意するだけで一苦労だったが、現在はインターネットが普及している。だいいち自分で書いたこの WebLog がある。Java の GUI 関連の機能も充実してきて、私も少しは自分で書いた GUI 関連の Java のルーチンもある。クリップボード経由のデータ渡しも経験済みだ。できないのはエディタの開発くらいだ。Eclips のソースでもギッてくりゃいいのかもしれないが。
 で、この文法、解析精度は一万語辞書で99,7%以上だ。とはいえ一万語集めるのは大変だろう?と思うとさにあらず。この文法、漢字かな交じり文から辞書未登録語を抽出のにも使えるのだ。
 東京大学の名誉教授である小堀敬一郎さんという先生がいらっしゃる。専攻はドイツ文学、比較文学。で、小堀先生がお書きになる文章は、文語体で歴史的かなづかひなのである。つまり、現代にも「文語体と歴史的かなづかひ」を使ふ方がいらっしゃるのだ。もちろん私にとっては読みやすいのだが、いまひとつ自信がない。古い辞書には歴史的かなづかひによる表記がついているので調べればわかるのであるが、その辞書を引く手間が厭なのである。となれば、この手間をパーソナルコンピュータが引き受けてくれるのならば、樂に歴史的かなづかひ表記の文語文が讀めてしまふのだ。勿論、現代文を文語體に(用字は正字である)変換することもできる。これで縁本でも書いたらさぞかし痛快だらう。もちろんルビだって歴史的かなづかひなのだ。これを警察が取締りうるだらうか。否、取り締まれない(反語表現)。四畳半裁判

 で、こういう話になると無暗に張りきってしまうプログラマがいそうだ。つーか、いない訳がない。います。いるとも。
 そうすると何が嬉しいかというと、あっちゃこっちゃに野良の処理系が蔓延(はびこ)ったりするのだ。
 で、文法記述ファイルを差替えれば、フツーに実用になる文字処理システムなのである。こうなると仕事が回り金が回って景気がよくなる。「しかし外貨は稼げないだろう?」と思うとさにあらず。電子テキストファイルにしちゃえばそのシステムでアニメやドラマの原作が読めてしまうのだ。そもそも ellisp の出発点は漢字かな交じり文用の辞書引きシステムであり、海外の方からは「外国人だと国語辞典が引けないのですっげぇ便利(^_^)v」と言われたのである。もちろん漢文だって白文で読めてしまう。原文で「金瓶梅」を読んでる高校生がいたっていいじゃないか。アラン・バートンの「カーマ・スートラ」とか「医心方 房内編」とかでもオッケーだろう。
 システム開発者諸君。どうだ、やる気は出てきたかい?

 ↓現時点のファイルの内容はこれ。

/* 現代語基本文法 1994/05/24 */
/* update 2022/08/14 */

/* 動詞 */

[分節] - [動詞];

[分節] - "お" - [動詞] ("[冠詞:御]");

[分節] - [動詞俗];
[分節] - [動詞敬];

/* 「お」+動詞連用形現在の形を取らない動詞があることに注意。 */

( [動i段音末原] | [動e段音末原] ) - [動ie段音末原];

( [動a段音末原] | [動o段音末原] | [動u段音末原] | [動詞「言う」原] )
- [動aou段音末原];

[動ie段音末原] - [動否定];
[動ie段音末原] - "よう" - [動未然];
[動ie段音末原] - [動連用現];
[動ie段音末原] - "る" - [動連体現];
[動ie段音末原] - "れ" - [動已然];
[動ie段音末原] - "ろ" - [動命令];

[動aou段音末原] - "わ" - [動否定];
[動aou段音末原] - "おう" - [動未然];
[動aou段音末原] - "い" - [動連用現];
[動aou段音末原] - "う" - [動連体現];
[動aou段音末原] - "え" - [動已然];
[動aou段音末原] - "え" - [動命令];

[動k行音末原] - "か" - [動否定];
[動k行音末原] - "こう" - [動未然];
[動k行音末原] - "き" - [動連用現];
[動k行音末辞] - "いて" - [動連用過・完];
[動k行音末原] - "く" - [動連体現];
[動k行音末辞] - "いた" - [動連用過・完];
[動k行音末原] - "け" - [動已然];
[動k行音末原] - "け" - [動命令];

[動g行音末原] - "が" - [動否定];
[動g行音末原] - "ごう" - [動未然];
[動g行音末原] - "ぎ" - [動連用現];
[動g行音末辞] - "いで" - [動連用過・完];
[動g行音末原] - "ぐ" - [動連体現];
[動g行音末辞] - "いだ" - [動連体過・完];
[動g行音末原] - "げ" - [動已然];
[動g行音末原] - "げ" - [動命令];

[動s行音末原] - "さ" - [動否定];
[動s行音末原] - "そう" - [動未然];
[動s行音末原] - "し" - [動連用現];
[動s行音末辞] - "して" - [動連用過・完];
[動s行音末原] - "す" - [動連体現];
[動s行音末辞] - "した" - [動連体過・完];
[動s行音末原] - "せ" - [動已然];
[動s行音末原] - "せ" - [動命令];

[動t行音末原] - "た" - [動否定];
[動t行音末原] - "とう" - [動未然];
[動t行音末原] - "ち" - [動連用現];
[動t行音末辞] - "って" - [動連用過・完];
[動t行音末原] - "つ" - [動連体現];
[動t行音末辞] - "った" - [動連体過・完];
[動t行音末原] - "て" - [動已然];
[動t行音末原] - "て" - [動命令];

[動r行音末原] - "ら" - [動否定];
[動r行音末原] - "ろう" - [動未然];
[動r行音末原] - "り" - [動連用現];
[動r行音末辞] - "りて" - [動連用過・完];
[動r行音末原] - "る" - [動連体現];
[動r行音末辞] - "りた" - [動連体過・完];
[動r行音末原] - "れ" - [動已然];
[動r行音末原] - "れ" - [動命令];

[動n行音末原] - "な" - [動否定];
[動n行音末原] - "のう" - [動未然];
[動n行音末原] - "に" - [動連用現];
[動n行音末辞] - "んで" - [動連用過・完];
[動n行音末原] - "ぬ" - [動連体現];
[動n行音末辞] - "んだ" - [動連体過・完];
[動n行音末原] - "ね" - [動已然];
[動n行音末原] - "ね" - [動命令];

[動b行音末原] - "ば" - [動否定];
[動b行音末原] - "ぼう" - [動未然];
[動b行音末原] - "び" - [動連用現];
[動b行音末辞] - "んで" - [動連用過・完];
[動b行音末原] - "ぶ" - [動連体現];
[動b行音末辞] - "んだ" - [動連体過・完];
[動b行音末原] - "べ" - [動已然];
[動b行音末原] - "べ" - [動命令];

[動m行音末原] - "ま" - [動否定];
[動m行音末原] - "もう" - [動未然];
[動m行音末原] - "み" - [動連用現];
[動m行音末辞] - "んで" - [動連用過・完];
[動m行音末原] - "む" - [動連体現];
[動m行音末辞] - "んだ" - [動連体過・完];
[動m行音末原] - "め" - [動已然];
[動m行音末原] - "め" - [動命令];

/* 補助動詞 */

/* 「~ている」「~てみる」 */
[動連用過・完] - "い" - [動ie段音末原] ("[補助動:_i]");
[動連用過・完] - "み" - [動ie段音末原] ("[補助動:mi]");

[名詞末] - "によ" - [動r行音末辞] ("[補助動:niyor]");

/* 不規則活用動詞表 */

/* サ変「する」 */

[動詞俗] - "し" - [動否定口] ("[動:する][未然]");
[動詞俗] - "せ" - [動否定文] ("[動:する][未然]");
[動詞俗] - "しよう" - [動未然] ("[動:する][未然]");
[動詞俗] - "し" - [動連用現] ("[動:する][連用]");
[動詞俗] - "する" - [動連体現] ("[動:する][連体]");
[動詞俗] - "し" - [動過・完t形];
[動詞俗] - "する" - [動仮定] ("[動:する][仮定]");
[動詞俗] - "しろ" - [動命令口] ("[動:する][命令]");
[動詞俗] - "せよ" - [動命令文] ("[動:する][命令]");

/* カ変「来る」 */

[動詞俗] + "こ" | "来" + [動否定] ("[動詞「来る」]");
[動詞俗] + "こよう" | "来よう" + [動未然] ("[動詞「来る」]");
[動詞俗] + "くる" | "来る" + [動連体現] ("[動詞「来る」]");
[動詞俗] + "きて" | "来て" + [動過・完t形] ("[動詞「来る」]");
[動詞俗] + "これ" | "来れ" + [動仮定] ("[動詞「来る」]");
[動詞俗] + "こい" | "来い" + [動命令] ("[動詞「来る」]");
[動詞俗] + "き" | "来" + [動連用現] ("[動詞「来る」]");

/* 「行く(ゆく/いく)」 */

[動詞] + "ゆ"|"行" + [動詞「ゆく」辞] ("[動詞「ゆく」]");
[動詞] + "ゆ"|"往" + [動詞「ゆく」辞] ("[動詞「ゆく」]");
[動詞] + "ゆ"|"征" + [動詞「ゆく」辞] ("[動詞「ゆく」]");
[動詞] + "ゆ"|"逝" + [動詞「ゆく」辞] ("[動詞「ゆく」]");

[動詞「ゆく」辞] - "か" - [動否定];
[動詞「ゆく」辞] - "こう" - [動未然];
[動詞「ゆく」辞] - "き" - [動連用現];
[動詞「ゆく」辞] - "き" - [動過・完t形];
[動詞「ゆく」辞] - "く" - [動連体現];
[動詞「ゆく」辞] - "け" - [動仮定];
[動詞「ゆく」辞] - "け" - [動命令];

[動詞] - {行|い} - [動詞「いく」辞] ("[動詞「いく」]");
[動詞] - {往|い} - [動詞「いく」辞] ("[動詞「いく」]");
[動詞] - {逝|い} - [動詞「いく」辞] ("[動詞「いく」]");
[動詞] - {征|い} - [動詞「いく」辞] ("[動詞「いく」]");

[動詞「いく」辞] - "か" - [動否定];
[動詞「いく」辞] - "こう" - [動未然];
[動詞「いく」辞] - "きki" - [動連用現];
[動詞「いく」辞] - "った@'" - [動過・完t形];
[動詞「いく」辞] - "ku" - [動連体現];
[動詞「いく」辞] - "ke" - [動仮定];
[動詞「いく」辞] - "ke" - [動命令];

( [動詞「ゆく」辞] | [動詞「いく」辞] ) - "k" - [動子音末原];

/* 「~ずる」 */

[動名「ずる」型] - "zi" - [動否定口];
[動名「ずる」型] - "ze" - [動否定文];
[動名「ずる」型] - "ziyo_u" - [動未然];
[動名「ずる」型] - "zi" - [動連用現];
[動名「ずる」型] - "zuru" - [動連体現];
[動名「ずる」型] - "zi" - [動過・完t形]; /* 省略表現は接続せず */
[動名「ずる」型] - "zure" - [動仮定];
[動名「ずる」型] - "ziro" - [動命令口];
[動名「ずる」型] - "zeyo" - [動命令文];

/* 「乞う」「問う」 */

[動詞] + "ko"|"乞" + [動詞o末単音節原] ("[動詞「乞う」]");
[動詞] + "ko"|"請" + [動詞o末単音節原] ("[動詞「請う」]");
[動詞] + "to"|"問" + [動詞o末単音節原] ("[動詞「問う」]");

[動詞o末単音節原] - "わ" - [動否定];
[動詞o末単音節原] - "おう" - [動未然];
[動詞o末単音節原] - "い" - [動連用現];
[動詞o末単音節原] - "う" - [動連体現];
[動詞o末単音節原] - "う" - [動過・完t形];
[動詞o末単音節原] - "え" - [動仮定];
[動詞o末単音節原] - "え" - [動命令];

/* 変格活用 */

/* 「する」 */

[「する」先行節] - "si" - [動否定口];
[「する」先行節] - "se" - [動否定文];
[「する」先行節] - "siyo_u" - [動未然];
[「する」先行節] - "si" - [動連用現];
[「する」先行節] - "suru" - [動連体現];
[「する」先行節] - "si" - [動過・完t形];
[「する」先行節] - "sure" - [動仮定];
[「する」先行節] - "siro" - [動命令口];
[「する」先行節] - "seyo" - [動命令文];

/* 動詞勧誘形 */

[動詞敬] - "_ira@'siqa_i" - [動勧誘];
[動詞敬] - "kudasa_i" - [動勧誘];
[動詞敬] - "_o@'siqa_i" - [動勧誘];
[動詞敬] - "nasa_i" - [動勧誘];

[動連用過・完] - "_ira@'siqa_i" - [動勧誘];
[動連用過・完] + "kudasa_i" -> "下sa_i" + [動勧誘];

/* 「理解する」系と「接する」系 */

( [動名「する」型] | [動名「する」単型辞] ) -> [「する」先行節];
[動名「する」型] - "出来|deki" - [動i段音末原] ("[助動詞「~できる」]");

/* 受身・尊敬・可能・使役の形態素 */

/* 受身・尊敬・可能 */
[動ie段音末原] - "rare" - [動e段音末原] ("[受身・尊敬・可能:rare]");

[動詞俗] - "{来|ko}rare" - [動e段音末原] ("[受身・尊敬・可能:rare]");

/* 受身・尊敬 */
[動aou段音末原] - "ware" - [動e段音末原] ("[受身・尊敬:are]");
( [動子音末原] | [使役短縮形] ) - "are"
- [動e段音末原] ("[受身・尊敬:are]");

( [動詞俗] | [「する」先行節] ) - "sare"
- [動e段音末原] ("[受身・尊敬:sare]");

/* 可能 */
[動aou段音末原] - "_e" - [動e段音末原] ("[可能:e]");
[動子音末原] - "e" - [動e段音末原] ("[可能:e]");

/* ら抜き */
[動詞俗] - "{来|re}" - [動e段音末原] ("[受身・尊敬・可能:rare]");

/* 使役 */
[動ie段音末原] - "sase" - [動e段音末原] ("[使役:ase]");
[動aou段音末原] - "wase" - [動e段音末原] ("[使役:ase]");
( [動子音末原] | [使役短縮形] ) - "ase" - [動e段音末原] ("[使役:ase]");

/* 使役(省略形) */
/* [使役短縮形]は[動子音末原]と合流 */
[動ie段音末原] - "sas" - [使役短縮形] ("[使役:as]");
[動aou段音末原] - "was" - [使役短縮形] ("[使役:as]");
( [動子音末原] | [使役短縮形] ) - "as" - [使役短縮形] ("[使役:as]");

( [動詞俗] | [「する」先行節] ) - "sase"
- [動e段音末原] ("[使役:ase]");

[動詞俗] - "{来|ko}sase" - [動e段音末原] ("[使役:ase]");

/* 形容詞 */

[分節] -> [形容詞];

[形a段音末辞] - "a" - [形a段音末原];
[形a段音末漢辞] - "a}" - [形a段音末原];

( [形o段音末原] | [形u段音末原] ) -> [形ou段音末原];
( [形a段音末原] | [形i段音末原] | [形ou段音末原] | [形e段音末原] )
-> [形原];

[形原] - "ki" - [形連体「き」形] ("[連体]");
[形原] - "ku" - [形連用「く」形] ("[連用]");

( [形a段音末原] | [形i段音末原] | [形ou段音末原] ) - "_i"
- [形連体「い」形] ("[連体]");

[形a段音末辞] - "o_u" - [形連用「う」形] ("[連用]");
[形i段音末原] - "qu_u" - [形連用「う」形] ("[連用]");
[形ou段音末原] - "_u" - [形連用「う」形] ("[連用]");

/* 漢字表記の場合 */

[形a段音末漢辞] + "o_u" -> "_u" + [形連用「う」形] ("[連用]");

/* 形態素 */

/* 打消「な」 */
( [動否定] | [動否定口] | [形連用「く」形] ) - "na" - [形a段音末原] ("[打消:na]");

/* 欲求「た」 */
[動連用現] - "t" - [形a段音末辞] ("[欲求:ta]");

/* 様態「げ」 */
[形原] - "ge" - [属性名] ("[様態「~げ」]");

/* 表出「がる」 */
[形原] - "ga" - [動r行音末辞] ("[表出:gar]");

/* 「くあり」 */
[形原] - "karo_u" - [動未然];
[形原] - "ka@'ta" - [動連体過・完];
[形原] - "kare" - [動仮定];
[形原] - "kere" - [動仮定];

/* 「難(がた)い」「難(にく)い」「易い」 */
[動連用現] - "{難|gat" - [形a段音末漢辞];
[動連用現] - "{難|niku}" - [形ou段音末原];
[動連用現] - "{易|yasu}" - [形ou段音末原];

/* 「過ぎる」 */
( [形原] | [動連用現] | [属性名] ) - "{過|su}gi" - [動ie段音末原];

/* 「べし」 */

[動連体現] - "be" - [「べし」原];
[動名「する」型] - "sube" - [「べし」原];
[形原] - "karube" - [「べし」原];

[「べし」原] - "ki" - [「べし」連体];
[「べし」原] - "ku" - [「べし」連用];
[「べし」原] - "si" - [「べし」命令];

/* 補助動詞 */

/* 「くる」 */
[動連用過・完] - "{来|ko}" - [動否定];
[動連用過・完] - "{来|ko}yo_u" - [動未然];
[動連用過・完] - "{来|ku}ru" - [動連体現];
[動連用過・完] - "{来|ki}te" - [動連用過・完];
[動連用過・完] - "{来|ki}ta" - [動連体過・完];
[動連用過・完] - "{来|ku}re" - [動仮定];
[動連用過・完] - "{来|ko}_i" - [動命令];
[動連用過・完] - "{来|ki}" - [動連用現];

/* 「ゆく」 */
[動連用過・完] + "{行|yu}ka" -> [動否定];
[動連用過・完] + "{行|yu}ko_u" -> [動未然];
[動連用過・完] + "{行|yu}ki" -> [動連用現];
[動連用過・完] + "{行|yu}kite" -> [動連用過・完];
[動連用過・完] + "{行|yu}ku" -> [動連体現];
[動連用過・完] + "{行|yu}ke" -> [動仮定];
[動連用過・完] + "{行|yu}ke" -> [動命令];

[動連用過・完] - "_i" - [動詞「行く」原]; /* 「行く」 */
[動連用過・完] - "_o" - [動k行音末辞]; /* 「おく」 */
[動連用過・完] - "sima" - [動a段音末原]; /* 「しまう」 */

/* 名詞 */

[分節] - [「お」名];
[分節] - [「ご」名];
[分節] - [無冠名];

[分節] - [冠詞];
[冠詞] - {御|お} - [「お」名];
[冠詞] - {御|ご} - [「ご」名];

( [普通名辞] | [動名「する」型] ) - [名詞末];

( [形原] | [属性名辞] ) - "さ" - [名詞末];

[連体修飾節] - "の" - [名詞末] ("[準体助詞:の]"); /* 準体助詞「の」 */
[連体修飾節] - {物|の} - [名詞末] ("[準体助詞:の]"); /* 準体助詞「の」 */

/* 属性名詞(形容動詞) */

[属性名辞] -> [属性名];

( [動連用現] | [形原] ) - "そう" - [属性名] ("[様態:そう]");
[連体修飾節] - "よう" - [属性名] ("[比定:よう]");
[連体修飾節] - {様|よう} - [属性名] ("[比定:よう]");

[名詞末] - "のよう" - [属性名];

[分節] - "{無|さそ}う" - [属性名];

[属性名] -> [名詞末];

/* 節 */

/* 助動詞「ます」先行句 */

[形連用「う」形] - "ござい" - [助動「ます」先行句];
[動連用現] - [助動「ます」先行句];

/* 助動詞「ます」節 */

[助動「ます」先行句] - "ません" - [助動「ます」否定節];
[助動「ます」先行句] - "ましょう" - [助動「ます」未然節];
[助動「ます」先行句] - "ます" - [助動「ます」連体現節];
[助動「ます」先行句] - "まして" - [助動「ます」連用過・完節];
[助動「ます」先行句] - "ました" - [助動「ます」連体過・完節];
[助動「ます」先行句] - "ませ" - [助動「ます」命令節];

/* 助動詞「です」 */

( [属性名] | [名詞末] ) -> [助動「です」先行句];

/* 一般形 */

[助動「です」先行句] - "でしょう" - [助動「です」未然節];
[助動「です」先行句] - "です" - [助動「です」連体現節];
[助動「です」先行句] - "でして" - [助動「です」連体過・完節];
[助動「です」先行句] - "でした" - [助動「です」連体過・完節];

/* いわゆる準体助詞の「の」 */
( [動連体現] | [動連体過・完] | [形連体「い」形] ) + "の"
-> [助動「です」先行句] ("[準体助詞:の]");

[属性名] - "なの" - [助動「です」先行句] ("[準体助詞:の]");

/* 動詞連用形現在 */

[動連用現] - [述語修飾節]; /* 動詞連用現在による中止 */
[動連用現] - [複文先行述節];
[動連用現] - [名詞末]; /* 「お」との対応あり */

/* 文法格をもつ節 */

/* 主要な格(主格・対格・与格)であり、格助詞はしばしば省略される */

[名詞末] - "を" - [対格節] ("[助:を]");
[名詞末] - "に" - [与格節] ("[助:に]");

( [対格節] | [与格節] ) - [主要格節];

( [名詞末] | [副格節] ) - "も" - [主要格節] ("[助:も]");

[名詞末] - "にも" - [主要格節] ("[助:にも]");
[名詞末] - "をも" - [主要格節] ("[助:をも]");


/* 点訳用のケア。本来は漢字表記とは別物 */
/*

( [名詞末] | [副格節] ) + "wa" -> "ha" + [主要格節] ("[とりたて助:は]");
[名詞末] + "niwa" -> "niha" + [主要格節] ("[とりたて助:には]");
*/

( [名詞末] | [副格節] ) - "は" - [主要格節] ("[とりたて助:は]");
[名詞末] - "には" - [主要格節] ("[とりたて助:には]");

( [名詞末] | [副格節] ) - "が" - [主要格節] ("[とりたて助:が]");

/* 主要な格ではなく、格助詞を常にともなう */

[名詞末] - "まで" - [副格節] ("[助:まで]");
[名詞末] - {迄|まで}に" - [副格節] ("[助:まで]");
[名詞末] - "から" - [副格節] ("[助:から]");
[名詞末] - "にて" - [副格節] ("[助:にて]");

/* 点訳用のケアは? */
[名詞末] - "へ" - [副格節] ("[助:へ]"); /* 方向格・到達格 */

[名詞末] - "で" - [副格節] ("[助:で]"); /* 具格・於格 */

/* 連体修飾節 */

[名詞末] - "の" - [連体修飾節] ("[体言結合助:の]");
[名詞末] - "か" - [連体修飾節] ("[体言結合助:か]");
[名詞末] - "や" - [連体修飾節] ("[体言結合助:や]");
[名詞末] - "と" - [連体修飾節] ("[体言結合助:と]");

[名詞末] - [主要格節]; /* 「を」「に」の省略 */

/* 述語修飾節と属性修飾節 */

/* 述語修飾節 */

/* 属性名詞+「に」(「見事に」など) */

[属性名] - "ni" - [述語修飾節];

/* 連用修飾句+「と」(「堂々と」など) */

[連用修飾句] - "と" - [述語修飾節];
[連用修飾句] -> [述語修飾節];

/* 動詞否定形口語体 */

[動否定口] - "ずに" - [述語修飾節];

[形連用「く」形] - [述語修飾節];
[形連用「う」形] - [述語修飾節];

/* 文節による修飾(いささか技巧的) */
/*
[文節] - "と" - [述語修飾節];
*/

/* 属性修飾節 */

[分節] - "とても" - [属性修飾節];
[分節] + "{素晴|すば}らしくsubarasiku" - [属性修飾節]; /* 形容詞? */

/* 連体修飾節 */

/* 「見事な」など */
[属性名] - "な" - [連体修飾節];

/* 「美しい」「のどけき」など */
( [形連体「い」形] | [形連体「き」形] ) - [連体修飾節];

/* 文節の定義と点訳時の分かち書き規則 */

( [主要格節] | [副格節] ) - [述語修飾節];
[連体終止節] - [連体修飾節];
( [単純述節] | [複文先行述節] ) - [述節] ("", "・"); /* 点訳規則 */
( [述語修飾節] | [属性修飾節] | [連体修飾節] ) - [非述節] ("", "・") /* 点訳規則 */;

/* 文節は文の区分単位であり、強調助詞を含む。 */

/* 連体終止節 */

[形連体「い」形] - [連体終止節];

( [動連体現] | [動連体過・完] ) - [連体終止節];

/* 「です」「でした」 */
( [助動「です」連体現節] | [助動「です」連体過・完節] ) -> [連体終止節];

/* 「ません」「ます」「ました」 */
( [助動「ます」否定節] | [助動「ます」連体現節] | [助動「ます」連体過・完節] ) -> [連体終止節];

/* 否定の「~ぬ」「~ん」 */
( [動否定] | [動否定文] ) - "ぬ" - [連体終止節];
( [動否定] | [動否定文] ) - "ん" - [連体終止節];

/* 一般節からの定義 */
( [述節] | [非述節] | [接続辞] ) - [一般節];
[一般節] - [文節];

/* 単純述節 */

[連体終止節] - [単純述節];

( [助動「ます」未然節] | [助動「ます」命令節] ) - [単純述節];
[助動「です」未然節] -> [単純述節];
( [動命令] | [動未然] | [動勧誘] ) - [単純述節];

[動連体現] - "na" - [単純述節]; /* 禁止命令 */

/* 複文先行述節 */

/* 助動詞未然節 */

/* 「ましょう」「でしょう」 */
( [助動「ます」未然節] | [助動「です」未然節] ) -> [助動未然節];

/* 逆接の「~けれども、」「~けれど、」「~けど、」(「けども」は?) */
( [助動未然節] | [連体終止節] ) - "けれども" - [複文先行述節];
( [助動未然節] | [連体終止節] ) - "けれど" - [複文先行述節];
( [助動未然節] | [連体終止節] ) - "けど" - [複文先行述節];

( [助動未然節] | [連体終止節] ) - "かしら" - [複文先行述節];
( [助動未然節] | [連体終止節] ) - "から" - [複文先行述節];

/* “または”の意の「~とか」「~か」 */
( [助動未然節] | [連体終止節] ) - "とか" - [複文先行述節];
( [助動未然節] | [連体終止節] ) - "か" - [複文先行述節];

/* 逆接の「~が、」 */
( [助動未然節] | [連体終止節] ) - "が" - [複文先行述節];

/* 連言の「~し、」 */
( [助動未然節] | [連体終止節] ) - "し" - [複文先行述節] ("連言の「~し、」");

/* 連体終止節 */

[連体終止節] - "ので" - [複文先行述節];
[連体終止節] - "のに" - [複文先行述節];

/* 動詞連用過去・完了 */

[動連用過・完] - "から" - [複文先行述節];
[動連用過・完] - "なお" - [複文先行述節];
[動連用過・完] - "も" - [複文先行述節];

[動連用過・完] - "こそ" - [複文先行述節]; /* 強調助詞? */
[動連用過・完] - "まで" - [複文先行述節]; /* 強調助詞? */
[動連用過・完] - "さえ" - [複文先行述節]; /* 強調助詞? */

/* 動詞已然+「ばこそ」「ば」「ども」「ど」 */
/* 修正が必要 2022 */

[動已然] - "ばこそ" - [複文先行述節];
[動已然] - "ば" - [複文先行述節];
[動已然] - "ども" - [複文先行述節];
[動已然] - "ど" - [複文先行述節];

/* 動詞否定文語(特殊) */

/* 「ねばこそ」「ねば」 */
( [動否定] | [動否定文] ) - "ねばこそ" - [複文先行述節];
( [動否定] | [動否定文] ) - "ねば" - [複文先行述節];

/* 動詞連用による順接 */

( [動連用過・完] | [助動「ます」連用過・完節] ) - [複文先行述節];

/* その他 */

[動連用現] - "{乍|なが}ら" - [複文先行述節];

[動連体過・完] - "ら" - [複文先行述節];
[動連体過・完] - "ら" - [複文先行述節];

[形連用「く」形] - "も" - [複文先行述節];
[形連用「く」形] - "ても" - [複文先行述節];

( [動否定] | [動否定文] ) - "ず" - [複文先行述節];

/* 扱い未定 */

[分節] - {筈|はず} - [属性名];
[分節] - {絶対|ぜったい} - [連用修飾節];
[分節] - "{然|しか}も" - [複文先行述節];
[分節] - {絶対|ぜったい} - [属性名];

いろいろと修正、およびトラウマ

 現在の ellisp の文法では、要素のつなぎは ‘-’ だ。ところが昔(一九九四年)のバージョンの現代日本語の基礎文法記述ファイルでは、-と+と->が使えるようになっていた。なんでこうなっているかというと、エントリ「品詞分類」で述べたようないろいろな仕事上のトラブルがあって、いろいろと修正要求が入っていたのだ。けっきょく無駄に終わったが。
 また、マッチングパターが「かな表記」だけのような場合は、"" で括れるようになっていた。そうすると制禦構造がややこしくなってエラー処理に手こずった。当時の開発言語はC だったので、キャッチ&スローが使えないのである。
 つぎに品詞名だ。「形容タ・ラ」は確かに使っていたのだが、けっきょく「属性名詞」という名前に変えた。品詞コードは「MN」である。「大雑把」「器用」「綺麗」「雑」「粗雑」「粗末」「不器用」「真っ赤」「見事」「楽」などすぐにいろいろと思いつくのだが、そのわりに数が少ない点は形容詞に似ている。
 動詞の活用形に関しては、まだ文語の処理に手が回らなかった(その頃は自動点訳への応用を考えていた)ので、文法定義ではまだ「連体形・連体形の現在形と過去または完了形の区別」や「已然形と仮定形の区別」などが文法定義ファイルではちゃんと区別されていなかった。で、文法ファイルをいろいろと修正をいれて漢字かな交じり表記に修正中だが、現時点で(空白行とコメントを含めて)六百行を越えていない。で、子音末尾動詞はナ・バ・マ行、母音末尾動詞はまだ手付かずだがその追加分は四百行を越えないと思うので、総計千行以下で収まると思う。うーん、形態素解析ルーチンが千行以下で書けるって凄いな。

 ついでながら、文法定義ファイルには自動点訳への対応点がいろいろ入っていた。「私は」が「ワタシワ」になるところなんかがそうだ。いわゆる「文節」の切れ目にあたるポイントを「分節」と呼んでいるのはロジカルだと思った。
 それでいろいろ下調べをし、ひょっとしたら聴覚障碍者にも貢献できるんじゃないかと思って障害者団体とかにも熱心にアプローチいたのだが、いよいよ会社が立ち行かなくなった頃に「あの話はどうなりましたが?」と経営者に訊いたら、「福祉は金にならないから放っといた」と言われて切れそうになった。九十年代の半ばというと、まだ世の中にはバブルの夢に浮かされている連中が大勢いたのである。

 それで私は自閉症に関わるようになったのである。

品詞分類

 日本語処理には辞書が必要だ。
 「辞書」といっても辞釈はいらない。単語と読みと文法属性があればいい。ところが、ここで検索キー文字列が違っていると解析に引っかからないのであるだけ無駄だし、「使わないだろう」と思って削っちゃったら思いがけないトラブルが発生したりする。
 前者の例としては、
  {独擅場|どくせんじょう}(名)
がある。これとは別に
  {独壇場|どくだんじょう}(名)⇒独擅場
は項目として同じファイルに入れておくとよい。大きいファイル一個にまとめると管理が大変(管理の手間は語彙数ではなく語彙数の二乗に比例すると考えておこう)なので、こまかく分野分けしておくのが吉だ。「同じ単語が複数のファイルに入っていたら困るだろう!」と怒りだす人がいるが、それをチェックするツールを作って必要があれば文書化するのがよい。
  {糸瓜|へちま}(名)
  {糸瓜|ナーベラー}(名)ウリ科の食用野菜。南西諸島で利用される
とかいう例もあれば、いわゆる「百姓読み」もある。また、
  {菖蒲|あやめ}(名)
  {菖蒲|しょうぶ}(名)
  {蜻蛉|かげろう}(名)
  {蜻蛉|とんぼ}(名)
などもある。
 後者の例としては、
  る (名)
がある。かな漢字変換用の辞書でうっかり削っちゃって「愛する」「圧する」「関する」「接する」「達する」「反する」「評する」がのきなみ出なくなって大騒ぎになった大騒ぎになったとか。これは辞書でカバーするのではなく、「漢字一文字+『す』・『ず』」を文法でサポートしないといけない。ところが、これが理解できずに現場を混乱させる管理職も多い。「多かった」ではなく「多い」と現在形で書かなければいけないのが{辛|つら}い(「{辛|から}い」ではない)。なお、動詞の連用形現在形に接続してラ音末尾形容詞作る形態素「{辛|づら}い」も文法でサポートしておくこと。同様に「{難|かた}い」「{難|にく}い」にも対処が必要である。
 話は名詞に戻って、辞書的に問題になるのは
  {丼|どん}(名)
だ。これが辞書に入っていると「{丼|どんぶり}(名)」を出そうと思って「丼ぶり」が出てくる。ここは無精をせずに「{イクラ丼|いくらどん}(名)」「{親子丼|おやこどん}(名)」「{海鮮丼|かいせんどん}(名)」「{牛丼|ぎゅうどん}(名)」「{鉄火丼|てっかどん}(名)」「{天丼|てんどん}(名)」「{麻婆丼|まーぼーどん}(名)」などを網羅的かつ地道に登録してゆくしかない。それでこそ辞書のプロというものだ。ただ、いちど「ラーメン丼」を「らーめんどん」と呼んでしまって狼狽したそうだ。「一度」が「いちど」か「ひとたび」か、「一時」が「いちじ」か「ひととき」考えこんでいたりした。
 不規則動詞はカ変とサ変がいちばん簡単だ。「いう」と「いく」は、ユーザが新規登録するときにチェッカで撥ねてしまうからそれぞれ別扱いする。「乞う」「問う」は「乞ふ」「問ふ」のような「歴史的かなづかひ」があるので別扱いするのが適切だが、具体的にどう対処するかについては工夫がいる。おっといけない、「{工夫|くふう}(動詞サ変)」「{工夫|こうふ}(名)」だ。

 辞書管理担当者が品詞名の命名で起源を損ねてそのまま職場から消えたこともある。「形容動詞」だ。いわゆる形容動詞はどう見ても動詞ではないので「形容ナ・ニ」と呼んでいたのだが、「『形容動詞』が正しいからそっちを使え」と言ってきた。いわゆる形容動詞はあってもせいぜい三百語かそこいらだから「どうぞ」と言ったら、他の品詞分類まで自分の好きなように変えて途中で消えられたので跡の始末が大変だった。どうやら、「綺麗な(連体形)」「綺麗に(連用形)」があるだけで助詞「な」「に」を立てればよく、「綺麗だ」は「綺麗なXです」の省略だろう、と言ったのがよほど気に入らなかったのかと思ったが、プロジェクトが成功しても自分の手柄にならないのでどこかに転職つもりだったが自分が抜けてからプロジェクトが成功してしまうと転職先の覚えが悪いとみてプロジェクトを潰そうとしたという真相だという噂もあった。

  ellisp 用の辞書は汎用だ。だから用途次第でなんにでも使える。ところがネットワークというデータ構造は、人工知能関係の研究者かなにかでも扱いに手こずる。それで見映えのするアプリケーションが作れずに企画がポシャることも多かった。そもそも、ellisp システムがちゃんと動作する前提として、コンパクトで(コンパクトでないと人間が扱いきれない)精度の高い知識ベースがあってこそだ。それがないと、処理能力の高いマシンをぶん回して人工知能で特性値を求めて重みづけ、とかいったことができない。で、ネットワーク上に巡回路を作らないように距離空間を持ちこんだり(難しい)実行時に動的にチェックしたりとかいうことを考えると、出力側のネットワークが不完全(貼られるべきアローが貼られていないとか、半順序構造なのでどこのノードが対象なのかわからないとか)だったり実行効率がやたらに低くなってマシンパワーが足りなくなったりする。

 「たかが辞書」「たかが品詞分解」「たかが日本語文法」と思うから腹が立つのであって、知識ベースを構築していると思えば、もうちょっと真剣に取り組めそうに思うがどうか。

品詞テーブル

 ここから話はいきなり電算屋向けの話になる。
 じつは、ellisp エンジンそのものは、品詞テーブルとか辞書とかは必要としていない。ellisp エンジンは、ellisp コンパイラが ellisp のソースコードを読んで吐いた TSV ファイルだけを見て動作するだけだ。で、その TSV ファイルというのは、基本的には
  [文法属性1] – {文字パターン1|文字パターン2} – [文法属性2];

  [文法属性1]  [文法属性2]   {文字パターン1|文字パターン2}
に変換しただけのものだ。これとまったく同じ形式の TSV ファイルが辞書からも生成されて、それを見て実行しているだけだ。
 この TSV ファイルが ellisp 処理系の中でどう扱われているかというと、読みこみの際にマッチングパターン文字列を複数生成して、それぞれから辞書引き用のインデックスを生成し、「{文字パターン1|文字パターン2}」という結果と一緒に持っているだけだ。で、それぞれのデータセットはメモリ上に適当に並んでいて、それぞれ順番に使われて候補を全部求めてそこから戻り値にあたるネットワーク構造を返すだけ、ということになっている。
 と、いうことは、だ。ellisp 処理系の動作が止まっているときに、それぞれのデータセット(以下、TSVセット)を増やしたり減らしたり順番を変えたりすることも自由自在、ということになる。これが試してみると面白い。標準語文法セットと標準語彙セットで解析できないときに大阪弁セットと大阪語彙セットを足すと東京人と大阪人の会話がちゃんと解析される、とかいった芸当ができる。

 まず、辞書を見てみよう。
  {雄|おす}(名)
  {押|お}す(動五サ)
とかいった記述が並んでいるはずだ。一方、文法定義の方には[名詞][名詞末][動詞] [動連体] [動連用] [動命令]とかいった文法定義がされている。つまり、
  {雄|おす}は[名詞]で始まって[名詞末]で終わる。
  連体形「{押|お}す」は[動詞]で始まって[動サ行音末原]で終わる原形に変換する。
という前処理が必要になる。それで、「{雄|おす}(名)」は
  ・名詞
  ・[名詞]
  ・[名詞末]
  ・雄
  ・おす
  ・{雄|おす}
というデータに、「{押|お}す(動五サ)」は
  ・動詞五段サ行
  ・[動詞]
  ・[動サ行音末原]
  ・押
  ・お
  ・{押|お}
というデータに変換する必要があって、
  「動五サ」だったら「す」を取れ。
みたいなデータを記述しておかなければならないことになる。

 ここでひとつ白状しておかねばならないことがある。
 本当なら、これらのデータセットは TSV にするより、前処理を済ませてから直列化可能な(シリアライザブルな)クラスのオブジェクトに押しこんでファイルに吐いておけばよかったと思う。
 これとは別に、品詞ファイルはTSV ファイルではなくJava や MySQL(あるいは Oracle のRDBMS )とのインタフェースが確保されたスプレッドシート型アプリ(できればまいっくろソフト以外の)で扱えるように しておけばよかった(本当ならサーバーでも立てたかったが)。
 しかし当時のマイクロソフト社の様子だと、何をするかの判断がつきかねた。

 だから私は現在でも OpenOffice を使っている。
プロフィール

Maria Bethany

Author:Maria Bethany
 コラボレーション集団『大森総合研究所』研究員、兼・広報担当。
 語彙論に興味を持つ。
 主な業績は、動詞活用における“指標音としてのハ行音の消失に伴う、四段活用ハ行動詞の五段活用ワ行動詞への移行”における母音ア・オ・ウ音の指標化の検証。

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR