summaryrefslogtreecommitdiff
path: root/anthy/feature_set.h
diff options
context:
space:
mode:
Diffstat (limited to 'anthy/feature_set.h')
-rw-r--r--anthy/feature_set.h56
1 files changed, 56 insertions, 0 deletions
diff --git a/anthy/feature_set.h b/anthy/feature_set.h
new file mode 100644
index 0000000..99a7062
--- /dev/null
+++ b/anthy/feature_set.h
@@ -0,0 +1,56 @@
+/* 素性を扱う */
+#ifndef _feature_set_h_included_
+#define _feature_set_h_included_
+
+#include <anthy/wtype.h>
+
+/* hash collisionが出たら適宜増やす */
+#define WORD_HASH_MAX 1024
+
+/**/
+#define NR_EM_FEATURES 14
+
+struct feature_list {
+ /* いまのところ、素性は14個まで */
+ int nr;
+ int size;
+ union {
+ short index[NR_EM_FEATURES];
+ short *array;
+ } u;
+};
+
+struct feature_freq {
+ int f[NR_EM_FEATURES + 2];
+};
+
+void anthy_init_features(void);
+struct feature_freq *
+anthy_find_feature_freq(const void *array,
+ const struct feature_list *fl,
+ struct feature_freq *arg);
+struct feature_freq *
+anthy_find_array_freq(const void *array,
+ int *f, int nr,
+ struct feature_freq *arg);
+
+
+/**/
+void anthy_feature_list_init(struct feature_list *fl);
+void anthy_feature_list_free(struct feature_list *fl);
+/**/
+void anthy_feature_list_add(struct feature_list *fl, int f);
+int anthy_feature_list_nr(const struct feature_list *fl);
+int anthy_feature_list_nth(const struct feature_list *fl, int nth);
+void anthy_feature_list_sort(struct feature_list *fl);
+/**/
+void anthy_feature_list_set_cur_class(struct feature_list *fl, int cc);
+void anthy_feature_list_set_class_trans(struct feature_list *fl, int pc, int cc);
+void anthy_feature_list_set_dep_word(struct feature_list *fl, int h);
+void anthy_feature_list_set_dep_class(struct feature_list *fl, int c);
+void anthy_feature_list_set_noun_cos(struct feature_list *fl, wtype_t wt);
+void anthy_feature_list_set_mw_features(struct feature_list *fl, int mask);
+/**/
+void anthy_feature_list_print(struct feature_list *fl);
+
+#endif