abstractor 1.0.8

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 (346) hide show
  1. checksums.yaml +15 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +14 -0
  4. data/Rakefile +33 -0
  5. data/app/assets/images/abstractor/add.png +0 -0
  6. data/app/assets/images/abstractor/ajax-loader.gif +0 -0
  7. data/app/assets/images/abstractor/bar.gif +0 -0
  8. data/app/assets/images/abstractor/bti_logo.jpg +0 -0
  9. data/app/assets/images/abstractor/bullet_arrow_down.png +0 -0
  10. data/app/assets/images/abstractor/bullet_arrow_up.png +0 -0
  11. data/app/assets/images/abstractor/cog.png +0 -0
  12. data/app/assets/images/abstractor/delete.png +0 -0
  13. data/app/assets/images/abstractor/edit.png +0 -0
  14. data/app/assets/images/abstractor/excel.png +0 -0
  15. data/app/assets/images/abstractor/favicon.ico +0 -0
  16. data/app/assets/images/abstractor/greencheck.gif +0 -0
  17. data/app/assets/images/abstractor/loading.gif +0 -0
  18. data/app/assets/images/abstractor/nu_logo.jpg +0 -0
  19. data/app/assets/images/abstractor/nubic_logo.png +0 -0
  20. data/app/assets/images/abstractor/page.png +0 -0
  21. data/app/assets/images/abstractor/rails.png +0 -0
  22. data/app/assets/images/abstractor/robert_h_lurie.jpg +0 -0
  23. data/app/assets/images/abstractor/show.png +0 -0
  24. data/app/assets/images/abstractor/switch_minus.gif +0 -0
  25. data/app/assets/images/abstractor/switch_plus.gif +0 -0
  26. data/app/assets/javascripts/abstractor/abstractor.js +89 -0
  27. data/app/assets/javascripts/abstractor/application.js +21 -0
  28. data/app/assets/javascripts/abstractor/combobox.js +301 -0
  29. data/app/assets/javascripts/abstractor/jquery/jquery.form.js +1074 -0
  30. data/app/assets/javascripts/abstractor/nested_attributes.js +69 -0
  31. data/app/assets/stylesheets/abstractor/abstractor_abstractions.css +312 -0
  32. data/app/assets/stylesheets/abstractor/application.css +21 -0
  33. data/app/assets/stylesheets/abstractor/jquery.ui.override.css.scss +73 -0
  34. data/app/controllers/abstractor/abstractor_abstraction_groups_controller.rb +5 -0
  35. data/app/controllers/abstractor/abstractor_abstractions_controller.rb +5 -0
  36. data/app/controllers/abstractor/abstractor_suggestions_controller.rb +5 -0
  37. data/app/controllers/abstractor/application_controller.rb +2 -0
  38. data/app/helpers/abstractor/application_helper.rb +4 -0
  39. data/app/models/abstractor/abstractor_abstraction.rb +6 -0
  40. data/app/models/abstractor/abstractor_abstraction_group.rb +6 -0
  41. data/app/models/abstractor/abstractor_abstraction_group_member.rb +6 -0
  42. data/app/models/abstractor/abstractor_abstraction_schema.rb +6 -0
  43. data/app/models/abstractor/abstractor_abstraction_schema_object_value.rb +6 -0
  44. data/app/models/abstractor/abstractor_abstraction_schema_predicate_variant.rb +6 -0
  45. data/app/models/abstractor/abstractor_abstraction_schema_relation.rb +6 -0
  46. data/app/models/abstractor/abstractor_abstraction_source.rb +6 -0
  47. data/app/models/abstractor/abstractor_object_type.rb +6 -0
  48. data/app/models/abstractor/abstractor_object_value.rb +6 -0
  49. data/app/models/abstractor/abstractor_object_value_variant.rb +6 -0
  50. data/app/models/abstractor/abstractor_relation_type.rb +6 -0
  51. data/app/models/abstractor/abstractor_rule_type.rb +6 -0
  52. data/app/models/abstractor/abstractor_subject.rb +6 -0
  53. data/app/models/abstractor/abstractor_subject_group.rb +6 -0
  54. data/app/models/abstractor/abstractor_subject_group_member.rb +6 -0
  55. data/app/models/abstractor/abstractor_subject_relation.rb +6 -0
  56. data/app/models/abstractor/abstractor_suggestion.rb +6 -0
  57. data/app/models/abstractor/abstractor_suggestion_object_value.rb +6 -0
  58. data/app/models/abstractor/abstractor_suggestion_source.rb +6 -0
  59. data/app/models/abstractor/abstractor_suggestion_status.rb +6 -0
  60. data/app/views/abstractor/abstractor_abstraction_groups/_form.html.haml +10 -0
  61. data/app/views/abstractor/abstractor_abstraction_groups/edit.html.haml +1 -0
  62. data/app/views/abstractor/abstractor_abstractions/_fields.html.haml +63 -0
  63. data/app/views/abstractor/abstractor_abstractions/_list.html.haml +45 -0
  64. data/app/views/abstractor/abstractor_abstractions/edit.html.haml +53 -0
  65. data/app/views/abstractor/abstractor_abstractions/show.html.haml +1 -0
  66. data/app/views/abstractor/shared/_error_messages.html.haml +5 -0
  67. data/config/cucumber.yml +8 -0
  68. data/config/routes.rb +7 -0
  69. data/db/migrate/20131227205140_create_abstractor_object_types.rb +10 -0
  70. data/db/migrate/20131227205219_create_abstractor_object_values.rb +10 -0
  71. data/db/migrate/20131227205256_create_abstractor_object_value_variants.rb +11 -0
  72. data/db/migrate/20131227205320_create_abstractor_relation_types.rb +10 -0
  73. data/db/migrate/20131227205354_create_abstractor_rule_types.rb +11 -0
  74. data/db/migrate/20131227205432_create_abstractor_abstraction_schemas.rb +13 -0
  75. data/db/migrate/20131227205456_create_abstractor_abstraction_schema_object_values.rb +10 -0
  76. data/db/migrate/20131227205529_create_abstractor_abstraction_schema_predicate_variants.rb +11 -0
  77. data/db/migrate/20131227205610_create_abstractor_abstraction_schema_relations.rb +11 -0
  78. data/db/migrate/20131227205652_create_abstractor_subjects.rb +12 -0
  79. data/db/migrate/20131227205732_create_abstractor_subject_relations.rb +11 -0
  80. data/db/migrate/20131227205831_create_abstractor_abstraction_sources.rb +11 -0
  81. data/db/migrate/20131227210211_create_abstractor_subject_groups.rb +10 -0
  82. data/db/migrate/20131227210244_create_abstractor_subject_group_members.rb +11 -0
  83. data/db/migrate/20131227210350_create_abstractor_abstraction_groups.rb +12 -0
  84. data/db/migrate/20131227210353_create_abstractor_abstraction_group_members.rb +11 -0
  85. data/db/migrate/20131227211050_create_abstractor_suggestion_statuses.rb +10 -0
  86. data/db/migrate/20131227211303_create_abstractor_abstractions.rb +15 -0
  87. data/db/migrate/20131227213427_create_abstractor_suggestions.rb +14 -0
  88. data/db/migrate/20131228041944_create_abstractor_suggestion_object_values.rb +11 -0
  89. data/db/migrate/20131228041945_create_abstractor_suggestion_sources.rb +16 -0
  90. data/db/seeds.rb +0 -0
  91. data/lib/abstractor.rb +8 -0
  92. data/lib/abstractor/abstractable.rb +190 -0
  93. data/lib/abstractor/core_ext/string.rb +99 -0
  94. data/lib/abstractor/engine.rb +14 -0
  95. data/lib/abstractor/methods/controllers/abstractor_abstraction_groups_controller.rb +37 -0
  96. data/lib/abstractor/methods/controllers/abstractor_abstractions_controller.rb +42 -0
  97. data/lib/abstractor/methods/controllers/abstractor_suggestions_controller.rb +28 -0
  98. data/lib/abstractor/methods/models/abstractor_abstraction.rb +65 -0
  99. data/lib/abstractor/methods/models/abstractor_abstraction_group.rb +37 -0
  100. data/lib/abstractor/methods/models/abstractor_abstraction_group_member.rb +17 -0
  101. data/lib/abstractor/methods/models/abstractor_abstraction_schema.rb +27 -0
  102. data/lib/abstractor/methods/models/abstractor_abstraction_schema_object_value.rb +17 -0
  103. data/lib/abstractor/methods/models/abstractor_abstraction_schema_predicate_variant.rb +16 -0
  104. data/lib/abstractor/methods/models/abstractor_abstraction_schema_relation.rb +18 -0
  105. data/lib/abstractor/methods/models/abstractor_abstraction_source.rb +29 -0
  106. data/lib/abstractor/methods/models/abstractor_object_type.rb +16 -0
  107. data/lib/abstractor/methods/models/abstractor_object_value.rb +24 -0
  108. data/lib/abstractor/methods/models/abstractor_object_value_variant.rb +16 -0
  109. data/lib/abstractor/methods/models/abstractor_relation_type.rb +16 -0
  110. data/lib/abstractor/methods/models/abstractor_rule_type.rb +17 -0
  111. data/lib/abstractor/methods/models/abstractor_subject.rb +258 -0
  112. data/lib/abstractor/methods/models/abstractor_subject_group.rb +19 -0
  113. data/lib/abstractor/methods/models/abstractor_subject_group_member.rb +17 -0
  114. data/lib/abstractor/methods/models/abstractor_subject_relation.rb +18 -0
  115. data/lib/abstractor/methods/models/abstractor_suggestion.rb +88 -0
  116. data/lib/abstractor/methods/models/abstractor_suggestion_object_value.rb +17 -0
  117. data/lib/abstractor/methods/models/abstractor_suggestion_source.rb +17 -0
  118. data/lib/abstractor/methods/models/abstractor_suggestion_status.rb +29 -0
  119. data/lib/abstractor/methods/models/soft_delete.rb +35 -0
  120. data/lib/abstractor/negation_detection.rb +43 -0
  121. data/lib/abstractor/parser.rb +76 -0
  122. data/lib/abstractor/setup.rb +24 -0
  123. data/lib/abstractor/user_interface.rb +40 -0
  124. data/lib/abstractor/utility.rb +8 -0
  125. data/lib/abstractor/version.rb +3 -0
  126. data/lib/generators/abstractor/install/install_generator.rb +118 -0
  127. data/lib/generators/abstractor/install/templates/controllers/abstractor_abstraction_groups_controller.rb +16 -0
  128. data/lib/generators/abstractor/install/templates/controllers/abstractor_abstractions_controller.rb +24 -0
  129. data/lib/generators/abstractor/install/templates/controllers/abstractor_suggestions_controller.rb +12 -0
  130. data/lib/generators/abstractor/install/templates/dictionaries.yml +235 -0
  131. data/lib/generators/abstractor/install/templates/helpers/abstractions_helper.rb +9 -0
  132. data/lib/generators/abstractor/install/templates/models/abstractor_abstraction.rb +9 -0
  133. data/lib/generators/abstractor/install/templates/models/abstractor_abstraction_group.rb +9 -0
  134. data/lib/generators/abstractor/install/templates/models/abstractor_abstraction_group_member.rb +9 -0
  135. data/lib/generators/abstractor/install/templates/models/abstractor_abstraction_schema.rb +9 -0
  136. data/lib/generators/abstractor/install/templates/models/abstractor_abstraction_schema_object_value.rb +9 -0
  137. data/lib/generators/abstractor/install/templates/models/abstractor_abstraction_schema_predicate_variant.rb +9 -0
  138. data/lib/generators/abstractor/install/templates/models/abstractor_abstraction_schema_relation.rb +9 -0
  139. data/lib/generators/abstractor/install/templates/models/abstractor_abstraction_source.rb +9 -0
  140. data/lib/generators/abstractor/install/templates/models/abstractor_object_type.rb +9 -0
  141. data/lib/generators/abstractor/install/templates/models/abstractor_object_value.rb +9 -0
  142. data/lib/generators/abstractor/install/templates/models/abstractor_object_value_variant.rb +9 -0
  143. data/lib/generators/abstractor/install/templates/models/abstractor_relation_type.rb +9 -0
  144. data/lib/generators/abstractor/install/templates/models/abstractor_rule_type.rb +9 -0
  145. data/lib/generators/abstractor/install/templates/models/abstractor_subject.rb +9 -0
  146. data/lib/generators/abstractor/install/templates/models/abstractor_subject_group.rb +9 -0
  147. data/lib/generators/abstractor/install/templates/models/abstractor_subject_group_member.rb +9 -0
  148. data/lib/generators/abstractor/install/templates/models/abstractor_subject_relation.rb +9 -0
  149. data/lib/generators/abstractor/install/templates/models/abstractor_suggestion.rb +9 -0
  150. data/lib/generators/abstractor/install/templates/models/abstractor_suggestion_object_value.rb +9 -0
  151. data/lib/generators/abstractor/install/templates/models/abstractor_suggestion_source.rb +9 -0
  152. data/lib/generators/abstractor/install/templates/models/abstractor_suggestion_status.rb +9 -0
  153. data/lib/lingscope/build.xml +74 -0
  154. data/lib/lingscope/build/built-jar.properties +4 -0
  155. data/lib/lingscope/build/classes/lingscope/algorithms/AbnerTokenizer.class +0 -0
  156. data/lib/lingscope/build/classes/lingscope/algorithms/AnnotationComparer.class +0 -0
  157. data/lib/lingscope/build/classes/lingscope/algorithms/Annotator.class +0 -0
  158. data/lib/lingscope/build/classes/lingscope/algorithms/BaselineAnnotator.class +0 -0
  159. data/lib/lingscope/build/classes/lingscope/algorithms/BaselineCueAnnotator.class +0 -0
  160. data/lib/lingscope/build/classes/lingscope/algorithms/BaselineScopeAnnotator.class +0 -0
  161. data/lib/lingscope/build/classes/lingscope/algorithms/CrfAnnotator.class +0 -0
  162. data/lib/lingscope/build/classes/lingscope/algorithms/NegexAnnotator.class +0 -0
  163. data/lib/lingscope/build/classes/lingscope/algorithms/NegexCueAnnotator.class +0 -0
  164. data/lib/lingscope/build/classes/lingscope/algorithms/NegexScopeAnnotator.class +0 -0
  165. data/lib/lingscope/build/classes/lingscope/algorithms/PosTagger.class +0 -0
  166. data/lib/lingscope/build/classes/lingscope/algorithms/negex/GenNegEx.class +0 -0
  167. data/lib/lingscope/build/classes/lingscope/algorithms/negex/Sorter.class +0 -0
  168. data/lib/lingscope/build/classes/lingscope/drivers/AnnotatedFilesMerger.class +0 -0
  169. data/lib/lingscope/build/classes/lingscope/drivers/AnnotationComparerDriver.class +0 -0
  170. data/lib/lingscope/build/classes/lingscope/drivers/BaselineDriver.class +0 -0
  171. data/lib/lingscope/build/classes/lingscope/drivers/CrfDriver.class +0 -0
  172. data/lib/lingscope/build/classes/lingscope/drivers/CueAndPosFilesMerger.class +0 -0
  173. data/lib/lingscope/build/classes/lingscope/drivers/ModelTrainer.class +0 -0
  174. data/lib/lingscope/build/classes/lingscope/drivers/NegexDriver.class +0 -0
  175. data/lib/lingscope/build/classes/lingscope/drivers/PosTaggerDriver.class +0 -0
  176. data/lib/lingscope/build/classes/lingscope/drivers/SentencePosTagger.class +0 -0
  177. data/lib/lingscope/build/classes/lingscope/drivers/SentenceTagger.class +0 -0
  178. data/lib/lingscope/build/classes/lingscope/io/AnnotatedSentencesIO.class +0 -0
  179. data/lib/lingscope/build/classes/lingscope/structures/AnnotatedSentence.class +0 -0
  180. data/lib/lingscope/dist/README.TXT +32 -0
  181. data/lib/lingscope/dist/javadoc/allclasses-frame.html +80 -0
  182. data/lib/lingscope/dist/javadoc/allclasses-noframe.html +80 -0
  183. data/lib/lingscope/dist/javadoc/constant-values.html +199 -0
  184. data/lib/lingscope/dist/javadoc/deprecated-list.html +147 -0
  185. data/lib/lingscope/dist/javadoc/help-doc.html +224 -0
  186. data/lib/lingscope/dist/javadoc/index-files/index-1.html +188 -0
  187. data/lib/lingscope/dist/javadoc/index-files/index-10.html +149 -0
  188. data/lib/lingscope/dist/javadoc/index-files/index-11.html +158 -0
  189. data/lib/lingscope/dist/javadoc/index-files/index-12.html +157 -0
  190. data/lib/lingscope/dist/javadoc/index-files/index-13.html +177 -0
  191. data/lib/lingscope/dist/javadoc/index-files/index-14.html +155 -0
  192. data/lib/lingscope/dist/javadoc/index-files/index-15.html +152 -0
  193. data/lib/lingscope/dist/javadoc/index-files/index-16.html +146 -0
  194. data/lib/lingscope/dist/javadoc/index-files/index-2.html +158 -0
  195. data/lib/lingscope/dist/javadoc/index-files/index-3.html +165 -0
  196. data/lib/lingscope/dist/javadoc/index-files/index-4.html +146 -0
  197. data/lib/lingscope/dist/javadoc/index-files/index-5.html +219 -0
  198. data/lib/lingscope/dist/javadoc/index-files/index-6.html +149 -0
  199. data/lib/lingscope/dist/javadoc/index-files/index-7.html +155 -0
  200. data/lib/lingscope/dist/javadoc/index-files/index-8.html +185 -0
  201. data/lib/lingscope/dist/javadoc/index-files/index-9.html +164 -0
  202. data/lib/lingscope/dist/javadoc/index.html +74 -0
  203. data/lib/lingscope/dist/javadoc/lingscope/algorithms/AbnerTokenizer.html +280 -0
  204. data/lib/lingscope/dist/javadoc/lingscope/algorithms/AnnotationComparer.html +526 -0
  205. data/lib/lingscope/dist/javadoc/lingscope/algorithms/Annotator.html +401 -0
  206. data/lib/lingscope/dist/javadoc/lingscope/algorithms/BaselineAnnotator.html +375 -0
  207. data/lib/lingscope/dist/javadoc/lingscope/algorithms/BaselineCueAnnotator.html +309 -0
  208. data/lib/lingscope/dist/javadoc/lingscope/algorithms/BaselineScopeAnnotator.html +340 -0
  209. data/lib/lingscope/dist/javadoc/lingscope/algorithms/CrfAnnotator.html +340 -0
  210. data/lib/lingscope/dist/javadoc/lingscope/algorithms/NegexAnnotator.html +364 -0
  211. data/lib/lingscope/dist/javadoc/lingscope/algorithms/NegexCueAnnotator.html +309 -0
  212. data/lib/lingscope/dist/javadoc/lingscope/algorithms/NegexScopeAnnotator.html +309 -0
  213. data/lib/lingscope/dist/javadoc/lingscope/algorithms/PosTagger.html +268 -0
  214. data/lib/lingscope/dist/javadoc/lingscope/algorithms/class-use/AbnerTokenizer.html +145 -0
  215. data/lib/lingscope/dist/javadoc/lingscope/algorithms/class-use/AnnotationComparer.html +145 -0
  216. data/lib/lingscope/dist/javadoc/lingscope/algorithms/class-use/Annotator.html +299 -0
  217. data/lib/lingscope/dist/javadoc/lingscope/algorithms/class-use/BaselineAnnotator.html +189 -0
  218. data/lib/lingscope/dist/javadoc/lingscope/algorithms/class-use/BaselineCueAnnotator.html +145 -0
  219. data/lib/lingscope/dist/javadoc/lingscope/algorithms/class-use/BaselineScopeAnnotator.html +145 -0
  220. data/lib/lingscope/dist/javadoc/lingscope/algorithms/class-use/CrfAnnotator.html +145 -0
  221. data/lib/lingscope/dist/javadoc/lingscope/algorithms/class-use/NegexAnnotator.html +189 -0
  222. data/lib/lingscope/dist/javadoc/lingscope/algorithms/class-use/NegexCueAnnotator.html +145 -0
  223. data/lib/lingscope/dist/javadoc/lingscope/algorithms/class-use/NegexScopeAnnotator.html +145 -0
  224. data/lib/lingscope/dist/javadoc/lingscope/algorithms/class-use/PosTagger.html +145 -0
  225. data/lib/lingscope/dist/javadoc/lingscope/algorithms/negex/GenNegEx.html +369 -0
  226. data/lib/lingscope/dist/javadoc/lingscope/algorithms/negex/Sorter.html +253 -0
  227. data/lib/lingscope/dist/javadoc/lingscope/algorithms/negex/class-use/GenNegEx.html +181 -0
  228. data/lib/lingscope/dist/javadoc/lingscope/algorithms/negex/class-use/Sorter.html +145 -0
  229. data/lib/lingscope/dist/javadoc/lingscope/algorithms/negex/package-frame.html +35 -0
  230. data/lib/lingscope/dist/javadoc/lingscope/algorithms/negex/package-summary.html +165 -0
  231. data/lib/lingscope/dist/javadoc/lingscope/algorithms/negex/package-tree.html +154 -0
  232. data/lib/lingscope/dist/javadoc/lingscope/algorithms/negex/package-use.html +174 -0
  233. data/lib/lingscope/dist/javadoc/lingscope/algorithms/package-frame.html +53 -0
  234. data/lib/lingscope/dist/javadoc/lingscope/algorithms/package-summary.html +198 -0
  235. data/lib/lingscope/dist/javadoc/lingscope/algorithms/package-tree.html +160 -0
  236. data/lib/lingscope/dist/javadoc/lingscope/algorithms/package-use.html +202 -0
  237. data/lib/lingscope/dist/javadoc/lingscope/drivers/AnnotatedFilesMerger.html +284 -0
  238. data/lib/lingscope/dist/javadoc/lingscope/drivers/AnnotationComparerDriver.html +258 -0
  239. data/lib/lingscope/dist/javadoc/lingscope/drivers/BaselineDriver.html +260 -0
  240. data/lib/lingscope/dist/javadoc/lingscope/drivers/CrfDriver.html +262 -0
  241. data/lib/lingscope/dist/javadoc/lingscope/drivers/CueAndPosFilesMerger.html +310 -0
  242. data/lib/lingscope/dist/javadoc/lingscope/drivers/ModelTrainer.html +281 -0
  243. data/lib/lingscope/dist/javadoc/lingscope/drivers/NegexDriver.html +262 -0
  244. data/lib/lingscope/dist/javadoc/lingscope/drivers/PosTaggerDriver.html +289 -0
  245. data/lib/lingscope/dist/javadoc/lingscope/drivers/SentencePosTagger.html +313 -0
  246. data/lib/lingscope/dist/javadoc/lingscope/drivers/SentenceTagger.html +512 -0
  247. data/lib/lingscope/dist/javadoc/lingscope/drivers/class-use/AnnotatedFilesMerger.html +145 -0
  248. data/lib/lingscope/dist/javadoc/lingscope/drivers/class-use/AnnotationComparerDriver.html +145 -0
  249. data/lib/lingscope/dist/javadoc/lingscope/drivers/class-use/BaselineDriver.html +145 -0
  250. data/lib/lingscope/dist/javadoc/lingscope/drivers/class-use/CrfDriver.html +145 -0
  251. data/lib/lingscope/dist/javadoc/lingscope/drivers/class-use/CueAndPosFilesMerger.html +145 -0
  252. data/lib/lingscope/dist/javadoc/lingscope/drivers/class-use/ModelTrainer.html +145 -0
  253. data/lib/lingscope/dist/javadoc/lingscope/drivers/class-use/NegexDriver.html +145 -0
  254. data/lib/lingscope/dist/javadoc/lingscope/drivers/class-use/PosTaggerDriver.html +145 -0
  255. data/lib/lingscope/dist/javadoc/lingscope/drivers/class-use/SentencePosTagger.html +145 -0
  256. data/lib/lingscope/dist/javadoc/lingscope/drivers/class-use/SentenceTagger.html +145 -0
  257. data/lib/lingscope/dist/javadoc/lingscope/drivers/package-frame.html +51 -0
  258. data/lib/lingscope/dist/javadoc/lingscope/drivers/package-summary.html +195 -0
  259. data/lib/lingscope/dist/javadoc/lingscope/drivers/package-tree.html +154 -0
  260. data/lib/lingscope/dist/javadoc/lingscope/drivers/package-use.html +145 -0
  261. data/lib/lingscope/dist/javadoc/lingscope/io/AnnotatedSentencesIO.html +285 -0
  262. data/lib/lingscope/dist/javadoc/lingscope/io/class-use/AnnotatedSentencesIO.html +145 -0
  263. data/lib/lingscope/dist/javadoc/lingscope/io/package-frame.html +33 -0
  264. data/lib/lingscope/dist/javadoc/lingscope/io/package-summary.html +158 -0
  265. data/lib/lingscope/dist/javadoc/lingscope/io/package-tree.html +154 -0
  266. data/lib/lingscope/dist/javadoc/lingscope/io/package-use.html +145 -0
  267. data/lib/lingscope/dist/javadoc/lingscope/structures/AnnotatedSentence.html +425 -0
  268. data/lib/lingscope/dist/javadoc/lingscope/structures/class-use/AnnotatedSentence.html +423 -0
  269. data/lib/lingscope/dist/javadoc/lingscope/structures/package-frame.html +33 -0
  270. data/lib/lingscope/dist/javadoc/lingscope/structures/package-summary.html +158 -0
  271. data/lib/lingscope/dist/javadoc/lingscope/structures/package-tree.html +154 -0
  272. data/lib/lingscope/dist/javadoc/lingscope/structures/package-use.html +209 -0
  273. data/lib/lingscope/dist/javadoc/overview-frame.html +51 -0
  274. data/lib/lingscope/dist/javadoc/overview-summary.html +168 -0
  275. data/lib/lingscope/dist/javadoc/overview-tree.html +159 -0
  276. data/lib/lingscope/dist/javadoc/package-list +5 -0
  277. data/lib/lingscope/dist/javadoc/resources/inherit.gif +0 -0
  278. data/lib/lingscope/dist/javadoc/stylesheet.css +29 -0
  279. data/lib/lingscope/dist/lib/abner.jar +0 -0
  280. data/lib/lingscope/dist/lib/commons-lang-2.4.jar +0 -0
  281. data/lib/lingscope/dist/lib/java_utils.jar +0 -0
  282. data/lib/lingscope/dist/lib/sptoolkit.jar +0 -0
  283. data/lib/lingscope/dist/lib/stanford-postagger.jar +0 -0
  284. data/lib/lingscope/dist/lingscope.jar +0 -0
  285. data/lib/lingscope/lingscope.zip +0 -0
  286. data/lib/lingscope/manifest.mf +3 -0
  287. data/lib/lingscope/nbproject/build-impl.xml +1338 -0
  288. data/lib/lingscope/nbproject/genfiles.properties +8 -0
  289. data/lib/lingscope/nbproject/private/config.properties +0 -0
  290. data/lib/lingscope/nbproject/private/private.properties +10 -0
  291. data/lib/lingscope/nbproject/private/private.xml +5 -0
  292. data/lib/lingscope/nbproject/project.properties +85 -0
  293. data/lib/lingscope/nbproject/project.xml +15 -0
  294. data/lib/lingscope/negation_models.zip +0 -0
  295. data/lib/lingscope/negation_models/baseline_cue_all_both.model +49 -0
  296. data/lib/lingscope/negation_models/baseline_cue_all_clinical.model +19 -0
  297. data/lib/lingscope/negation_models/crf_cue_all_both.model +0 -0
  298. data/lib/lingscope/negation_models/crf_cue_all_clinical.model +0 -0
  299. data/lib/lingscope/negation_models/crf_scope_cue_crf_all_both.model +0 -0
  300. data/lib/lingscope/negation_models/crf_scope_cue_crf_all_clinical.model +0 -0
  301. data/lib/lingscope/negation_models/crf_scope_cue_regex_all_both.model +0 -0
  302. data/lib/lingscope/negation_models/crf_scope_cue_regex_all_clinical.model +0 -0
  303. data/lib/lingscope/negation_models/crf_scope_words_all_both.model +0 -0
  304. data/lib/lingscope/negation_models/crf_scope_words_all_clinical.model +0 -0
  305. data/lib/lingscope/negation_models/crf_scope_words_crf_all_both.model +0 -0
  306. data/lib/lingscope/negation_models/crf_scope_words_crf_all_clinical.model +0 -0
  307. data/lib/lingscope/negation_models/crf_scope_words_regex_all_both.model +0 -0
  308. data/lib/lingscope/negation_models/crf_scope_words_regex_all_clinical.model +0 -0
  309. data/lib/lingscope/src/lingscope/algorithms/AbnerTokenizer.java +58 -0
  310. data/lib/lingscope/src/lingscope/algorithms/AnnotationComparer.java +207 -0
  311. data/lib/lingscope/src/lingscope/algorithms/Annotator.java +51 -0
  312. data/lib/lingscope/src/lingscope/algorithms/BaselineAnnotator.java +80 -0
  313. data/lib/lingscope/src/lingscope/algorithms/BaselineCueAnnotator.java +84 -0
  314. data/lib/lingscope/src/lingscope/algorithms/BaselineScopeAnnotator.java +101 -0
  315. data/lib/lingscope/src/lingscope/algorithms/CrfAnnotator.java +45 -0
  316. data/lib/lingscope/src/lingscope/algorithms/NegexAnnotator.java +52 -0
  317. data/lib/lingscope/src/lingscope/algorithms/NegexCueAnnotator.java +26 -0
  318. data/lib/lingscope/src/lingscope/algorithms/NegexScopeAnnotator.java +26 -0
  319. data/lib/lingscope/src/lingscope/algorithms/PosTagger.java +54 -0
  320. data/lib/lingscope/src/lingscope/algorithms/negex/GenNegEx.java +530 -0
  321. data/lib/lingscope/src/lingscope/algorithms/negex/Sorter.java +36 -0
  322. data/lib/lingscope/src/lingscope/drivers/AnnotatedFilesMerger.java +61 -0
  323. data/lib/lingscope/src/lingscope/drivers/AnnotationComparerDriver.java +22 -0
  324. data/lib/lingscope/src/lingscope/drivers/BaselineDriver.java +45 -0
  325. data/lib/lingscope/src/lingscope/drivers/CrfDriver.java +31 -0
  326. data/lib/lingscope/src/lingscope/drivers/CueAndPosFilesMerger.java +86 -0
  327. data/lib/lingscope/src/lingscope/drivers/ModelTrainer.java +39 -0
  328. data/lib/lingscope/src/lingscope/drivers/NegexDriver.java +32 -0
  329. data/lib/lingscope/src/lingscope/drivers/PosTaggerDriver.java +62 -0
  330. data/lib/lingscope/src/lingscope/drivers/SentencePosTagger.java +89 -0
  331. data/lib/lingscope/src/lingscope/drivers/SentenceTagger.java +158 -0
  332. data/lib/lingscope/src/lingscope/io/AnnotatedSentencesIO.java +53 -0
  333. data/lib/lingscope/src/lingscope/structures/AnnotatedSentence.java +105 -0
  334. data/lib/setup/data/ICD-O-3_CSV-metadata/Morphenglish.csv +1 -0
  335. data/lib/setup/data/ICD-O-3_CSV-metadata/Morphenglish.txt +2273 -0
  336. data/lib/setup/data/ICD-O-3_CSV-metadata/Topoenglish.csv +1 -0
  337. data/lib/setup/data/ICD-O-3_CSV-metadata/Topoenglish.txt +1342 -0
  338. data/lib/setup/data/ICD-O-3_CSV-metadata/icd-o3 readme.txt +21 -0
  339. data/lib/setup/data/custom_site_synonyms.csv +1 -0
  340. data/lib/setup/data/diagnosis_categorizations.csv +1 -0
  341. data/lib/setup/data/high_level_primary_cns_diagnosis_categorizations.yml +597 -0
  342. data/lib/setup/data/icdo3_sites_with_laterality.txt +11 -0
  343. data/lib/setup/data/site_site_categories.txt +28 -0
  344. data/lib/tasks/abstractor_tasks.rake +22 -0
  345. data/lib/tasks/cucumber.rake +65 -0
  346. metadata +754 -0
