大泉様、皆様:
Jun Oizumi wrote:
> 2010/6/24 NIIBE Yutaka :
>> それで、この形を生成してみようと思ったら、feature/alt-depgraph-new で
>>
>> @「よ」終助 "よ" @_引用(共通)
>> @_引用(共通) "" @「って」終助(引用)
>> @「って」終助(引用) "って" @「よ」終助
>>
>> とノード遷移のループがあることを発見しました。
>>
>> これは意図的な記述でしょうか?
>
> はい。
>
> 初めは、ループを根絶しようと思ったのですが、やってみたら「実質的に不可能」と
> 悟りました。やろうと思えば不可能ではないと思いますが、そうすると保守できない
> くらいには煩雑になります。
> なので、「たくさん枝が分岐して処理が重くなるようなループ」だけを回避することに
> して、根絶は諦めました。
わかりました。それだとすると、もう一度、ここの仕様を考えたいと思います。
ループがあることが前提とすると、このノード遷移形式の記述で表現できる文
字列集合は、形式言語理論における正規表現で表現できる文字列集合と同等で
す。
つまり、このノード遷移形式の記述で書けることはすべて形式言語理論におけ
る正規表現で書けます。また、形式言語理論における正規表現で書けることは
このノード遷移形式の記述で書けます。おんなじです。
ツリーであれば、(僕には)ノード遷移形式で書く意義がある感じがしますが、
そうでないとすると正規表現での記述の方が保守しやすいかもしれません。
(1) 品詞 正規表現 C/S/H/weak の属性
とルールを記述する事を検討したいと思いますが、いかがでしょうか?
この (1) だけだと不便なのは、今はノード名で表現できているある種の概念の
記述がなくなっちゃうことでしょうか。
(2) パターン名 正規表現
という記述を可能とし、{パターン名} が正規表現で参照できるとするのはアリ
でしょう。Lex の記法です。
ノード遷移途中での属性の指定も考えないといけない? か。(2) にアクション
の記述を追加するのでしょうか。あぁ、もう完全にLexの記法です。
直感的には、これでいけそうだけど、記述の面として、どうかなぁ。
付属語に関してご経験の有る各位の意見をいただければと思います。
* * *
そう思って見直してみると、たしかに現在の src-splitter/depgraph.c 正規表
現の matcher の実装には、うーん、なっています。NDFA の実装と読めます。
ルール記述は、NDFA (+ alpha(属性など))を手で書くというもの、と理解でき
ます。
ソフトウェアの方で広く使われる「正規表現」の文字列集合は形式言語理論に
おける正規表現より貧乏だったり(伝統的 UNIX)、豊かだったり(POSIX, Perl,
Emacs)します。
Anthy の付属語の文字列について利用する正規表現を、ナイーブに形式言語理
論における正規表現にとどめておくのがいいのか、POSIX/Perl/Emacs 正規表現
でも構わないと拡張するのかの判断は、後回しにしたいと思います。
実装は、わざわざナイーブな正規表現 matcher を作るよりも有るものを使う方
向で考えたいと思います。
こう整理しちゃうと、Anthy の怪しかった魅力が少なくなりますが、それはご
勘弁ください。
--
_______________________________________________
Anthy-dev mailing list
[email protected]
http://lists.sourceforge.jp/mailman/listinfo/anthy-dev