Mercurial > freewnn
view Wnn/manual/3.libwnn/include @ 29:35bc1f2e3f14 default tip
minor fix
author | Yoshiki Yazawa <yaz@honeyplanet.jp> |
---|---|
date | Sat, 06 Mar 2010 23:55:24 +0900 |
parents | bbc77ca4def5 |
children |
line wrap: on
line source
3.3 使用する構造体 #include"jslib.h" で定義されている構造体は以下の通り。 /* 前端ベクタ(品詞番号)の定義 */ #define WNN_BUN_SENTOU /* 大文節の先頭になれる */ #define WNN_ALL_HINSI /* すべての品詞 */ /* 終端ベクタの定義 */ #define WNN_VECT_KANREN /* 連文節変換の終端ベクター */ #define WNN_VECT_KANTAN /* 単文節変換の終端ベクター */ #define WNN_VECT_KANZEN /* 全候補取出しの終端ベクター */ #define WNN_VECT_BUNSETSU /* 連文節変換時の、各文節の終端ベクター*/ #define WNN_VECT_NO /* 終端ベクタ1 無し */ /* 文節の前端の接続情報 */ #define WNN_CONNECT /* 指定された(品詞、付属語)に接続できた。*/ #define WNN_SENTOU /* 大文節の先頭 */ #define WNN_NOT_CONNECT /* 先頭になれないし、前に接続できない */ #define WNN_GIJI /* 疑似文節を作った。*/ /* 疑似文節の直前に選択した候補 */ #define WNN_HIRAGANA /* ひらがな *//* 読みのまま */ #define WNN_KATAKANA /* カタカナ */ /* 数字 */ #define WNN_NUM_HAN /* 半角数字 *//* 読みのまま */ #define WNN_NUM_ZEN /* 全角数字 *//* 123 */ #define WNN_NUM_KAN /* 漢数字 *//* 一二三 */ #define WNN_NUM_KANSUUJI /* 漢数字 *//* 百二十三 */ #define WNN_NUM_KANOLD /* 漢数字 *//* 壱百弐拾参 */ #define WNN_NUM_HANCAN /* 半角数字 *//* 1,234 */ #define WNN_NUM_ZENCAN /* 全角数字 *//* 1,234 */ /* 英数 */ #define WNN_ALP_HAN /* 半角 *//* 読みのまま */ #define WNN_ALP_ZEN /* 全角 */ /* 記号 */ #define WNN_KIG_HAN /* 半角 *//* 読みのまま */ #define WNN_KIG_JIS /* 全角(JIS) */ #define WNN_KIG_ASC /* 全角(ASC) */ #define WNN_FT_DICT_FILE #define WNN_FT_HINDO_FILE #define WNN_FT_FUZOKUGO_FILE #define WNN_STATIC_DICT /* 固定形式辞書 */ #define WNN_UD_DICT /* 登録可能形式辞書 */ #define WNN_DIC_RDONLY #define WNN_DIC_RW /* header file for dic_syurui */ #define WNN_FILE_NOT_EXIST #define WNN_NOT_A_JISHO #define WNN_HINDO_FILE #define WNN_FUZOKUGO_FILE /* set_hindo operation */ #define WNN_HINDO_NOP #define WNN_IMA_ON #define WNN_IMA_OFF #define WNN_HINDO_INC #define WNN_HINDO_DECL #define WNN_ENTRY_NO_USE /* Wnn constant */ #define WNN_HOSTLEN #define WNN_ENVNAME_LEN /* js_who */ #define WNN_MAX_ENV_OF_A_CLIENT struct wnn_jwho { int sd; /* jserver 内のソケットディスクリプタ*/ char user_name[64]; /* ユーザ名 */ char host_name[64]; /* ホスト名 */ int env[WNN_MAX_ENV_OF_A_CLIENT]; /* このクライアントが使用している 環境番号の列。空いているところには、-1 が入る */ }; typedef struct wnn_jwho WNN_JWHO; /* js_env_list */ #define WNN_MAX_JISHO_OF_AN_ENV 15 #define WNN_MAX_FILE_OF_AN_ENV 30 struct wnn_env_info { int env_id; /* 環境番号 */ char env_name[WNN_ENVNAME_LEN]; /* 環境名 */ int ref_count; /* 参照数 */ /* struct wnn_param; */ int fzk_fid; /* 付属語のファイル番号 */ int jishomax; /* 使用している辞書の個数 */ int jisho[WNN_MAX_JISHO_OF_AN_ENV]; /* 使用している辞書の辞書番号。 最初のjishomax個だけ意味がある */ int file[WNN_MAX_FILE_OF_AN_ENV]; /* この環境につながっている ファイル番号(空いているところには、-1 が入る) */ }; typedef struct wnn_env_info WNN_ENV_INFO; #define WNN_COMMENT_LEN 512 /* 辞書のコメントの長さ */ #define WNN_F_NAMELEN 100 #define WNN_PASSWD_LEN 16 /* パスワードの長さ */ struct wnn_dic_info { int dic_no; /* 辞書番号 */ int body; /* 辞書本体のファイル番号 */ int hindo; /* 頻度のファイル番号 */ int rw; /* 辞書が登録可能かどうか (WNN_DIC_RW, WNN_DIC_RDONLY) */ int hindo_rw; /* 頻度が更新可能かどうか (WNN_DIC_RW, WNN_DIC_RDONLY) */ int enablef; /* 辞書が使用中かどうか (1 = 使用中, 0 = 使用中断) */ int nice; /* 辞書の変換時の優先度 */ wchar comment[WNN_COMMENT_LEN]; /* 辞書のコメント */ char fname[WNN_F_NAMELEN]; /* 辞書のファイル名 */ char hfname[WNN_F_NAMELEN]; /* 頻度のファイル名 */ char passwd[WNN_PASSWD_LEN]; /* 辞書のパスワード */ char hpasswd[WNN_PASSWD_LEN]; /* 頻度のパスワード */ int type; /* 辞書の種類(WNN_UD_DICT,WNN_STATIC_DICT) */ int gosuu; /* 辞書の語数 */ }; typedef struct wnn_dic_info WNN_DIC_INFO; struct wnn_file_stat { int type; /* ファイルの種類 WNN_STATIC_DICT 固定形式辞書 WNN_UD_DICT 登録可能形式辞書 WNN_HINDO_FILE 頻度ファイル WNN_FUZOKUGO_FILE 付属語ファイル WNN_NOT_A_JISHO その他 */ wchar comment[WNN_COMMENT_LEN]; /* ファイルのコメント */ }; typedef struct wnn_file_stat WNN_FILE_STAT; extern int wnn_errorno; /* Wnnのエラーはこの変数に報告される */ #define FILE_ALREADY_READ -2 /* この構造体は、ライブラリ内部で用いられる */ struct wnn_jserver_id { int sd; char js_name[40]; int js_dead; jmp_buf js_dead_env; /* サーバが死んだ時に飛んでいくenv */ int js_dead_env_flg; /* jd_server_dead_envが有効か否か */ }; typedef struct wnn_jserver_id WNN_JSERVER_ID; /* この構造体は、ライブラリ内部で用いられる */ struct wnn_env { int env_id; WNN_JSERVER_ID *js_id; }; typedef struct wnn_env WNN_ENV; struct wnn_param { int n; /* N(大)文節解析のN */ int nsho; /* 大文節中の小文節の最大数 */ int p1; /* 自立語の頻度のパラメータ */ int p2; /* 小文節長のパラメータ */ int p3; /* 自立語長のパラメータ */ int p4; /* 今使ったよビットのパラメータ */ int p5; /* 辞書のパラメータ */ int p6; /* 小文節の評価値のパラメータ */ int p7; /* 大文節長のパラメータ */ int p8; /* 小文節数のパラメータ */ int p9; /* 疑似品詞 数字の頻度のパラメータ */ int p10; /* 疑似品詞 カナの頻度のパラメータ */ int p11; /* 疑似品詞 英数の頻度のパラメータ */ int p12; /* 疑似品詞 記号の頻度のパラメータ */ int p13; /* 疑似品詞 閉括弧の頻度のパラメータ */ int p14; /* 疑似品詞 付属語の頻度のパラメータ */ int p15; /* 疑似品詞 開括弧の頻度のパラメータ */ }; struct wnn_file_info_struct { int fid; /* ファイル番号 */ char name[WNN_F_NAMELEN]; /* ファイル名 */ int localf; /* サーバ・サイトのファイルかどうか 1: サーバ・サイト 0: クライアント・サイト */ int type; /* ファイルの種類 */ int ref_count; /* (環境からの)参照数 */ }; typedef struct wnn_file_info_struct WNN_FILE_INFO_STRUCT; #define WNN_VECT_L ((256+8*4-1)/(8*4) + 5) /***** !!!!! ****/ struct wnn_sho_bunsetsu { int end; /* 候補文節の end char index */ int start; /* 候補文節の top char index */ int jiriend; /* 候補文節の自立語 end char index */ int dic_no; /* 自立語の辞書内のエントリ番号 */ int entry; /* 候補文節の自立語辞書 entry */ int hinsi; /* 自立語品詞 */ int status; /* 大文節の先頭か */ int hindo; /* 候補自立語の頻度 */ int ima; /* 候補自立語の今使ったよビット */ int kangovect; /* 接続ベクトルテーブルへのポインタ */ int hyoka; /* 小文節評価値 */ wchar *kanji; /* 自立語文字列 */ wchar *yomi; /* 自立語の読み文字列 */ wchar *fuzoku; /* 付属語文字列 */ /* *頻度については、頻度ファイルが指定されている時は、 *hindo = 頻度ファイルの(実)頻度値 + 辞書内の(実)頻度値 *ima = 頻度ファイルの今使ったよビット * *頻度ファイルが指定されていない時には、 *hindo = 辞書内の(実)頻度値、ima = 辞書内の今使ったよビット *である。ここで、実頻度値とは、計算機内で7ビットに圧縮された値である。 *仮想頻度値ではなく実頻度値を返すのは、変換結果のデバッグのためである。 */ }; struct wnn_dai_bunsetsu { int end; /* 候補文節の end char index */ int start; /* 候補文節の top char index */ struct wnn_sho_bunsetsu *sbn; /* 小文節解析結果へのポインタ */ int hyoka; /* 大文節評価値 */ int sbncnt; /* 小文節数 (次候補の場合は、次候補数) DSD_SBNは、*sbn から sbncnt だけある */ }; struct wnn_jdata { int dic_no; /* 辞書番号 */ int serial; /* 辞書内のエントリ番号 */ int hinshi; /* 品詞番号(品詞番号と品詞名の対応は、manual/etc の下を参照) */ int hindo; /* 頻度 */ int ima; /* 今使ったよビット */ int int_hindo; /* 辞書内頻度 */ int int_ima; /* 辞書内、今使ったよビット */ wchar *yomi; /* 読みの文字列 */ wchar *kanji; /* 漢字文字列 */ wchar *com; /* エントリのコメント文字列 */ /* *頻度については、頻度ファイルが指定されている時は、 *hindo = 頻度ファイルの(仮想)頻度値、ima = 頻度ファイルの今使ったよビット *int_hindo = 辞書内の(仮想)頻度値、int_ima = 辞書内の今使ったよビット * *頻度ファイルが指定されていない時には、 *hindo = 辞書内の(仮想)頻度値、ima = 辞書内の今使ったよビット *int_hindo = -1、int_ima = -1 * *ただし、どちらの場合でも、エントリが使用中止の状態の時には、 *hindo = -1, ima = 0 あるいは、 *int_hindo = -1, int_ima = 0 となる。 *ここで、(仮想)頻度値とは、計算機内で7ビットに圧縮された頻度値から、 *実際の値を想定した値である。 */ }; struct wnn_ret_buf { int size; /* buf から alloc されている大きさ */ char *buf; /* malloc などでとられた領域 */ }; #define WNN_F_UNIQ_LEN (sizeof(struct wnn_file_uniq)) /* この構造体は、ライブラリ内部で用いられる */ struct wnn_file_head { struct wnn_file_uniq{ int time; int dev; int inode; char createhost[WNN_HOSTLEN]; } file_uniq; struct wnn_file_uniq file_uniq_org; int not_used1; int not_used2; int file_type; char file_passwd[WNN_PASSWD_LEN]; }; struct wnn_fukugou{ unsigned char *name; /* 複合品詞の名前 */ /* fukugou hinsi is held as a string */ unsigned short *component; /* 複合品詞の構成要素となる品詞の番号の配列 (最後は 0xffff で終る) */ }; struct wnn_hinsi_node{ unsigned char *name; /* 品詞ノードの名前 */ int kosuu; /* 子どもの数 */ unsigned char *son; /* 最初の子どもへのポインタ */ }; #define WNN_FILE_HEADER_LEN (WNN_PASSWD_LEN + 8 + WNN_FILE_STRING_LEN + \ sizeof(struct wnn_file_uniq) * 2 + 4) /* 8 is for future use 4 is for file_type. */