opener-opinion-detector-basic 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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,116 @@
1
+ /*
2
+ * Dump command for CRFsuite frontend.
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
+ #include <os.h>
34
+
35
+ #include <stdio.h>
36
+ #include <stdlib.h>
37
+ #include <string.h>
38
+
39
+ #include <crfsuite.h>
40
+ #include "option.h"
41
+
42
+ #define SAFE_RELEASE(obj) if ((obj) != NULL) { (obj)->release(obj); (obj) = NULL; }
43
+
44
+ typedef struct {
45
+ int help;
46
+ } dump_option_t;
47
+
48
+ static void dump_option_init(dump_option_t* opt)
49
+ {
50
+ memset(opt, 0, sizeof(*opt));
51
+ }
52
+
53
+ static void dump_option_finish(dump_option_t* opt)
54
+ {
55
+ }
56
+
57
+ BEGIN_OPTION_MAP(parse_dump_options, dump_option_t)
58
+
59
+ ON_OPTION(SHORTOPT('h') || LONGOPT("help"))
60
+ opt->help = 1;
61
+
62
+ END_OPTION_MAP()
63
+
64
+ static void show_usage(FILE *fp, const char *argv0, const char *command)
65
+ {
66
+ fprintf(fp, "USAGE: %s %s [OPTIONS] <MODEL>\n", argv0, command);
67
+ fprintf(fp, "Output the model stored in the file (MODEL) in a plain-text format\n");
68
+ fprintf(fp, "\n");
69
+ fprintf(fp, "OPTIONS:\n");
70
+ fprintf(fp, " -h, --help Show the usage of this command and exit\n");
71
+ }
72
+
73
+ int main_dump(int argc, char *argv[], const char *argv0)
74
+ {
75
+ int ret = 0, arg_used = 0;
76
+ dump_option_t opt;
77
+ const char *command = argv[0];
78
+ FILE *fp = NULL, *fpi = stdin, *fpo = stdout, *fpe = stderr;
79
+ crfsuite_model_t *model = NULL;
80
+
81
+ /* Parse the command-line option. */
82
+ dump_option_init(&opt);
83
+ arg_used = option_parse(++argv, --argc, parse_dump_options, &opt);
84
+ if (arg_used < 0) {
85
+ ret = 1;
86
+ goto force_exit;
87
+ }
88
+
89
+ /* Show the help message for this command if specified. */
90
+ if (opt.help) {
91
+ show_usage(fpo, argv0, command);
92
+ goto force_exit;
93
+ }
94
+
95
+ /* Check for the existence of the model file. */
96
+ if (argc <= arg_used) {
97
+ fprintf(fpe, "ERROR: No model specified.\n");
98
+ ret = 1;
99
+ goto force_exit;
100
+ }
101
+
102
+ /* Create a model instance corresponding to the model file. */
103
+ if (ret = crfsuite_create_instance_from_file(argv[arg_used], (void**)&model)) {
104
+ goto force_exit;
105
+ }
106
+
107
+ /* Dump the model. */
108
+ if (ret = model->dump(model, fpo)) {
109
+ goto force_exit;
110
+ }
111
+
112
+ force_exit:
113
+ SAFE_RELEASE(model);
114
+ dump_option_finish(&opt);
115
+ return ret;
116
+ }
@@ -0,0 +1,129 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3
+ <ItemGroup Label="ProjectConfigurations">
4
+ <ProjectConfiguration Include="Debug|Win32">
5
+ <Configuration>Debug</Configuration>
6
+ <Platform>Win32</Platform>
7
+ </ProjectConfiguration>
8
+ <ProjectConfiguration Include="Release|Win32">
9
+ <Configuration>Release</Configuration>
10
+ <Platform>Win32</Platform>
11
+ </ProjectConfiguration>
12
+ </ItemGroup>
13
+ <PropertyGroup Label="Globals">
14
+ <ProjectGuid>{CEC83336-7B18-408B-9F3C-D11225609540}</ProjectGuid>
15
+ <RootNamespace>frontend</RootNamespace>
16
+ <Keyword>Win32Proj</Keyword>
17
+ </PropertyGroup>
18
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
19
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
20
+ <ConfigurationType>Application</ConfigurationType>
21
+ <CharacterSet>Unicode</CharacterSet>
22
+ <WholeProgramOptimization>true</WholeProgramOptimization>
23
+ </PropertyGroup>
24
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
25
+ <ConfigurationType>Application</ConfigurationType>
26
+ <CharacterSet>Unicode</CharacterSet>
27
+ </PropertyGroup>
28
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
29
+ <ImportGroup Label="ExtensionSettings">
30
+ </ImportGroup>
31
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
32
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
33
+ </ImportGroup>
34
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
35
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
36
+ </ImportGroup>
37
+ <PropertyGroup Label="UserMacros" />
38
+ <PropertyGroup>
39
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
40
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
41
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
42
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
43
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
44
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
45
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
46
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
47
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
48
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
49
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
50
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
51
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
52
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionName)</TargetName>
53
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionName)</TargetName>
54
+ </PropertyGroup>
55
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
56
+ <ClCompile>
57
+ <Optimization>Disabled</Optimization>
58
+ <AdditionalIncludeDirectories>$(SolutionDir)include;$(SolutionDir)win32;$(SolutionDir)lib\crf\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
59
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
60
+ <MinimalRebuild>true</MinimalRebuild>
61
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
62
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
63
+ <FloatingPointModel>Strict</FloatingPointModel>
64
+ <FloatingPointExceptions>true</FloatingPointExceptions>
65
+ <PrecompiledHeader>
66
+ </PrecompiledHeader>
67
+ <WarningLevel>Level3</WarningLevel>
68
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
69
+ </ClCompile>
70
+ <Link>
71
+ <GenerateDebugInformation>true</GenerateDebugInformation>
72
+ <SubSystem>Console</SubSystem>
73
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
74
+ <DataExecutionPrevention>
75
+ </DataExecutionPrevention>
76
+ <TargetMachine>MachineX86</TargetMachine>
77
+ </Link>
78
+ </ItemDefinitionGroup>
79
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
80
+ <ClCompile>
81
+ <Optimization>Full</Optimization>
82
+ <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
83
+ <IntrinsicFunctions>true</IntrinsicFunctions>
84
+ <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
85
+ <AdditionalIncludeDirectories>$(SolutionDir)include;$(SolutionDir)win32;$(SolutionDir)lib\crf\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
86
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
87
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
88
+ <FloatingPointExceptions>true</FloatingPointExceptions>
89
+ <PrecompiledHeader>
90
+ </PrecompiledHeader>
91
+ <WarningLevel>Level1</WarningLevel>
92
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
93
+ </ClCompile>
94
+ <Link>
95
+ <GenerateDebugInformation>true</GenerateDebugInformation>
96
+ <SubSystem>Console</SubSystem>
97
+ <OptimizeReferences>true</OptimizeReferences>
98
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
99
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
100
+ <DataExecutionPrevention>
101
+ </DataExecutionPrevention>
102
+ <TargetMachine>MachineX86</TargetMachine>
103
+ </Link>
104
+ </ItemDefinitionGroup>
105
+ <ItemGroup>
106
+ <ClCompile Include="dump.c" />
107
+ <ClCompile Include="iwa.c" />
108
+ <ClCompile Include="learn.c" />
109
+ <ClCompile Include="main.c" />
110
+ <ClCompile Include="option.c" />
111
+ <ClCompile Include="reader.c" />
112
+ <ClCompile Include="tag.c" />
113
+ </ItemGroup>
114
+ <ItemGroup>
115
+ <ClInclude Include="iwa.h" />
116
+ <ClInclude Include="option.h" />
117
+ <ClInclude Include="..\include\os.h" />
118
+ <ClInclude Include="readdata.h" />
119
+ </ItemGroup>
120
+ <ItemGroup>
121
+ <ProjectReference Include="..\lib\crf\crf.vcxproj">
122
+ <Project>{d6b16f2e-da86-4591-8b50-348ab7e3432e}</Project>
123
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
124
+ </ProjectReference>
125
+ </ItemGroup>
126
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
127
+ <ImportGroup Label="ExtensionTargets">
128
+ </ImportGroup>
129
+ </Project>
@@ -0,0 +1,273 @@
1
+ /*
2
+ * A parser for Item With Attributes (IWA) format.
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
+ #include <stdio.h>
34
+ #include <stdlib.h>
35
+ #include <string.h>
36
+
37
+ #include "iwa.h"
38
+
39
+ typedef struct {
40
+ size_t size;
41
+ size_t offset;
42
+ char *value;
43
+ } iwa_string_t;
44
+
45
+ struct tag_iwa {
46
+ FILE *fp;
47
+
48
+ iwa_token_t token;
49
+
50
+ char *buffer;
51
+ char *offset;
52
+ char *end;
53
+
54
+ iwa_string_t attr;
55
+ iwa_string_t value;
56
+ };
57
+
58
+ #define DEFAULT_SIZE 4096
59
+ #define BUFFER_SIZE (DEFAULT_SIZE * 16)
60
+
61
+ static void string_init(iwa_string_t* str)
62
+ {
63
+ str->value = (char*)calloc(DEFAULT_SIZE, sizeof(char));
64
+ str->size = DEFAULT_SIZE;
65
+ str->offset = 0;
66
+ }
67
+
68
+ static void string_finish(iwa_string_t* str)
69
+ {
70
+ free(str->value);
71
+ memset(str, 0, sizeof(*str));
72
+ }
73
+
74
+ static void string_clear(iwa_string_t* str)
75
+ {
76
+ memset(str->value, 0, str->size);
77
+ str->offset = 0;
78
+ }
79
+
80
+ static void string_append(iwa_string_t* str, int c)
81
+ {
82
+ if (str->size <= str->offset) {
83
+ str->size *= 2;
84
+ str->value = (char*)realloc(str->value, str->size);
85
+ memset(&str->value[str->offset], 0, str->size - str->offset);
86
+ }
87
+ str->value[str->offset++] = c;
88
+ }
89
+
90
+ iwa_t* iwa_reader(FILE *fp)
91
+ {
92
+ iwa_t* iwa = (iwa_t*)malloc(sizeof(iwa_t));
93
+
94
+ if (iwa == NULL) {
95
+ goto error_exit;
96
+ }
97
+
98
+ memset(iwa, 0, sizeof(iwa_t));
99
+
100
+ iwa->fp = fp;
101
+
102
+ iwa->buffer = (char*)malloc(sizeof(char) * BUFFER_SIZE);
103
+ iwa->offset = iwa->buffer + BUFFER_SIZE;
104
+ iwa->end = iwa->buffer + BUFFER_SIZE;
105
+ if (iwa->buffer == NULL) {
106
+ goto error_exit;
107
+ }
108
+
109
+ string_init(&iwa->attr);
110
+ string_init(&iwa->value);
111
+
112
+ return iwa;
113
+
114
+ error_exit:
115
+ iwa_delete(iwa);
116
+ return NULL;
117
+ }
118
+
119
+ void iwa_delete(iwa_t* iwa)
120
+ {
121
+ if (iwa != NULL) {
122
+ string_finish(&iwa->value);
123
+ string_finish(&iwa->attr);
124
+ free(iwa->buffer);
125
+ }
126
+ free(iwa);
127
+ }
128
+
129
+ static int peek_char(iwa_t* iwa)
130
+ {
131
+ /* Refill the buffer if necessary. */
132
+ if (iwa->end <= iwa->offset) {
133
+ size_t count = fread(iwa->buffer, sizeof(char), BUFFER_SIZE, iwa->fp);
134
+ iwa->offset = iwa->buffer;
135
+ iwa->end = iwa->buffer + count;
136
+ if (count == 0) {
137
+ return EOF;
138
+ }
139
+ }
140
+
141
+ /* Return the current character */
142
+ return *iwa->offset;
143
+ }
144
+
145
+ static int get_char(iwa_t* iwa)
146
+ {
147
+ int c = peek_char(iwa);
148
+ if (c != EOF) {
149
+ ++iwa->offset;
150
+ }
151
+ return c;
152
+ }
153
+
154
+ static void read_field_unquoted(iwa_t* iwa, iwa_string_t* str)
155
+ {
156
+ int c;
157
+ /* Read until a colon, space, tab, or break-line character. */
158
+ while (c = peek_char(iwa), c != ':' && c != '\t' && c != '\n' && c != EOF) {
159
+ get_char(iwa);
160
+ string_append(str, c);
161
+ }
162
+ /* The input stream points to the character just after the field is terminated. */
163
+ }
164
+
165
+ static void read_field_unescaped(iwa_t* iwa, iwa_string_t* str)
166
+ {
167
+ int c, d;
168
+ /* Read until a colon, space, tab, or break-line character. */
169
+ while (c = peek_char(iwa), c != ':' && c != '\t' && c != '\n' && c != EOF) {
170
+ get_char(iwa);
171
+ if (c == '\\') {
172
+ /* Possibly a escape sequence. */
173
+ d = peek_char(iwa);
174
+ switch (d) {
175
+ case ':':
176
+ case '\\':
177
+ c = d;
178
+ get_char(iwa);
179
+ break;
180
+ }
181
+ }
182
+
183
+ string_append(str, c);
184
+ }
185
+ /* The input stream points to the character just after the field is terminated. */
186
+ }
187
+
188
+ static int read_item(iwa_t* iwa)
189
+ {
190
+ int c;
191
+
192
+ read_field_unescaped(iwa, &iwa->attr);
193
+
194
+ /* Check the character just after the attribute field is terminated. */
195
+ c = peek_char(iwa);
196
+ if (c == ':') {
197
+ /* Discard the colon. */
198
+ get_char(iwa);
199
+
200
+ read_field_unescaped(iwa, &iwa->value);
201
+
202
+ c = peek_char(iwa);
203
+ if (c == ':') {
204
+ return 1;
205
+ }
206
+ }
207
+
208
+ return 0;
209
+ }
210
+
211
+ const iwa_token_t* iwa_read(iwa_t* iwa)
212
+ {
213
+ iwa_token_t* token = &iwa->token;
214
+
215
+ /* Initialization. */
216
+ token->attr = NULL;
217
+ token->value = NULL;
218
+ string_clear(&iwa->attr);
219
+ string_clear(&iwa->value);
220
+
221
+ /* Return NULL if the stream hits EOF. */
222
+ if (peek_char(iwa) == EOF) {
223
+ switch (token->type) {
224
+ case IWA_EOF:
225
+ return NULL;
226
+ case IWA_BOI:
227
+ token->type = IWA_EOI;
228
+ return token;
229
+ case IWA_NONE:
230
+ case IWA_EOI:
231
+ token->type = IWA_EOF;
232
+ return token;
233
+ }
234
+ }
235
+
236
+ /* Conditions based on the previous state. */
237
+ switch (token->type) {
238
+ case IWA_NONE:
239
+ case IWA_EOI:
240
+ if (peek_char(iwa) == '\n') {
241
+ /* A empty line. */
242
+ get_char(iwa);
243
+ token->type = IWA_NONE;
244
+ } else {
245
+ /* A non-empty line. */
246
+ token->type = IWA_BOI;
247
+ }
248
+ break;
249
+ case IWA_BOI:
250
+ case IWA_ITEM:
251
+ for (;;) {
252
+ int c = peek_char(iwa);
253
+
254
+ if (c == '\t') {
255
+ /* Skip white spaces. */
256
+ get_char(iwa);
257
+ } else if (c == '\n') {
258
+ get_char(iwa);
259
+ token->type = IWA_EOI;
260
+ break;
261
+ } else {
262
+ read_item(iwa);
263
+ token->type = IWA_ITEM;
264
+ token->attr = iwa->attr.value;
265
+ token->value = iwa->value.value;
266
+ break;
267
+ }
268
+ }
269
+ break;
270
+ }
271
+
272
+ return token;
273
+ }