opener-opinion-detector-basic 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +30 -0
  3. data/bin/opinion-detector-basic +19 -0
  4. data/bin/opinion-detector-basic-server +10 -0
  5. data/config.ru +4 -0
  6. data/core/opinion_detector_basic_multi.py +499 -0
  7. data/core/packages/KafNafParser-1.3.tar.gz +0 -0
  8. data/core/packages/VUA_pylib-1.4.tar.gz +0 -0
  9. data/core/site-packages/pre_build/VUKafParserPy-1.0-py2.7.egg-info/PKG-INFO +10 -0
  10. data/core/site-packages/pre_build/VUKafParserPy-1.0-py2.7.egg-info/SOURCES.txt +7 -0
  11. data/core/site-packages/pre_build/VUKafParserPy-1.0-py2.7.egg-info/dependency_links.txt +1 -0
  12. data/core/site-packages/pre_build/VUKafParserPy-1.0-py2.7.egg-info/installed-files.txt +11 -0
  13. data/core/site-packages/pre_build/VUKafParserPy-1.0-py2.7.egg-info/top_level.txt +1 -0
  14. data/core/site-packages/pre_build/VUKafParserPy/KafDataObjectsMod.py +165 -0
  15. data/core/site-packages/pre_build/VUKafParserPy/KafDataObjectsMod.pyc +0 -0
  16. data/core/site-packages/pre_build/VUKafParserPy/KafParserMod.py +439 -0
  17. data/core/site-packages/pre_build/VUKafParserPy/KafParserMod.pyc +0 -0
  18. data/core/site-packages/pre_build/VUKafParserPy/__init__.py +7 -0
  19. data/core/site-packages/pre_build/VUKafParserPy/__init__.pyc +0 -0
  20. data/core/vendor/src/crfsuite/AUTHORS +1 -0
  21. data/core/vendor/src/crfsuite/COPYING +27 -0
  22. data/core/vendor/src/crfsuite/ChangeLog +103 -0
  23. data/core/vendor/src/crfsuite/INSTALL +236 -0
  24. data/core/vendor/src/crfsuite/Makefile.am +19 -0
  25. data/core/vendor/src/crfsuite/Makefile.in +783 -0
  26. data/core/vendor/src/crfsuite/README +183 -0
  27. data/core/vendor/src/crfsuite/aclocal.m4 +9018 -0
  28. data/core/vendor/src/crfsuite/autogen.sh +38 -0
  29. data/core/vendor/src/crfsuite/compile +143 -0
  30. data/core/vendor/src/crfsuite/config.guess +1502 -0
  31. data/core/vendor/src/crfsuite/config.h.in +198 -0
  32. data/core/vendor/src/crfsuite/config.sub +1714 -0
  33. data/core/vendor/src/crfsuite/configure +14273 -0
  34. data/core/vendor/src/crfsuite/configure.in +149 -0
  35. data/core/vendor/src/crfsuite/crfsuite.sln +42 -0
  36. data/core/vendor/src/crfsuite/depcomp +630 -0
  37. data/core/vendor/src/crfsuite/example/chunking.py +49 -0
  38. data/core/vendor/src/crfsuite/example/crfutils.py +179 -0
  39. data/core/vendor/src/crfsuite/example/ner.py +270 -0
  40. data/core/vendor/src/crfsuite/example/pos.py +78 -0
  41. data/core/vendor/src/crfsuite/example/template.py +88 -0
  42. data/core/vendor/src/crfsuite/frontend/Makefile.am +29 -0
  43. data/core/vendor/src/crfsuite/frontend/Makefile.in +640 -0
  44. data/core/vendor/src/crfsuite/frontend/dump.c +116 -0
  45. data/core/vendor/src/crfsuite/frontend/frontend.vcxproj +129 -0
  46. data/core/vendor/src/crfsuite/frontend/iwa.c +273 -0
  47. data/core/vendor/src/crfsuite/frontend/iwa.h +65 -0
  48. data/core/vendor/src/crfsuite/frontend/learn.c +439 -0
  49. data/core/vendor/src/crfsuite/frontend/main.c +137 -0
  50. data/core/vendor/src/crfsuite/frontend/option.c +93 -0
  51. data/core/vendor/src/crfsuite/frontend/option.h +86 -0
  52. data/core/vendor/src/crfsuite/frontend/readdata.h +38 -0
  53. data/core/vendor/src/crfsuite/frontend/reader.c +136 -0
  54. data/core/vendor/src/crfsuite/frontend/tag.c +427 -0
  55. data/core/vendor/src/crfsuite/genbinary.sh.in +15 -0
  56. data/core/vendor/src/crfsuite/include/Makefile.am +11 -0
  57. data/core/vendor/src/crfsuite/include/Makefile.in +461 -0
  58. data/core/vendor/src/crfsuite/include/crfsuite.h +1063 -0
  59. data/core/vendor/src/crfsuite/include/crfsuite.hpp +555 -0
  60. data/core/vendor/src/crfsuite/include/crfsuite_api.hpp +400 -0
  61. data/core/vendor/src/crfsuite/include/os.h +61 -0
  62. data/core/vendor/src/crfsuite/install-sh +520 -0
  63. data/core/vendor/src/crfsuite/lib/cqdb/COPYING +28 -0
  64. data/core/vendor/src/crfsuite/lib/cqdb/Makefile.am +21 -0
  65. data/core/vendor/src/crfsuite/lib/cqdb/Makefile.in +549 -0
  66. data/core/vendor/src/crfsuite/lib/cqdb/cqdb.vcxproj +86 -0
  67. data/core/vendor/src/crfsuite/lib/cqdb/include/cqdb.h +524 -0
  68. data/core/vendor/src/crfsuite/lib/cqdb/src/cqdb.c +587 -0
  69. data/core/vendor/src/crfsuite/lib/cqdb/src/lookup3.c +976 -0
  70. data/core/vendor/src/crfsuite/lib/crf/Makefile.am +46 -0
  71. data/core/vendor/src/crfsuite/lib/crf/Makefile.in +721 -0
  72. data/core/vendor/src/crfsuite/lib/crf/crf.vcxproj +216 -0
  73. data/core/vendor/src/crfsuite/lib/crf/src/crf1d.h +353 -0
  74. data/core/vendor/src/crfsuite/lib/crf/src/crf1d_context.c +705 -0
  75. data/core/vendor/src/crfsuite/lib/crf/src/crf1d_encode.c +943 -0
  76. data/core/vendor/src/crfsuite/lib/crf/src/crf1d_feature.c +352 -0
  77. data/core/vendor/src/crfsuite/lib/crf/src/crf1d_model.c +994 -0
  78. data/core/vendor/src/crfsuite/lib/crf/src/crf1d_tag.c +550 -0
  79. data/core/vendor/src/crfsuite/lib/crf/src/crfsuite.c +492 -0
  80. data/core/vendor/src/crfsuite/lib/crf/src/crfsuite_internal.h +236 -0
  81. data/core/vendor/src/crfsuite/lib/crf/src/crfsuite_train.c +272 -0
  82. data/core/vendor/src/crfsuite/lib/crf/src/dataset.c +106 -0
  83. data/core/vendor/src/crfsuite/lib/crf/src/dictionary.c +118 -0
  84. data/core/vendor/src/crfsuite/lib/crf/src/holdout.c +80 -0
  85. data/core/vendor/src/crfsuite/lib/crf/src/logging.c +91 -0
  86. data/core/vendor/src/crfsuite/lib/crf/src/logging.h +48 -0
  87. data/core/vendor/src/crfsuite/lib/crf/src/params.c +335 -0
  88. data/core/vendor/src/crfsuite/lib/crf/src/params.h +80 -0
  89. data/core/vendor/src/crfsuite/lib/crf/src/quark.c +172 -0
  90. data/core/vendor/src/crfsuite/lib/crf/src/quark.h +46 -0
  91. data/core/vendor/src/crfsuite/lib/crf/src/rumavl.c +1107 -0
  92. data/core/vendor/src/crfsuite/lib/crf/src/rumavl.h +160 -0
  93. data/core/vendor/src/crfsuite/lib/crf/src/train_arow.c +408 -0
  94. data/core/vendor/src/crfsuite/lib/crf/src/train_averaged_perceptron.c +242 -0
  95. data/core/vendor/src/crfsuite/lib/crf/src/train_l2sgd.c +507 -0
  96. data/core/vendor/src/crfsuite/lib/crf/src/train_lbfgs.c +338 -0
  97. data/core/vendor/src/crfsuite/lib/crf/src/train_passive_aggressive.c +435 -0
  98. data/core/vendor/src/crfsuite/lib/crf/src/vecmath.h +341 -0
  99. data/core/vendor/src/crfsuite/ltmain.sh +8413 -0
  100. data/core/vendor/src/crfsuite/missing +376 -0
  101. data/core/vendor/src/crfsuite/swig/Makefile.am +13 -0
  102. data/core/vendor/src/crfsuite/swig/Makefile.in +365 -0
  103. data/core/vendor/src/crfsuite/swig/crfsuite.cpp +2 -0
  104. data/core/vendor/src/crfsuite/swig/export.i +32 -0
  105. data/core/vendor/src/crfsuite/swig/python/README +92 -0
  106. data/core/vendor/src/crfsuite/swig/python/crfsuite.py +329 -0
  107. data/core/vendor/src/crfsuite/swig/python/export_wrap.cpp +14355 -0
  108. data/core/vendor/src/crfsuite/swig/python/export_wrap.h +63 -0
  109. data/core/vendor/src/crfsuite/swig/python/prepare.sh +9 -0
  110. data/core/vendor/src/crfsuite/swig/python/sample_tag.py +52 -0
  111. data/core/vendor/src/crfsuite/swig/python/sample_train.py +68 -0
  112. data/core/vendor/src/crfsuite/swig/python/setup.py +44 -0
  113. data/core/vendor/src/crfsuite/win32/stdint.h +679 -0
  114. data/core/vendor/src/liblbfgs/AUTHORS +1 -0
  115. data/core/vendor/src/liblbfgs/COPYING +22 -0
  116. data/core/vendor/src/liblbfgs/ChangeLog +120 -0
  117. data/core/vendor/src/liblbfgs/INSTALL +231 -0
  118. data/core/vendor/src/liblbfgs/Makefile.am +10 -0
  119. data/core/vendor/src/liblbfgs/Makefile.in +638 -0
  120. data/core/vendor/src/liblbfgs/NEWS +0 -0
  121. data/core/vendor/src/liblbfgs/README +71 -0
  122. data/core/vendor/src/liblbfgs/aclocal.m4 +6985 -0
  123. data/core/vendor/src/liblbfgs/autogen.sh +38 -0
  124. data/core/vendor/src/liblbfgs/config.guess +1411 -0
  125. data/core/vendor/src/liblbfgs/config.h.in +64 -0
  126. data/core/vendor/src/liblbfgs/config.sub +1500 -0
  127. data/core/vendor/src/liblbfgs/configure +21146 -0
  128. data/core/vendor/src/liblbfgs/configure.in +107 -0
  129. data/core/vendor/src/liblbfgs/depcomp +522 -0
  130. data/core/vendor/src/liblbfgs/include/lbfgs.h +745 -0
  131. data/core/vendor/src/liblbfgs/install-sh +322 -0
  132. data/core/vendor/src/liblbfgs/lbfgs.sln +26 -0
  133. data/core/vendor/src/liblbfgs/lib/Makefile.am +24 -0
  134. data/core/vendor/src/liblbfgs/lib/Makefile.in +499 -0
  135. data/core/vendor/src/liblbfgs/lib/arithmetic_ansi.h +133 -0
  136. data/core/vendor/src/liblbfgs/lib/arithmetic_sse_double.h +294 -0
  137. data/core/vendor/src/liblbfgs/lib/arithmetic_sse_float.h +298 -0
  138. data/core/vendor/src/liblbfgs/lib/lbfgs.c +1371 -0
  139. data/core/vendor/src/liblbfgs/lib/lib.vcxproj +95 -0
  140. data/core/vendor/src/liblbfgs/ltmain.sh +6426 -0
  141. data/core/vendor/src/liblbfgs/missing +353 -0
  142. data/core/vendor/src/liblbfgs/sample/Makefile.am +15 -0
  143. data/core/vendor/src/liblbfgs/sample/Makefile.in +433 -0
  144. data/core/vendor/src/liblbfgs/sample/sample.c +81 -0
  145. data/core/vendor/src/liblbfgs/sample/sample.cpp +126 -0
  146. data/core/vendor/src/liblbfgs/sample/sample.vcxproj +105 -0
  147. data/core/vendor/src/svm_light/LICENSE.txt +59 -0
  148. data/core/vendor/src/svm_light/Makefile +105 -0
  149. data/core/vendor/src/svm_light/kernel.h +40 -0
  150. data/core/vendor/src/svm_light/svm_classify.c +197 -0
  151. data/core/vendor/src/svm_light/svm_common.c +985 -0
  152. data/core/vendor/src/svm_light/svm_common.h +301 -0
  153. data/core/vendor/src/svm_light/svm_hideo.c +1062 -0
  154. data/core/vendor/src/svm_light/svm_learn.c +4147 -0
  155. data/core/vendor/src/svm_light/svm_learn.h +169 -0
  156. data/core/vendor/src/svm_light/svm_learn_main.c +397 -0
  157. data/core/vendor/src/svm_light/svm_loqo.c +211 -0
  158. data/ext/hack/Rakefile +17 -0
  159. data/ext/hack/support.rb +88 -0
  160. data/lib/opener/opinion_detector_basic.rb +91 -0
  161. data/lib/opener/opinion_detector_basic/public/markdown.css +284 -0
  162. data/lib/opener/opinion_detector_basic/server.rb +16 -0
  163. data/lib/opener/opinion_detector_basic/version.rb +5 -0
  164. data/lib/opener/opinion_detector_basic/views/index.erb +97 -0
  165. data/lib/opener/opinion_detector_basic/views/result.erb +15 -0
  166. data/opener-opinion-detector-basic.gemspec +36 -0
  167. data/pre_build_requirements.txt +1 -0
  168. metadata +309 -0
