大泉です。
基本的には同意ですが、ただ、微妙に私の理解とズレが…。
> (1) と (2) の対応が現実装では typetab で提供されていたが、保守がいまい
> ちだったということなのかな。
ptab.h と typetab は完全に独立のものではないでしょうか?
実際の動作から推測した限りの理解ですが、
[ptab.h と wtab.h の関係]
1) 辞書のエントリの品詞コード(#XX)を見る
↓
2) wtab.h にその品詞コードを探し、その品詞コードに対応する
情報(POS, COS, CC etc)を得る
↓
3) 2) で得た情報を元に ptab.h を検索し、品詞名( "名詞35" 等)を得る
↓
4) 3) で得た品詞名を元に depgraph/indepword.txt を検索し、
後続ノード名を得る
5) 後は、depgraph/master.depword から各品詞用の *.depword を辿って
1) の語に続く付属語列を得る
(つまり、ptab.h は辞書と付属語グラフをつなげる処理に使われるもので、ユーザの目には
触れない。)
[typetab と wtab.h の関係]
1) anthydic-tool で単語登録
入力例:
ほげ 500 ホゲ
格助詞接続 = y
語幹のみで文節 = y
する接続 = n
さ接続 = n
な接続 = n
品詞 = 名詞
↓
2) anthy-dic-tool が 1) の情報(品詞名、何が接続するか等)で typetab を検索し、
品詞コードを取得(上記の例では T35 が該当)し、~/.anthy/private_words_* に書き出す
$ cat ~/.anthy/private_words_default
ほげ #T35*500 ホゲ
↓
3) ~/.anthy/private_words_* に登録されたエントリが変換に使われる場合は、
[ptab.h と wtab.h の関係] に書いたのと同様。
(従って、typetab にある品詞名は、ptab.h にある品詞名と異なっていても問題ない。)
という風になってると思うのですが。
(code 読めませんし、anthy-dic-tool を使ったこともないので、イマイチ自信がありませんが)
ただ、現状は(私の理解で正しかったとして)上記のようになっているとしても、
「typetab を手で保守するのではなく」というのは仰るとおりだと思います。
「ptab.h/wtab.h から typetab を生成する」とか「品詞名から品詞コードに変換する API を
用意する」とかするべきかと。
ちょっと余談です。
以前から思っていたのですが、ptab.h と wtab.h はファイルを分ける必要はない気がします
昔は必要があったのかも知れませんが、少なくとも今は単なる無駄ではないかと。
wtab.h に品詞名のフィールドを追加して
----------
[...]
{"#F00",POS_AV,COS_NONE,SCOS_F0,CC_NONE,CT_NONE,WF_INDEP,"副詞0" /*
"副詞(と,たる,する,語幹)"*/},
{"#F01",POS_AV,COS_NONE,SCOS_F1,CC_NONE,CT_NONE,WF_INDEP,"副詞1" /*
"副詞(と,たる,する)"*/},
{"#F02",POS_AV,COS_NONE,SCOS_F2,CC_NONE,CT_NONE,WF_INDEP,"副詞2" /*
"副詞(と,たる,語幹)"*/},
[...]
----------
のような感じにすれば ptab.h は不要だと思うのですが。
(「直すとなるとあちこちに影響が出て面倒だからそのままになってるのかも」という気もしますが。)
# すみません、色々考えてたら混乱してきたので、以下、個別に回答します。
2010/6/22 NIIBE Yutaka :
> (1) ptab.h: ユーザが目にする品詞名
> (2) wtab.h: 辞書の単語の種類を示す #XX という表記
> 辞書の開発者は目にするわけですけど
> (3) 霞がユーザに見せる品詞名
>
> ここは、一対一に対応するのが「正しい」と思いますがどうでしょうか。
はい。
> なにがユーザに見せるもので、何が内部のものかというような考察があって、
> ユーザに見せるものを的確に定義できればいいのですが、できないと思うので、
> 一対一が現実的ではないかと思います。
>
> つまり、辞書の単語の種類についてユーザは見ることができる。辞書の単語の
> 種類についてユーザは指定することができる。この2点はサポートされるべきと
> 思います。
すみません、ここはちょっと意味を取り兼ねていますが、
内部のもの=品詞コード
ユーザに見せるもの=品詞名や接続の有無など
で、要するに「ユーザには分かりやすい品詞名を提示する、かつ、それは品詞コードに
一対一対応で置き換えられる」ということでしょうか?
> ptab.h, wtab.h とともに typetab を手で保守
> するのではなく、API として (1)<->(2) の関係についてのルーチンが提供され
> ているのが「正しい」と思います。
同意です。
> (3) は、どうしたものでしょうか。
霞や uim-dict-gtk のメンテナさん次第でしょうか。
API を用意しても、品詞コードに非互換な変更が加えられない限りは、「現状のままで
問題ない(API を使うように変更する積極的理由はない)」と判断されそうな気がしますが。
_______________________________________________
Anthy-dev mailing list
[email protected]
http://lists.sourceforge.jp/mailman/listinfo/anthy-dev