hce-node application  1.4.3
HCE Hierarchical Cluster Engine node application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
MecabPlugin.hpp
Go to the documentation of this file.
1 
6 #ifndef _MECAB_HPP
7 #define _MECAB_HPP
8 
9 #include <mecab.h>
10 #include <Poco/StringTokenizer.h>
11 
15 #include "TPlugin.hpp"
16 #include "LCoreData.hpp"
17 
18 namespace HCE
19 {
20 
21 namespace component
22 {
23 /*
24 その他,間投,*,* 0
25 フィラー,*,*,* 1
26 感動詞,*,*,* 2
27 記号,アルファベット,*,* 3
28 記号,一般,*,* 4
29 記号,括弧開,*,* 5
30 記号,括弧閉,*,* 6
31 記号,句点,*,* 7
32 記号,空白,*,* 8
33 記号,読点,*,* 9
34 形容詞,自立,*,* 10
35 形容詞,接尾,*,* 11
36 形容詞,非自立,*,* 12
37 助詞,格助詞,一般,* 13
38 助詞,格助詞,引用,* 14
39 助詞,格助詞,連語,* 15
40 助詞,係助詞,*,* 16
41 助詞,終助詞,*,* 17
42 助詞,接続助詞,*,* 18
43 助詞,特殊,*,* 19
44 助詞,副詞化,*,* 20
45 助詞,副助詞,*,* 21
46 助詞,副助詞/並立助詞/終助詞,*,* 22
47 助詞,並立助詞,*,* 23
48 助詞,連体化,*,* 24
49 助動詞,*,*,* 25
50 接続詞,*,*,* 26
51 接頭詞,形容詞接続,*,* 27
52 接頭詞,数接続,*,* 28
53 接頭詞,動詞接続,*,* 29
54 接頭詞,名詞接続,*,* 30
55 動詞,自立,*,* 31
56 動詞,接尾,*,* 32
57 動詞,非自立,*,* 33
58 副詞,一般,*,* 34
59 副詞,助詞類接続,*,* 35
60 名詞,サ変接続,*,* 36
61 名詞,ナイ形容詞語幹,*,* 37
62 名詞,一般,*,* 38
63 名詞,引用文字列,*,* 39
64 名詞,形容動詞語幹,*,* 40
65 名詞,固有名詞,一般,* 41
66 名詞,固有名詞,人名,一般 42
67 名詞,固有名詞,人名,姓 43
68 名詞,固有名詞,人名,名 44
69 名詞,固有名詞,組織,* 45
70 名詞,固有名詞,地域,一般 46
71 名詞,固有名詞,地域,国 47
72 名詞,数,*,* 48
73 名詞,接続詞的,*,* 49
74 名詞,接尾,サ変接続,* 50
75 名詞,接尾,一般,* 51
76 名詞,接尾,形容動詞語幹,* 52
77 名詞,接尾,助数詞,* 53
78 名詞,接尾,助動詞語幹,* 54
79 名詞,接尾,人名,* 55
80 名詞,接尾,地域,* 56
81 名詞,接尾,特殊,* 57
82 名詞,接尾,副詞可能,* 58
83 名詞,代名詞,一般,* 59
84 名詞,代名詞,縮約,* 60
85 名詞,動詞非自立的,*,* 61
86 名詞,特殊,助動詞語幹,* 62
87 名詞,非自立,一般,* 63
88 名詞,非自立,形容動詞語幹,* 64
89 名詞,非自立,助動詞語幹,* 65
90 名詞,非自立,副詞可能,* 66
91 名詞,副詞可能,*,* 67
92 連体詞,*,*,* 68
93  * s
94  */
95 
96 class MecabPlugin : public TPlugin
97 {
98 public:
99  MecabPlugin();
100  virtual ~MecabPlugin();
101 public:
102  virtual void process(LCoreData&);
103 private:
104  MeCab::Tagger* _tagger;
105  std::map<std::string, POSMask> _toPOS;
106  std::map<std::string, WORD_TYPE> _toWordType;
107 private:
108  void normalize(LCoreData&);
109  void wordType(LCoreData&);
110  void tokenizer(LCoreData&);
111  inline bool isTokenValid( const Poco::StringTokenizer& token ) const { return ( token.count() > 7 ); }
112  inline WORD_TYPE getWordType(const std::string& pos) { return _toWordType[pos];}
113 };
114 
115 
116 } /* namespace component */
117 
118 } /* namespace HCE */
119 #endif