@@ -0,0 +1,400 @@
1
+ /*
2
+ * CRFsuite C++/SWIG API.
3
+ *
4
+ * Copyright (c) 2007-2010, Naoaki Okazaki
5
+ * All rights reserved.
6
+ *
7
+ * Redistribution and use in source and binary forms, with or without
8
+ * modification, are permitted provided that the following conditions are met:
9
+ * * Redistributions of source code must retain the above copyright
10
+ * notice, this list of conditions and the following disclaimer.
11
+ * * Redistributions in binary form must reproduce the above copyright
12
+ * notice, this list of conditions and the following disclaimer in the
13
+ * documentation and/or other materials provided with the distribution.
14
+ * * Neither the names of the authors nor the names of its contributors
15
+ * may be used to endorse or promote products derived from this
16
+ * software without specific prior written permission.
17
+ *
18
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
22
+ * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
25
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
26
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
27
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
+ */
30
+
31
+ #ifndef __CRFSUITE_API_HPP__
32
+ #define __CRFSUITE_API_HPP__
33
+
34
+ #include <string>
35
+ #include <stdexcept>
36
+ #include <vector>
37
+
38
+ #ifndef __CRFSUITE_H__
39
+
40
+ #ifdef __cplusplus
41
+ extern "C" {
42
+ #endif/*__cplusplus*/
43
+
44
+ struct tag_crfsuite_model;
45
+ typedef struct tag_crfsuite_model crfsuite_model_t;
46
+
47
+ struct tag_crfsuite_data;
48
+ typedef struct tag_crfsuite_data crfsuite_data_t;
49
+
50
+ struct tag_crfsuite_trainer;
51
+ typedef struct tag_crfsuite_trainer crfsuite_trainer_t;
52
+
53
+ struct tag_crfsuite_tagger;
54
+ typedef struct tag_crfsuite_tagger crfsuite_tagger_t;
55
+
56
+ struct tag_crfsuite_dictionary;
57
+ typedef struct tag_crfsuite_dictionary crfsuite_dictionary_t;
58
+
59
+ struct tag_crfsuite_params;
60
+ typedef struct tag_crfsuite_params crfsuite_params_t;
61
+
62
+ #ifdef __cplusplus
63
+ }
64
+ #endif/*__cplusplus*/
65
+
66
+ #endif/*__CRFSUITE_H__*/
67
+
68
+ /**
69
+ \page crfsuite_hpp_api CRFSuite C++/SWIG API
70
+
71
+ @section crfsuite_hpp_api_intro Introduction
72
+
73
+ The CRFSuite C++/SWIG API provides a high-level and easy-to-use library module
74
+ for a number of programming languages. The C++/SWIG API is a wrapper for the
75
+ CRFSuite C API.
76
+ - @link crfsuite_hpp_api_doc API documentation @endlink
77
+
78
+ @section crfsuite_hpp_api_cpp C++ API
79
+
80
+ The C++ library is implemented in two header files, crfsuite_api.hpp and
81
+ crfsuite.hpp. One can use the C++ API only by including crfsuite.hpp. The C++
82
+ library has a dependency to the CRFSuite C library, which means that the
83
+ C header file (crfsuite.h) and libcrfsuite library are necessary.
84
+
85
+ @section crfsuite_hpp_api_swig SWIG API
86
+
87
+ The SWIG API is identical to the C++ API. Currently, the CRFsuite distribution
88
+ includes a Python module for CRFsuite. Please read README under swig/python
89
+ directory for the information to build the Python module.
90
+
91
+ @subsection crfsuite_hpp_api_sample Sample code
92
+
93
+ This code demonstrates how to use the crfsuite.Trainer object. The script
94
+ reads a training data from STDIN, trains a model using 'l2sgd' algorithm,
95
+ and stores the model to a file (the first argument of the commend line).
96
+
97
+ @include swig/python/sample_train.py
98
+
99
+ This code demonstrates how to use the crfsuite.Tagger object. The script
100
+ loads a model from a file (the first argument of the commend line), reads
101
+ a data from STDIN, predicts label sequences.
102
+
103
+ @include swig/python/sample_tag.py
104
+
105
+ */
106
+
107
+ namespace CRFSuite
108
+ {
109
+
110
+ /**
111
+ * \addtogroup crfsuite_hpp_api_doc Data structures
112
+ * @{
113
+ */
114
+
115
+ /**
116
+ * Tuple of attribute and its value.
117
+ */
118
+ class Attribute
119
+ {
120
+ public:
121
+ /// Attribute.
122
+ std::string attr;
123
+ /// Attribute value (weight).
124
+ double value;
125
+
126
+ /**
127
+ * Construct an attribute with the default name and value.
128
+ */
129
+ Attribute() : value(1.)
130
+ {
131
+ }
132
+
133
+ /**
134
+ * Construct an attribute with the default value.
135
+ * @param name The attribute name.
136
+ */
137
+ Attribute(const std::string& name) : attr(name), value(1.)
138
+ {
139
+ }
140
+
141
+ /**
142
+ * Construct an attribute.
143
+ * @param name The attribute name.
144
+ * @param val The attribute value.
145
+ */
146
+ Attribute(const std::string& name, double val) : attr(name), value(val)
147
+ {
148
+ }
149
+ };
150
+
151
+
152
+
153
+ /**
154
+ * Type of an item (equivalent to an attribute vector) in a sequence.
155
+ */
156
+ typedef std::vector<Attribute> Item;
157
+
158
+ /**
159
+ * Type of an item sequence (equivalent to item vector).
160
+ */
161
+ typedef std::vector<Item> ItemSequence;
162
+
163
+ /**
164
+ * Type of a string list.
165
+ */
166
+ typedef std::vector<std::string> StringList;
167
+
168
+
169
+
170
+
171
+ /**
172
+ * The trainer class.
173
+ * This class maintains a data set for training, and provides an interface
174
+ * to various graphical models and training algorithms. The standard
175
+ * procedure for implementing a trainer is:
176
+ * - create a class by inheriting this class
177
+ * - overwrite message() function to receive messages of training progress
178
+ * - call append() to append item/label sequences to the training set
179
+ * - call select() to specify a graphical model and an algorithm
180
+ * - call set() to configure parameters specific to the model and algorithm
181
+ * - call train() to start a training process with the current setting
182
+ */
183
+ class Trainer {
184
+ protected:
185
+ crfsuite_data_t *data;
186
+ crfsuite_trainer_t *tr;
187
+
188
+ public:
189
+ /**
190
+ * Construct a trainer.
191
+ */
192
+ Trainer();
193
+
194
+ /**
195
+ * Destruct a trainer.
196
+ */
197
+ virtual ~Trainer();
198
+
199
+ /**
200
+ * Remove all instances in the data set.
201
+ */
202
+ void clear();
203
+
204
+ /**
205
+ * Append an instance (item/label sequence) to the data set.
206
+ * @param xseq The item sequence of the instance.
207
+ * @param yseq The label sequence of the instance. The number
208
+ * of elements in yseq must be identical to that
209
+ * in xseq.
210
+ * @param group The group number of the instance.
211
+ * @throw std::invalid_argument Arguments xseq and yseq are invalid.
212
+ * @throw std::runtime_error Out of memory.
213
+ */
214
+ void append(const ItemSequence& xseq, const StringList& yseq, int group);
215
+
216
+ /**
217
+ * Initialize the training algorithm.
218
+ * @param algorithm The name of the training algorithm.
219
+ * @param type The name of the graphical model.
220
+ * @return bool \c true if the training algorithm is successfully
221
+ * initialized, \c false otherwise.
222
+ */
223
+ bool select(const std::string& algorithm, const std::string& type);
224
+
225
+ /**
226
+ * Run the training algorithm.
227
+ * This function starts the training algorithm with the data set given
228
+ * by append() function. After starting the training process, the
229
+ * training algorithm invokes the virtual function message() to report
230
+ * the progress of the training process.
231
+ * @param model The filename to which the trained model is stored.
232
+ * If this value is empty, this function does not
233
+ * write out a model file.
234
+ * @param holdout The group number of holdout evaluation. The
235
+ * instances with this group number will not be used
236
+ * for training, but for holdout evaluation. Specify
237
+ * \c -1 to use all instances for training.
238
+ * @return int The status code.
239
+ */
240
+ int train(const std::string& model, int holdout);
241
+
242
+ /**
243
+ * Obtain the list of parameters.
244
+ * This function returns the list of parameter names available for the
245
+ * graphical model and training algorithm specified by select() function.
246
+ * @return StringList The list of parameters available for the current
247
+ * graphical model and training algorithm.
248
+ */
249
+ StringList params();
250
+
251
+ /**
252
+ * Set a training parameter.
253
+ * This function sets a parameter value for the graphical model and
254
+ * training algorithm specified by select() function.
255
+ * @param name The parameter name.
256
+ * @param value The value of the parameter.
257
+ * @throw std::invalid_argument The parameter is not found.
258
+ */
259
+ void set(const std::string& name, const std::string& value);
260
+
261
+ /**
262
+ * Get the value of a training parameter.
263
+ * This function gets a parameter value for the graphical model and
264
+ * training algorithm specified by select() function.
265
+ * @param name The parameter name.
266
+ * @return std::string The value of the parameter.
267
+ * @throw std::invalid_argument The parameter is not found.
268
+ */
269
+ std::string get(const std::string& name);
270
+
271
+ /**
272
+ * Get the description of a training parameter.
273
+ * This function obtains the help message for the parameter specified
274
+ * by the name. The graphical model and training algorithm must be
275
+ * selected by select() function before calling this function.
276
+ * @param name The parameter name.
277
+ * @return std::string The description (help message) of the parameter.
278
+ */
279
+ std::string help(const std::string& name);
280
+
281
+ /**
282
+ * Receive messages from the training algorithm.
283
+ * Override this member function to receive messages of the training
284
+ * process.
285
+ * @param msg The message
286
+ */
287
+ virtual void message(const std::string& msg);
288
+
289
+ protected:
290
+ void init();
291
+ static int __logging_callback(void *userdata, const char *format, va_list args);
292
+ };
293
+
294
+
295
+
296
+ /**
297
+ * The tagger class.
298
+ * This class provides the functionality for predicting label sequences for
299
+ * input sequences using a model.
300
+ */
301
+ class Tagger
302
+ {
303
+ protected:
304
+ crfsuite_model_t *model;
305
+ crfsuite_tagger_t *tagger;
306
+
307
+ public:
308
+ /**
309
+ * Construct a tagger.
310
+ */
311
+ Tagger();
312
+
313
+ /**
314
+ * Destruct a tagger.
315
+ */
316
+ virtual ~Tagger();
317
+
318
+ /**
319
+ * Open a model file.
320
+ * @param name The file name of the model file.
321
+ * @return bool \c true if the model file is successfully opened,
322
+ * \c false otherwise (e.g., when the mode file is
323
+ * not found).
324
+ * @throw std::runtime_error An internal error in the model.
325
+ */
326
+ bool open(const std::string& name);
327
+
328
+ /**
329
+ * Close the model.
330
+ */
331
+ void close();
332
+
333
+ /**
334
+ * Obtain the list of labels.
335
+ * @return StringList The list of labels in the model.
336
+ * @throw std::invalid_argument A model is not opened.
337
+ * @throw std::runtime_error An internal error.
338
+ */
339
+ StringList labels();
340
+
341
+ /**
342
+ * Predict the label sequence for the item sequence.
343
+ * This function calls set() and viterbi() functions to obtain the
344
+ * label sequence predicted for the item sequence.
345
+ * @param xseq The item sequence to be tagged.
346
+ * @return StringList The label sequence predicted.
347
+ * @throw std::invalid_argument A model is not opened.
348
+ * @throw std::runtime_error An internal error.
349
+ */
350
+ StringList tag(const ItemSequence& xseq);
351
+
352
+ /**
353
+ * Set an item sequence.
354
+ * This function sets an item sequence for future calls for
355
+ * viterbi(), probability(), and marginal() functions.
356
+ * @param xseq The item sequence to be tagged
357
+ * @throw std::invalid_argument A model is not opened.
358
+ * @throw std::runtime_error An internal error.
359
+ */
360
+ void set(const ItemSequence& xseq);
361
+
362
+ /**
363
+ * Find the Viterbi label sequence for the item sequence.
364
+ * @return StringList The label sequence predicted.
365
+ * @throw std::invalid_argument A model is not opened.
366
+ * @throw std::runtime_error An internal error.
367
+ */
368
+ StringList viterbi();
369
+
370
+ /**
371
+ * Compute the probability of the label sequence.
372
+ * @param yseq The label sequence.
373
+ * @throw std::invalid_argument A model is not opened.
374
+ * @throw std::runtime_error An internal error.
375
+ */
376
+ double probability(const StringList& yseq);
377
+
378
+ /**
379
+ * Compute the marginal probability of the label.
380
+ * @param y The label.
381
+ * @param t The position of the label.
382
+ * @throw std::invalid_argument A model is not opened.
383
+ * @throw std::runtime_error An internal error.
384
+ */
385
+ double marginal(const std::string& y, const int t);
386
+ };
387
+
388
+ /**
389
+ * Obtain the version number of the library.
390
+ * @return std::string The version string.
391
+ */
392
+ std::string version();
393
+
394
+ /**@} */
395
+
396
+
397
+
398
+ };
399
+
400
+ #endif/*__CRFSUITE_API_HPP__*/
@@ -0,0 +1,61 @@
1
+ /*
2
+ * Compatibility stuff among operating systems and compilers.
3
+ *
4
+ * Copyright (c) 2007-2010, Naoaki Okazaki
5
+ * All rights reserved.
6
+ *
7
+ * Redistribution and use in source and binary forms, with or without
8
+ * modification, are permitted provided that the following conditions are met:
9
+ * * Redistributions of source code must retain the above copyright
10
+ * notice, this list of conditions and the following disclaimer.
11
+ * * Redistributions in binary form must reproduce the above copyright
12
+ * notice, this list of conditions and the following disclaimer in the
13
+ * documentation and/or other materials provided with the distribution.
14
+ * * Neither the names of the authors nor the names of its contributors
15
+ * may be used to endorse or promote products derived from this
16
+ * software without specific prior written permission.
17
+ *
18
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
22
+ * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
25
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
26
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
27
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
+ */
30
+
31
+ /* $Id$ */
32
+
33
+ #ifndef __OS_H__
34
+ #define __OS_H__
35
+
36
+
37
+ //#define __SSE__ 1
38
+ #define LBFGS_FLOAT 64
39
+
40
+ #ifdef _MSC_VER
41
+ /* Microsoft Visual C/C++ specific */
42
+
43
+ #define _CRT_SECURE_NO_WARNINGS 1
44
+ #pragma warning(disable : 4996)
45
+
46
+ #define alloca _alloca
47
+ #define strdup _strdup
48
+ #define open _open
49
+ #define isfinite _finite
50
+ #define snprintf _snprintf
51
+
52
+ #ifndef __cplusplus
53
+ /* Microsoft Visual C specific */
54
+
55
+ #define inline __forceinline
56
+
57
+ #endif/*__cplusplus*/
58
+
59
+ #endif/*_MSC_VER*/
60
+
61
+ #endif/*__OS_H__*/