@@ -0,0 +1,8 @@
1
+ build.xml.data.CRC32=f6f84b20
2
+ build.xml.script.CRC32=f044596d
3
+ build.xml.stylesheet.CRC32=28e38971@1.38.2.45
4
+ # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
5
+ # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
6
+ nbproject/build-impl.xml.data.CRC32=f6f84b20
7
+ nbproject/build-impl.xml.script.CRC32=46d3adf7
8
+ nbproject/build-impl.xml.stylesheet.CRC32=5183f3c0@1.51.1.46
File without changes
@@ -0,0 +1,10 @@
1
+ compile.on.save=true
2
+ do.depend=false
3
+ do.jar=true
4
+ file.reference.abner.jar=/Users/shashank/Documents/libraries/abner.jar
5
+ file.reference.commons-lang-2.4.jar=/Users/shashank/Documents/libraries/commons-lang-2.4/commons-lang-2.4.jar
6
+ file.reference.sptoolkit.jar=/Users/shashank/Documents/libraries/sptoolkit.jar
7
+ file.reference.stanford-postagger.jar=/Users/shashank/Documents/libraries/stanford-postagger-full-2008-09-28/stanford-postagger.jar
8
+ javac.debug=true
9
+ javadoc.preview=true
10
+ user.properties.file=/Users/shashank/Library/Application Support/NetBeans/7.2beta/build.properties
@@ -0,0 +1,5 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project-private xmlns="http://www.netbeans.org/ns/project-private/1">
3
+ <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/1"/>
4
+ <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>
5
+ </project-private>
@@ -0,0 +1,85 @@
1
+ annotation.processing.enabled=true
2
+ annotation.processing.enabled.in.editor=false
3
+ annotation.processing.run.all.processors=true
4
+ annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output
5
+ application.title=lingscope
6
+ application.vendor=shashank
7
+ build.classes.dir=${build.dir}/classes
8
+ build.classes.excludes=**/*.java,**/*.form
9
+ # This directory is removed when the project is cleaned:
10
+ build.dir=build
11
+ build.generated.dir=${build.dir}/generated
12
+ build.generated.sources.dir=${build.dir}/generated-sources
13
+ # Only compile against the classpath explicitly listed here:
14
+ build.sysclasspath=ignore
15
+ build.test.classes.dir=${build.dir}/test/classes
16
+ build.test.results.dir=${build.dir}/test/results
17
+ # Uncomment to specify the preferred debugger connection transport:
18
+ #debug.transport=dt_socket
19
+ debug.classpath=\
20
+ ${run.classpath}
21
+ debug.test.classpath=\
22
+ ${run.test.classpath}
23
+ # This directory is removed when the project is cleaned:
24
+ dist.dir=dist
25
+ dist.jar=${dist.dir}/lingscope.jar
26
+ dist.javadoc.dir=${dist.dir}/javadoc
27
+ endorsed.classpath=
28
+ excludes=
29
+ file.reference.abner.jar=..\\..\\libraries\\abner.jar
30
+ file.reference.commons-lang-2.4.jar=..\\..\\libraries\\commons-lang-2.4\\commons-lang-2.4.jar
31
+ file.reference.java_utils.jar=..\\java_utils\\dist\\java_utils.jar
32
+ file.reference.sptoolkit.jar=..\\..\\libraries\\sptoolkit.jar
33
+ file.reference.stanford-postagger.jar=..\\..\\libraries\\stanford-postagger-full-2008-09-28\\stanford-postagger.jar
34
+ includes=**
35
+ jar.compress=false
36
+ javac.classpath=\
37
+ ${file.reference.java_utils.jar}:\
38
+ ${file.reference.sptoolkit.jar}:\
39
+ ${file.reference.abner.jar}:\
40
+ ${file.reference.commons-lang-2.4.jar}:\
41
+ ${file.reference.stanford-postagger.jar}
42
+ # Space-separated list of extra javac options
43
+ javac.compilerargs=
44
+ javac.deprecation=false
45
+ javac.processorpath=\
46
+ ${javac.classpath}
47
+ javac.source=1.5
48
+ javac.target=1.5
49
+ javac.test.classpath=\
50
+ ${javac.classpath}:\
51
+ ${build.classes.dir}:\
52
+ ${libs.junit.classpath}:\
53
+ ${libs.junit_4.classpath}
54
+ javac.test.processorpath=\
55
+ ${javac.test.classpath}
56
+ javadoc.additionalparam=
57
+ javadoc.author=false
58
+ javadoc.encoding=${source.encoding}
59
+ javadoc.noindex=false
60
+ javadoc.nonavbar=false
61
+ javadoc.notree=false
62
+ javadoc.private=false
63
+ javadoc.reference.commons-lang-2.4.jar=../../libraries/commons-lang-2.4/commons-lang-2.4-javadoc.jar
64
+ javadoc.splitindex=true
65
+ javadoc.use=true
66
+ javadoc.version=false
67
+ javadoc.windowtitle=
68
+ main.class=lingscope.Main
69
+ manifest.file=manifest.mf
70
+ meta.inf.dir=${src.dir}/META-INF
71
+ platform.active=default_platform
72
+ run.classpath=\
73
+ ${javac.classpath}:\
74
+ ${build.classes.dir}
75
+ # Space-separated list of JVM arguments used when running the project
76
+ # (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value
77
+ # or test-sys-prop.name=value to set system properties for unit tests):
78
+ run.jvmargs=
79
+ run.test.classpath=\
80
+ ${javac.test.classpath}:\
81
+ ${build.test.classes.dir}
82
+ source.encoding=UTF-8
83
+ source.reference.commons-lang-2.4.jar=../../libraries/commons-lang-2.4/commons-lang-2.4-sources.jar
84
+ src.dir=src
85
+ test.src.dir=test
@@ -0,0 +1,15 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project xmlns="http://www.netbeans.org/ns/project/1">
3
+ <type>org.netbeans.modules.java.j2seproject</type>
4
+ <configuration>
5
+ <data xmlns="http://www.netbeans.org/ns/j2se-project/3">
6
+ <name>lingscope</name>
7
+ <source-roots>
8
+ <root id="src.dir"/>
9
+ </source-roots>
10
+ <test-roots>
11
+ <root id="test.src.dir"/>
12
+ </test-roots>
13
+ </data>
14
+ </configuration>
15
+ </project>
Binary file
@@ -0,0 +1,49 @@
1
+ absence of
2
+ loss
3
+ lacks
4
+ fails
5
+ no
6
+ failed
7
+ absent
8
+ impossible
9
+ favored over
10
+ missing
11
+ over
12
+ rather than
13
+ fail
14
+ with the exception of
15
+ favored
16
+ none
17
+ no longer
18
+ ( not
19
+ ( no
20
+ except
21
+ may
22
+ lacked
23
+ unable
24
+ rule out
25
+ or
26
+ absence
27
+ exclude
28
+ lack
29
+ without
30
+ cannot
31
+ lacking
32
+ excluding
33
+ neither
34
+ not
35
+ failure
36
+ never
37
+ nor
38
+ either
39
+ can not
40
+ instead of
41
+ instead
42
+ could not
43
+ negative
44
+ with the notable exception of
45
+ denied
46
+ denies
47
+ allergy
48
+ allergies
49
+ allergic
@@ -0,0 +1,19 @@
1
+ absence of
2
+ may
3
+ rule out
4
+ no
5
+ exclude
6
+ lack
7
+ without
8
+ cannot
9
+ not
10
+ favored over
11
+ neither
12
+ either
13
+ over
14
+ nor
15
+ rather than
16
+ favored
17
+ none
18
+ negative
19
+ no longer
@@ -0,0 +1,58 @@
1
+ /*
2
+ * To change this template, choose Tools | Templates
3
+ * and open the template in the editor.
4
+ */
5
+
6
+ package lingscope.algorithms;
7
+
8
+ import abner.Scanner;
9
+ import java.io.StringReader;
10
+
11
+ /**
12
+ *
13
+ * @author shashank
14
+ */
15
+ public class AbnerTokenizer {
16
+ ////////////////////////////////////////////////////////////////
17
+ /**
18
+ <p>Take raw text apply ABNER's built-in tokenization on it.
19
+ */
20
+ public static String tokenize(String s) {
21
+ StringBuffer sb = new StringBuffer();
22
+ try {
23
+ Scanner scanner = new Scanner(new StringReader(s));
24
+ String t;
25
+ while ((t = scanner.nextToken()) != null) {
26
+ sb.append(t+" ");
27
+ if (t.toString().matches("[?!\\.]"))
28
+ sb.append("\n");
29
+ }
30
+ return sb.toString();
31
+ } catch (Exception e) {
32
+ System.err.println(e);
33
+ }
34
+ return sb.toString();
35
+ }
36
+
37
+ /**
38
+ * Takes an input and splits the sentence by punctuations and spaces, then
39
+ * stitches it back together with a space and returns
40
+ * @param input the input string to process
41
+ * @return processed input string, where all words and punctuations are
42
+ * seperated by space
43
+ */
44
+ public static String splitTermsByPunctuation(String input) {
45
+ if (input.isEmpty()) {
46
+ return "";
47
+ }
48
+ input = input.replaceAll("\\n", " ");
49
+ String ret = tokenize(input).trim();
50
+ if (ret.matches(".*\\w\\.$")) { // If a space is not put between the period in the end, then introduce one
51
+ ret += " .";
52
+ }
53
+ if (input.endsWith(".") && (!ret.endsWith("."))) {
54
+ ret += " .";
55
+ }
56
+ return ret;
57
+ }
58
+ }
@@ -0,0 +1,207 @@
1
+ package lingscope.algorithms;
2
+
3
+ import generalutils.Statistics;
4
+ import java.util.List;
5
+ import lingscope.io.AnnotatedSentencesIO;
6
+ import lingscope.structures.AnnotatedSentence;
7
+
8
+ /**
9
+ * Compares two annotations or two annotation files
10
+ * @author shashank
11
+ */
12
+ public class AnnotationComparer {
13
+
14
+ private double tp;
15
+ private double fp;
16
+ private double fn;
17
+ private double tn;
18
+ private double perfectMatches;
19
+ private int totalSentences;
20
+ private int numFolds;
21
+ private double[] tpFolds;
22
+ private double[] fpFolds;
23
+ private double[] fnFolds;
24
+ private double[] tnFolds;
25
+ private double[] perfectMatchesFolds;
26
+ private double[] totalSentencesFolds;
27
+
28
+ public AnnotationComparer(int numFolds) {
29
+ this.numFolds = numFolds;
30
+ reset();
31
+ }
32
+
33
+ /**
34
+ * Resets the values for the comparer
35
+ */
36
+ public final void reset() {
37
+ tp = 0;
38
+ fp = 0;
39
+ fn = 0;
40
+ tn = 0;
41
+ perfectMatches = 0;
42
+ totalSentences = 0;
43
+ tpFolds = new double[numFolds];
44
+ resetFold(tpFolds, numFolds);
45
+ fpFolds = new double[numFolds];
46
+ resetFold(fpFolds, numFolds);
47
+ fnFolds = new double[numFolds];
48
+ resetFold(fnFolds, numFolds);
49
+ tnFolds = new double[numFolds];
50
+ resetFold(tnFolds, numFolds);
51
+ perfectMatchesFolds = new double[numFolds];
52
+ resetFold(perfectMatchesFolds, numFolds);
53
+ totalSentencesFolds = new double[numFolds];
54
+ resetFold(totalSentencesFolds, numFolds);
55
+ }
56
+
57
+ private void resetFold(double[] folds, int numFolds) {
58
+ for (int i = 0; i < numFolds; ++i) {
59
+ folds[i] = 0;
60
+ }
61
+ }
62
+
63
+ public void compareAnnotationFiles(String goldFile, String testFile) {
64
+ List<AnnotatedSentence> goldSentences = AnnotatedSentencesIO.read(goldFile);
65
+ List<AnnotatedSentence> testSentences = AnnotatedSentencesIO.read(testFile);
66
+ if (goldSentences.size() != testSentences.size()) {
67
+ throw new RuntimeException("Number of sentences in gold and test file are not same");
68
+ }
69
+ for (int i = 0; i < goldSentences.size(); ++i) {
70
+ AnnotatedSentence goldSentence = goldSentences.get(i);
71
+ AnnotatedSentence testSentence = testSentences.get(i);
72
+ compareAnnotations(goldSentence, testSentence);
73
+ }
74
+ }
75
+
76
+ public void compareAnnotations(AnnotatedSentence goldSentence, AnnotatedSentence testSentence) {
77
+ int localTp = 0;
78
+ int localFp = 0;
79
+ int localFn = 0;
80
+ int localTn = 0;
81
+ if (goldSentence.getIsAnnotatedTags().size() != testSentence.getIsAnnotatedTags().size()) {
82
+ System.err.println("Size mismatch GOLD: " + goldSentence.getRawText());
83
+ System.err.println("Size mismatch TEST: " + testSentence.getRawText());
84
+ }
85
+ int numTags = Math.min(goldSentence.getIsAnnotatedTags().size(), testSentence.getIsAnnotatedTags().size());
86
+ for (int i = 0; i < numTags; ++i) {
87
+ boolean goldTag = goldSentence.getIsAnnotatedTags().get(i);
88
+ boolean testTag = testSentence.getIsAnnotatedTags().get(i);
89
+ if (goldTag && testTag) {
90
+ ++localTp;
91
+ } else if (goldTag && (!testTag)) {
92
+ ++localFn;
93
+ } else if ((!goldTag) && testTag) {
94
+ ++localFp;
95
+ } else if ((!goldTag) && (!testTag)) {
96
+ ++localTn;
97
+ }
98
+ }
99
+ int foldNum = totalSentences % numFolds;
100
+ tp += localTp;
101
+ fp += localFp;
102
+ fn += localFn;
103
+ tn += localTn;
104
+ tpFolds[foldNum] += localTp;
105
+ fpFolds[foldNum] += localFp;
106
+ fnFolds[foldNum] += localFn;
107
+ tnFolds[foldNum] += localTn;
108
+ if (localFp != 0) {
109
+ System.out.println("FP Gold: " + goldSentence.getRawText());
110
+ System.out.println("FP Test: " + testSentence.getRawText());
111
+ }
112
+ if (localFn != 0) {
113
+ System.out.println("FN Gold: " + goldSentence.getRawText());
114
+ System.out.println("FN Test: " + testSentence.getRawText());
115
+ }
116
+ if (localFp == 0 && localFn == 0) {
117
+ ++perfectMatches;
118
+ ++perfectMatchesFolds[foldNum];
119
+ }
120
+ ++totalSentences;
121
+ ++totalSentencesFolds[foldNum];
122
+ }
123
+
124
+ public void printStats() {
125
+ System.out.println("TP: " + tp);
126
+ System.out.println("FP: " + fp);
127
+ System.out.println("FN: " + fn);
128
+ System.out.println("TN: " + tn);
129
+ double precision = getPrecision(tp, fp);
130
+ double recall = getRecall(tp, fn);
131
+ System.out.println("Overall precision: " + precision);
132
+ System.out.println("Overall recall: " + recall);
133
+ System.out.println("Overall F1-score: " + getFScore(recall, precision));
134
+ System.out.println("Overall Accuracy: " + getAccuracy(tp, fp, fn, tn));
135
+ System.out.println("Overall Perfect : " + getPerfectAccuracy(perfectMatches, totalSentences));
136
+ double[] recalls = getRecalls();
137
+ double[] precisions = getPrecisions();
138
+ double[] fScores = getFScores(recalls, precisions);
139
+ double[] accuracies = getAccuracies();
140
+ double[] perfectAccuracies = getPerfectAccuracies();
141
+ System.out.println("Average precision: " + Statistics.mean(precisions) + " +/- " + Statistics.stdDev(precisions));
142
+ System.out.println("Average recall: " + Statistics.mean(recalls) + " +/- " + Statistics.stdDev(recalls));
143
+ System.out.println("Average F1-score: " + Statistics.mean(fScores) + " +/- " + Statistics.stdDev(fScores));
144
+ System.out.println("Average Accuracy: " + Statistics.mean(accuracies) + " +/- " + Statistics.stdDev(accuracies));
145
+ System.out.println("Average Perfect: " + Statistics.mean(perfectAccuracies) + " +/- " + Statistics.stdDev(perfectAccuracies));
146
+ }
147
+
148
+ public double[] getRecalls() {
149
+ double[] recalls = new double[numFolds];
150
+ for (int i = 0; i < numFolds; ++i) {
151
+ recalls[i] = getRecall(tpFolds[i], fnFolds[i]);
152
+ }
153
+ return recalls;
154
+ }
155
+
156
+ public double[] getPrecisions() {
157
+ double[] precisions = new double[numFolds];
158
+ for (int i = 0; i < numFolds; ++i) {
159
+ precisions[i] = getPrecision(tpFolds[i], fpFolds[i]);
160
+ }
161
+ return precisions;
162
+ }
163
+
164
+ public double[] getFScores(double[] recalls, double[] precisions) {
165
+ double[] fScores = new double[numFolds];
166
+ for (int i = 0; i < numFolds; ++i) {
167
+ fScores[i] = getFScore(recalls[i], precisions[i]);
168
+ }
169
+ return fScores;
170
+ }
171
+
172
+ public double[] getAccuracies() {
173
+ double[] accuracies = new double[numFolds];
174
+ for (int i = 0; i < numFolds; ++i) {
175
+ accuracies[i] = getAccuracy(tpFolds[i], fpFolds[i], fnFolds[i], tnFolds[i]);
176
+ }
177
+ return accuracies;
178
+ }
179
+
180
+ public double[] getPerfectAccuracies() {
181
+ double[] pcss = new double[numFolds];
182
+ for (int i = 0; i < numFolds; ++i) {
183
+ pcss[i] = getPerfectAccuracy(perfectMatchesFolds[i], totalSentencesFolds[i]);
184
+ }
185
+ return pcss;
186
+ }
187
+
188
+ public double getPerfectAccuracy(double trues, double total) {
189
+ return trues / total;
190
+ }
191
+
192
+ public double getAccuracy(double tp, double fp, double fn, double tn) {
193
+ return (tp + tn) / (tp + fp + fn + tn);
194
+ }
195
+
196
+ public double getRecall(double tp, double fn) {
197
+ return tp / (tp + fn);
198
+ }
199
+
200
+ public double getPrecision(double tp, double fp) {
201
+ return tp / (tp + fp);
202
+ }
203
+
204
+ public double getFScore(double recall, double precision) {
205
+ return 2 * precision * recall / (recall + precision);
206
+ }
207
+ }