1 /* splitter¥â¥¸¥å¡¼¥ë¤Î¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹ */
2 #ifndef _splitter_h_included_
3 #define _splitter_h_included_
6 #include <anthy/xstr.h>
7 #include <anthy/wtype.h>
8 #include <anthy/segclass.h>
11 #define RATIO_BASE 256
12 #define OCHAIRE_SCORE 5000000
14 /** splitter¤Î¥³¥ó¥Æ¥¥¹¥È¡¥
15 * ºÇ½é¤Î¶³¦ÀßÄ꤫¤éanthy_context¤Î²òÊü¤Þ¤Ç͸ú
17 struct splitter_context {
18 /** splitterÆâÉô¤Ç»ÈÍѤ¹¤ë¹½Â¤ÂÎ */
19 struct word_split_info_cache *word_split_info;
25 int initial_seg_len;/* ºÇ½é¤ÎʸÀáʬ³ä¤ÎºÝ¤Ë¤³¤³¤«¤é»Ï¤Þ¤Ã¤¿Ê¸À᤬
27 enum seg_class best_seg_class;
28 struct meta_word* best_mw; /* °ìÈÖÍ¥À褷¤Æ»È¤¤¤¿¤¤metaword */
32 /* À©Ìó¤Î¥Á¥§¥Ã¥¯¤Î¾õÂÖ */
33 enum constraint_stat {
37 /* ¤È¤ê¤¢¤¨¤º¡¢Å¬Åö¤ËÁý¤ä¤·¤Æ¤ß¤ÆÌäÂ꤬½Ð¤¿¤éʬÎह¤ë */
39 /* ¥À¥ß¡¼ : seginfo¤ò»ý¤¿¤Ê¤¤ */
41 /* wordlist¤ò0¸Ä or °ì¸Ä´Þ¤à¤â¤Î */
43 /* Ê̤Îmetaword°ì¸Ä¤ò´Þ¤à: metaword + ¶çÆÉÅÀ ¤Ê¤É :seginfo¤Ïmw1¤«¤é¼è¤ë */
51 /* Ê£¹ç¸ì¤ÎÃæ¤Î¸Ä¡¹¤ÎʸÀá¤ò·ë¹ç¤·¤Æ°ì¤Ä¤ÎʸÀá¤È¤·¤Æ¤ß¤¿¤â¤Î */
53 /* Æ°»ì¤ÎÏ¢ÍÑ·Á + ·ÁÍÆ»ì */
55 /* Æ°»ì¤ÎÏ¢ÍÑ·Á + ̾»ì */
65 #define MW_FEATURE_NONE 0
66 #define MW_FEATURE_SV 1
67 #define MW_FEATURE_WEAK_CONN 2
68 #define MW_FEATURE_SUFFIX 4
69 #define MW_FEATURE_NUM 16
70 #define MW_FEATURE_CORE1 32
71 #define MW_FEATURE_DEP_ONLY 64
72 #define MW_FEATURE_HIGH_FREQ 128
73 #define MW_FEATURE_WEAK_SEQ 256
76 * meta_word: ¶³¦¤Î¸¡º÷¤ÎÂоݤȤʤë¤â¤Î
77 * ñ°ì¤Îword_list¤ò´Þ¤à¤â¤Î¤Î¾¤Ë¤¤¤¯¤Ä¤«¤Î¼ïÎब¤¢¤ë¡¥
82 /* ʸÀᶳ¦¤Î¸¡½Ð¤Ë»ÈÍѤ¹¤ë¥¹¥³¥¢ */
84 /* ¸õÊä¤ÎÀ¸À®¤Î»þ¤Ë»ÈÍѤ¹¤ë¥¹¥³¥¢ */
90 enum dep_class dep_class;
92 enum seg_class seg_class;
93 enum constraint_stat can_use; /* ¥»¥°¥á¥ó¥È¶³¦¤Ë¸Ù¤¬¤Ã¤Æ¤¤¤Ê¤¤ */
94 enum metaword_type type;
96 struct meta_word *mw1, *mw2;
102 struct meta_word *next;
105 int anthy_init_splitter(void);
106 void anthy_quit_splitter(void);
108 void anthy_init_split_context(xstr *xs, struct splitter_context *, int is_reverse);
110 * mark_border(context, l1, l2, r1);
111 * l1¤Èr1¤Î´Ö¤ÎʸÀá¤ò¸¡½Ð¤¹¤ë¡¢¤¿¤À¤·l1¤Èl2¤Î´Ö¤Ï¶³¦¤Ë¤·¤Ê¤¤¡£
113 void anthy_mark_border(struct splitter_context *, int from, int from2, int to);
114 void anthy_commit_border(struct splitter_context *, int nr,
115 struct meta_word **mw, int *len);
116 void anthy_release_split_context(struct splitter_context *c);
118 /* ºî¤ê½Ð¤·¤¿Ê¸Àá¤Î¾ðÊó¤ò¼èÆÀ¤¹¤ë */
119 int anthy_get_nr_metaword(struct splitter_context *, int from, int len);
120 struct meta_word *anthy_get_nth_metaword(struct splitter_context *,
121 int from, int len, int nth);
123 int anthy_dep_word_hash(xstr *xs);