
1: /* 2: * 品詞の型 wtype_t を扱う 3: * 4: * 単語の品詞を扱う 5: * 単語は次の要素を持つ。 6: * *品詞 7: * *品詞サブタイプ 8: * *品詞サブサブタイプ 9: * *活用クラス(CC) 10: * *活用形 11: * *自立語かどうかのフラグ 12: * wtype_tは上記の情報をすべて含む。 13: * 14: * 各要素の詳細については doc/POSを参照すべし 15: */ 16: #ifndef _wtype_h_included_ 17: #define _wtype_h_included_ 18: 19: /*品詞 Part Of Speech */ 20: #define POS_NONE 0 21: #define POS_NOUN 1 22: #define POS_PRT 2 23: #define POS_XV 3 24: #define POS_V 4 25: #define POS_A 5 26: #define POS_AJV 6 27: #define POS_AV 7 28: #define POS_ME 8 29: #define POS_CONJ 9 30: #define POS_IJ 10 31: #define POS_PRE 11 32: #define POS_SUC 12 33: #define POS_TANKANJI 13 34: #define POS_N2T 14 35: #define POS_D2KY 15 36: #define POS_NUMBER 16 37: #define POS_INVAL 17 38: #define POS_OPEN 18 39: #define POS_CLOSE 19 40: 41: /* 活用形 Conjugate Type */ 42: #define CT_NONE 0 43: #define CT_SYUSI 1 44: #define CT_MIZEN 2 45: #define CT_RENYOU 3 46: #define CT_RENTAI 4 47: #define CT_KATEI 5 48: #define CT_MEIREI 6 49: #define CT_HEAD 7 50: #define CT_MEISIKA 8 51: 52: /* 活用クラス Conjugate Class */ 53: #define CC_NONE 0 54: #define CC_K5 1 55: #define CC_C5 2 56: #define CC_G5 3 57: #define CC_S5 4 58: #define CC_T5 5 59: #define CC_N5 6 60: #define CC_M5 7 61: #define CC_B5 8 62: #define CC_R5 9 63: #define CC_L5 10 64: #define CC_W5 11 65: #define CC_U5 12 66: #define CC_KS1 13 67: #define CC_RV 14 68: #define CC_KV 15 69: #define CC_SV 16 70: #define CC_ZV 17 71: #define CC_A 18 72: #define CC_A_U 19 73: #define CC_AJV 20 74: #define CC_SRV 21knok: anthy/9100e/anthy/wtype.h:52-74 on Thu Feb 28 18:33:48 +0900 200875: 76: /* 副品詞 Class Of Speech */ 77: #define COS_NONE 0 78: /* 地名 */ 79: #define COS_CN 1 80: /* 数詞 */ 81: #define COS_NN 2 82: /* 人名 */ 83: #define COS_JN 3 84: /* 団体名 */ 85: #define COS_KK 4 86: /* 一般接頭辞・接尾辞 */ 87: #define COS_SUFFIX 5 88: /* サ変の接尾辞 */ 89: #define COS_SVSUFFIX 6 90: /**/ 91: 92: /* 副々品詞 Sub Class Of Speech*/ 93: #define SCOS_NONE 0 94: #define SCOS_FAMNAME 1 95: #define SCOS_FSTNAME 2 96: #define SCOS_T0 10 97: #define SCOS_T2 12 98: #define SCOS_T3 13 99: #define SCOS_T4 14 100: #define SCOS_T5 15 101: #define SCOS_T7 17 102: #define SCOS_T8 18 103: #define SCOS_T9 19 104: #define SCOS_T10 20 105: #define SCOS_T12 22 106: #define SCOS_T13 23 107: #define SCOS_T14 24 108: #define SCOS_T15 25 109: #define SCOS_T17 27 110: #define SCOS_T18 28 111: #define SCOS_T19 29 112: #define SCOS_T20 30 113: #define SCOS_T22 32 114: #define SCOS_T23 33 115: #define SCOS_T24 34 116: #define SCOS_T25 35 117: #define SCOS_T27 37 118: #define SCOS_T28 38 119: #define SCOS_T29 39 120: #define SCOS_T30 40 121: #define SCOS_T32 42 122: #define SCOS_T33 43 123: #define SCOS_T34 44 124: #define SCOS_T35 45 125: #define SCOS_T37 47 126: #define SCOS_T38 48 127: #define SCOS_T39 49 128: #define SCOS_T40 50 129: #define SCOS_F0 60 130: #define SCOS_F1 61 131: #define SCOS_F2 62 132: #define SCOS_F3 63 133: #define SCOS_F4 64 134: #define SCOS_F5 65 135: #define SCOS_F6 66 136: #define SCOS_F7 67 137: #define SCOS_F8 68 138: #define SCOS_F9 69 139: #define SCOS_F10 70 140: #define SCOS_F11 71 141: #define SCOS_F12 72 142: #define SCOS_F13 73 143: #define SCOS_F14 74 144: #define SCOS_A0 80 145: #define SCOS_A1 81 146: #define SCOS_N1 90 147: #define SCOS_N10 91 148: #define SCOS_N100 92 149: #define SCOS_N1000 93 150: #define SCOS_N10000 94活用クラスのマクロ定義
knok: anthy/9100e/anthy/wtype.h:92-150 on Thu Feb 28 18:33:15 +0900 2008151: 152: /* FLAGS */ 153: #define WF_NONE 0 154: /* この動詞は連体詞が名詞化する */ 155: #define WF_MEISI 1 156: /* サ変名詞 */ 157: #define WF_SV 2 158: /* 自立語、文節のコアとなる */ 159: #define WF_INDEP 4 160: /* 形容動詞 */ 161: #define WF_AJV 8 162: 163: /* wtype_t中のオフセット */ 164: #define WT_POS 0 165: #define WT_COS 1 166: #define WT_SCOS 2 167: #define WT_CC 3 168: #define WT_CT 4 169: #define WT_FLAGS 5 170: 171: /* 各bit fieldの幅 */ 172: #define POS_BITS 5 173: #define COS_BITS 4 174: #define SCOS_BITS 7 175: #define CC_BITS 5 176: #define CT_BITS 4 177: #define WF_BITS 4 178: /* 29bits */ 179: 180: /** 品詞 */ 181: struct wtype{ 182: unsigned int pos : POS_BITS; 183: unsigned int cos : COS_BITS; 184: unsigned int scos : SCOS_BITS; 185: unsigned int cc : CC_BITS; 186: unsigned int ct : CT_BITS; 187: unsigned int wf : WF_BITS; 188: }; 189: 190: typedef struct wtype wtype_t; 191: 192: /** anthy_wtype_include(名詞、人名)は真、逆は偽 */ 193: int anthy_wtype_include(wtype_t haystack, wtype_t needle); 194: 195: /* 二つの品詞が完全に一致するかどうかを見る */ 196: int anthy_wtype_equal(wtype_t lhs, wtype_t rhs); 197: 198: void anthy_print_wtype(wtype_t w); 199: /* 辞書ファイル中の名前から品詞を得る(関数名が悪い) */ 200: const char *anthy_type_to_wtype(const char *name, wtype_t *w); 201: /* 品詞の名前から品詞を得る */ 202: wtype_t anthy_init_wtype_by_name(const char *str); 203: 204: int anthy_wtype_get_pos(wtype_t w); 205: int anthy_wtype_get_cc(wtype_t w); 206: int anthy_wtype_get_ct(wtype_t w); 207: int anthy_wtype_get_cos(wtype_t w); 208: int anthy_wtype_get_scos(wtype_t w); 209: int anthy_wtype_get_wf(wtype_t w); 210: 211: /* フラグの取得 */ 212: int anthy_wtype_get_indep(wtype_t w); 213: int anthy_wtype_get_sv(wtype_t w); 214: int anthy_wtype_get_meisi(wtype_t w); 215: int anthy_wtype_get_ajv(wtype_t w); 216: 217: wtype_t anthy_get_wtype(int pos, int cos, int scos, int cc, int ct, int wf); 218: wtype_t anthy_get_wtype_with_ct(wtype_t base, int ct); 219: 220: void anthy_wtype_set_pos(wtype_t *w, int pos); 221: void anthy_wtype_set_cc(wtype_t *w, int cc); 222: void anthy_wtype_set_ct(wtype_t *w, int ct); 223: void anthy_wtype_set_cos(wtype_t *w, int cs); 224: void anthy_wtype_set_scos(wtype_t *w, int scos); 225: void anthy_wtype_set_dep(wtype_t *w, int isDep); 226: 227: void anthy_init_wtypes(void); 228: 229: extern wtype_t anthy_wt_all;/* すべてにマッチする自立語 */ 230: extern wtype_t anthy_wt_none;/* 品詞無しPOS_INVAL */ 231: 232: #endif副副品詞のマクロ定義