nlptoolkit-annotatedtree 1.0.3 → 1.0.5

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 (205) hide show
  1. package/README.md +1 -1
  2. package/dist/Layer/DependencyLayer.d.ts +4 -0
  3. package/dist/Layer/DependencyLayer.js +4 -0
  4. package/dist/Layer/DependencyLayer.js.map +1 -1
  5. package/dist/Layer/EnglishPropbankLayer.d.ts +9 -0
  6. package/dist/Layer/EnglishPropbankLayer.js +9 -0
  7. package/dist/Layer/EnglishPropbankLayer.js.map +1 -1
  8. package/dist/Layer/EnglishSemanticLayer.d.ts +5 -0
  9. package/dist/Layer/EnglishSemanticLayer.js +5 -0
  10. package/dist/Layer/EnglishSemanticLayer.js.map +1 -1
  11. package/dist/Layer/EnglishWordLayer.d.ts +4 -0
  12. package/dist/Layer/EnglishWordLayer.js +4 -0
  13. package/dist/Layer/EnglishWordLayer.js.map +1 -1
  14. package/dist/Layer/MetaMorphemeLayer.d.ts +19 -0
  15. package/dist/Layer/MetaMorphemeLayer.js +19 -0
  16. package/dist/Layer/MetaMorphemeLayer.js.map +1 -1
  17. package/dist/Layer/MetaMorphemesMovedLayer.d.ts +20 -0
  18. package/dist/Layer/MetaMorphemesMovedLayer.js +20 -0
  19. package/dist/Layer/MetaMorphemesMovedLayer.js.map +1 -1
  20. package/dist/Layer/MorphologicalAnalysisLayer.d.ts +32 -0
  21. package/dist/Layer/MorphologicalAnalysisLayer.js +32 -0
  22. package/dist/Layer/MorphologicalAnalysisLayer.js.map +1 -1
  23. package/dist/Layer/MultiWordLayer.d.ts +9 -0
  24. package/dist/Layer/MultiWordLayer.js +9 -0
  25. package/dist/Layer/MultiWordLayer.js.map +1 -1
  26. package/dist/Layer/NERLayer.d.ts +14 -0
  27. package/dist/Layer/NERLayer.js +14 -0
  28. package/dist/Layer/NERLayer.js.map +1 -1
  29. package/dist/Layer/PersianWordLayer.d.ts +4 -0
  30. package/dist/Layer/PersianWordLayer.js +4 -0
  31. package/dist/Layer/PersianWordLayer.js.map +1 -1
  32. package/dist/Layer/ShallowParseLayer.d.ts +11 -0
  33. package/dist/Layer/ShallowParseLayer.js +11 -0
  34. package/dist/Layer/ShallowParseLayer.js.map +1 -1
  35. package/dist/Layer/SingleWordLayer.d.ts +4 -0
  36. package/dist/Layer/SingleWordLayer.js +4 -0
  37. package/dist/Layer/SingleWordLayer.js.map +1 -1
  38. package/dist/Layer/SourceLanguageWordLayer.d.ts +4 -0
  39. package/dist/Layer/SourceLanguageWordLayer.js +4 -0
  40. package/dist/Layer/SourceLanguageWordLayer.js.map +1 -1
  41. package/dist/Layer/TargetLanguageWordLayer.d.ts +10 -1
  42. package/dist/Layer/TargetLanguageWordLayer.js +9 -0
  43. package/dist/Layer/TargetLanguageWordLayer.js.map +1 -1
  44. package/dist/Layer/TurkishPropbankLayer.d.ts +18 -0
  45. package/dist/Layer/TurkishPropbankLayer.js +18 -0
  46. package/dist/Layer/TurkishPropbankLayer.js.map +1 -1
  47. package/dist/Layer/TurkishSemanticLayer.d.ts +11 -0
  48. package/dist/Layer/TurkishSemanticLayer.js +11 -0
  49. package/dist/Layer/TurkishSemanticLayer.js.map +1 -1
  50. package/dist/Layer/TurkishWordLayer.d.ts +4 -0
  51. package/dist/Layer/TurkishWordLayer.js +4 -0
  52. package/dist/Layer/TurkishWordLayer.js.map +1 -1
  53. package/dist/Layer/WordLayer.d.ts +12 -0
  54. package/dist/Layer/WordLayer.js +12 -0
  55. package/dist/Layer/WordLayer.js.map +1 -1
  56. package/dist/LayerInfo.d.ts +188 -0
  57. package/dist/LayerInfo.js +229 -63
  58. package/dist/LayerInfo.js.map +1 -1
  59. package/dist/ParseNodeDrawable.d.ts +102 -0
  60. package/dist/ParseNodeDrawable.js +102 -0
  61. package/dist/ParseNodeDrawable.js.map +1 -1
  62. package/dist/ParseTreeDrawable.d.ts +134 -0
  63. package/dist/ParseTreeDrawable.js +153 -16
  64. package/dist/ParseTreeDrawable.js.map +1 -1
  65. package/dist/Processor/Condition/IsDoubleNode.d.ts +6 -0
  66. package/dist/Processor/Condition/IsDoubleNode.js +6 -0
  67. package/dist/Processor/Condition/IsDoubleNode.js.map +1 -1
  68. package/dist/Processor/Condition/IsDoubleNodeWithDifferentTags.d.ts +6 -0
  69. package/dist/Processor/Condition/IsDoubleNodeWithDifferentTags.js +6 -0
  70. package/dist/Processor/Condition/IsDoubleNodeWithDifferentTags.js.map +1 -1
  71. package/dist/Processor/Condition/IsEnglishLeafNode.d.ts +5 -0
  72. package/dist/Processor/Condition/IsEnglishLeafNode.js +5 -0
  73. package/dist/Processor/Condition/IsEnglishLeafNode.js.map +1 -1
  74. package/dist/Processor/Condition/IsLeafNode.d.ts +5 -0
  75. package/dist/Processor/Condition/IsLeafNode.js +5 -0
  76. package/dist/Processor/Condition/IsLeafNode.js.map +1 -1
  77. package/dist/Processor/Condition/IsNodeWithPredicate.d.ts +11 -0
  78. package/dist/Processor/Condition/IsNodeWithPredicate.js +11 -0
  79. package/dist/Processor/Condition/IsNodeWithPredicate.js.map +1 -1
  80. package/dist/Processor/Condition/IsNodeWithSymbol.d.ts +9 -0
  81. package/dist/Processor/Condition/IsNodeWithSymbol.js +9 -0
  82. package/dist/Processor/Condition/IsNodeWithSymbol.js.map +1 -1
  83. package/dist/Processor/Condition/IsNodeWithSynSetId.d.ts +9 -0
  84. package/dist/Processor/Condition/IsNodeWithSynSetId.js +9 -0
  85. package/dist/Processor/Condition/IsNodeWithSynSetId.js.map +1 -1
  86. package/dist/Processor/Condition/IsNoneNode.d.ts +5 -0
  87. package/dist/Processor/Condition/IsNoneNode.js +5 -0
  88. package/dist/Processor/Condition/IsNoneNode.js.map +1 -1
  89. package/dist/Processor/Condition/IsNullElement.d.ts +6 -0
  90. package/dist/Processor/Condition/IsNullElement.js +6 -0
  91. package/dist/Processor/Condition/IsNullElement.js.map +1 -1
  92. package/dist/Processor/Condition/IsNumber.d.ts +6 -0
  93. package/dist/Processor/Condition/IsNumber.js +6 -0
  94. package/dist/Processor/Condition/IsNumber.js.map +1 -1
  95. package/dist/Processor/Condition/IsPredicateVerbNode.d.ts +11 -0
  96. package/dist/Processor/Condition/IsPredicateVerbNode.js +11 -0
  97. package/dist/Processor/Condition/IsPredicateVerbNode.js.map +1 -1
  98. package/dist/Processor/Condition/IsProperNoun.d.ts +5 -0
  99. package/dist/Processor/Condition/IsProperNoun.js +5 -0
  100. package/dist/Processor/Condition/IsProperNoun.js.map +1 -1
  101. package/dist/Processor/Condition/IsPunctuationNode.d.ts +5 -0
  102. package/dist/Processor/Condition/IsPunctuationNode.js +5 -0
  103. package/dist/Processor/Condition/IsPunctuationNode.js.map +1 -1
  104. package/dist/Processor/Condition/IsTransferable.d.ts +5 -0
  105. package/dist/Processor/Condition/IsTransferable.js +5 -0
  106. package/dist/Processor/Condition/IsTransferable.js.map +1 -1
  107. package/dist/Processor/Condition/IsTurkishLeafNode.d.ts +5 -0
  108. package/dist/Processor/Condition/IsTurkishLeafNode.js +5 -0
  109. package/dist/Processor/Condition/IsTurkishLeafNode.js.map +1 -1
  110. package/dist/Processor/Condition/IsVPNode.d.ts +5 -0
  111. package/dist/Processor/Condition/IsVPNode.js +5 -0
  112. package/dist/Processor/Condition/IsVPNode.js.map +1 -1
  113. package/dist/Processor/Condition/IsVerbNode.d.ts +10 -0
  114. package/dist/Processor/Condition/IsVerbNode.js +10 -0
  115. package/dist/Processor/Condition/IsVerbNode.js.map +1 -1
  116. package/dist/Processor/LayerExist/ContainsLayerInformation.d.ts +9 -0
  117. package/dist/Processor/LayerExist/ContainsLayerInformation.js +9 -0
  118. package/dist/Processor/LayerExist/ContainsLayerInformation.js.map +1 -1
  119. package/dist/Processor/LayerExist/NotContainsLayerInformation.d.ts +9 -0
  120. package/dist/Processor/LayerExist/NotContainsLayerInformation.js +9 -0
  121. package/dist/Processor/LayerExist/NotContainsLayerInformation.js.map +1 -1
  122. package/dist/Processor/LayerExist/SemiContainsLayerInformation.d.ts +10 -0
  123. package/dist/Processor/LayerExist/SemiContainsLayerInformation.js +10 -0
  124. package/dist/Processor/LayerExist/SemiContainsLayerInformation.js.map +1 -1
  125. package/dist/Processor/LeafConverter/LeafToEnglish.d.ts +3 -0
  126. package/dist/Processor/LeafConverter/LeafToEnglish.js +3 -0
  127. package/dist/Processor/LeafConverter/LeafToEnglish.js.map +1 -1
  128. package/dist/Processor/LeafConverter/LeafToLanguageConverter.d.ts +7 -0
  129. package/dist/Processor/LeafConverter/LeafToLanguageConverter.js +7 -0
  130. package/dist/Processor/LeafConverter/LeafToLanguageConverter.js.map +1 -1
  131. package/dist/Processor/LeafConverter/LeafToPersian.d.ts +3 -0
  132. package/dist/Processor/LeafConverter/LeafToPersian.js +3 -0
  133. package/dist/Processor/LeafConverter/LeafToPersian.js.map +1 -1
  134. package/dist/Processor/LeafConverter/LeafToRootFormConverter.d.ts +7 -0
  135. package/dist/Processor/LeafConverter/LeafToRootFormConverter.js +7 -0
  136. package/dist/Processor/LeafConverter/LeafToRootFormConverter.js.map +1 -1
  137. package/dist/Processor/LeafConverter/LeafToTurkish.d.ts +3 -0
  138. package/dist/Processor/LeafConverter/LeafToTurkish.js +3 -0
  139. package/dist/Processor/LeafConverter/LeafToTurkish.js.map +1 -1
  140. package/dist/Processor/NodeDrawableCollector.d.ts +16 -0
  141. package/dist/Processor/NodeDrawableCollector.js +16 -0
  142. package/dist/Processor/NodeDrawableCollector.js.map +1 -1
  143. package/dist/Processor/TreeToStringConverter.d.ts +15 -0
  144. package/dist/Processor/TreeToStringConverter.js +15 -0
  145. package/dist/Processor/TreeToStringConverter.js.map +1 -1
  146. package/dist/TreeBankDrawable.d.ts +20 -0
  147. package/dist/TreeBankDrawable.js +20 -0
  148. package/dist/TreeBankDrawable.js.map +1 -1
  149. package/dist/index.d.ts +58 -0
  150. package/dist/index.js +81 -0
  151. package/dist/index.js.map +1 -0
  152. package/package.json +14 -14
  153. package/source/Layer/DependencyLayer.ts +4 -0
  154. package/source/Layer/EnglishPropbankLayer.ts +9 -0
  155. package/source/Layer/EnglishSemanticLayer.ts +5 -0
  156. package/source/Layer/EnglishWordLayer.ts +4 -0
  157. package/source/Layer/MetaMorphemeLayer.ts +19 -0
  158. package/source/Layer/MetaMorphemesMovedLayer.ts +20 -0
  159. package/source/Layer/MorphologicalAnalysisLayer.ts +32 -0
  160. package/source/Layer/MultiWordLayer.ts +9 -0
  161. package/source/Layer/NERLayer.ts +14 -0
  162. package/source/Layer/PersianWordLayer.ts +4 -0
  163. package/source/Layer/ShallowParseLayer.ts +11 -0
  164. package/source/Layer/SingleWordLayer.ts +4 -0
  165. package/source/Layer/SourceLanguageWordLayer.ts +4 -0
  166. package/source/Layer/TargetLanguageWordLayer.ts +10 -1
  167. package/source/Layer/TurkishPropbankLayer.ts +18 -0
  168. package/source/Layer/TurkishSemanticLayer.ts +11 -0
  169. package/source/Layer/TurkishWordLayer.ts +4 -0
  170. package/source/Layer/WordLayer.ts +12 -0
  171. package/source/LayerInfo.ts +333 -155
  172. package/source/ParseNodeDrawable.ts +102 -0
  173. package/source/ParseTreeDrawable.ts +158 -16
  174. package/source/Processor/Condition/IsDoubleNode.ts +6 -0
  175. package/source/Processor/Condition/IsDoubleNodeWithDifferentTags.ts +6 -0
  176. package/source/Processor/Condition/IsEnglishLeafNode.ts +5 -0
  177. package/source/Processor/Condition/IsLeafNode.ts +5 -0
  178. package/source/Processor/Condition/IsNodeWithPredicate.ts +11 -0
  179. package/source/Processor/Condition/IsNodeWithSymbol.ts +9 -0
  180. package/source/Processor/Condition/IsNodeWithSynSetId.ts +9 -0
  181. package/source/Processor/Condition/IsNoneNode.ts +5 -0
  182. package/source/Processor/Condition/IsNullElement.ts +6 -0
  183. package/source/Processor/Condition/IsNumber.ts +6 -0
  184. package/source/Processor/Condition/IsPredicateVerbNode.ts +11 -0
  185. package/source/Processor/Condition/IsProperNoun.ts +5 -0
  186. package/source/Processor/Condition/IsPunctuationNode.ts +5 -0
  187. package/source/Processor/Condition/IsTransferable.ts +5 -0
  188. package/source/Processor/Condition/IsTurkishLeafNode.ts +5 -0
  189. package/source/Processor/Condition/IsVPNode.ts +5 -0
  190. package/source/Processor/Condition/IsVerbNode.ts +10 -0
  191. package/source/Processor/LayerExist/ContainsLayerInformation.ts +9 -0
  192. package/source/Processor/LayerExist/NotContainsLayerInformation.ts +9 -0
  193. package/source/Processor/LayerExist/SemiContainsLayerInformation.ts +10 -0
  194. package/source/Processor/LeafConverter/LeafToEnglish.ts +3 -0
  195. package/source/Processor/LeafConverter/LeafToLanguageConverter.ts +7 -0
  196. package/source/Processor/LeafConverter/LeafToPersian.ts +3 -0
  197. package/source/Processor/LeafConverter/LeafToRootFormConverter.ts +7 -0
  198. package/source/Processor/LeafConverter/LeafToTurkish.ts +3 -0
  199. package/source/Processor/NodeDrawableCollector.ts +16 -0
  200. package/source/Processor/TreeToStringConverter.ts +15 -0
  201. package/source/TreeBankDrawable.ts +20 -0
  202. package/source/index.ts +58 -0
  203. package/source/tsconfig.json +1 -1
  204. package/tsconfig.json +1 -2
  205. package/index.js +0 -58
@@ -25,71 +25,76 @@ export class LayerInfo {
25
25
 
26
26
  private layers: Map<ViewLayerType, WordLayer> = new Map<ViewLayerType, WordLayer>()
27
27
 
28
+ /**
29
+ * Constructs the layer information from the given string. Layers are represented as
30
+ * {layername1=layervalue1}{layername2=layervalue2}...{layernamek=layervaluek} where layer name is one of the
31
+ * following: turkish, persian, english, morphologicalAnalysis, metaMorphemes, metaMorphemesMoved, dependency,
32
+ * semantics, namedEntity, propBank, englishPropbank, englishSemantics, shallowParse. Splits the string w.r.t.
33
+ * parentheses and constructs layer objects and put them layers map accordingly.
34
+ * @param info Line consisting of layer info.
35
+ */
28
36
  constructor(info?: string) {
29
37
  let splitLayers = info.split(/[{}]/);
30
- for (let layer of splitLayers){
31
- if (layer == ""){
38
+ for (let layer of splitLayers) {
39
+ if (layer == "") {
32
40
  continue;
33
41
  }
34
42
  let layerType = layer.substring(0, layer.indexOf("="));
35
43
  let layerValue = layer.substring(layer.indexOf("=") + 1);
36
- if (layerType == "turkish"){
37
- this.layers.set(ViewLayerType.TURKISH_WORD, new TurkishWordLayer(layerValue));
38
- } else {
39
- if (layerType == "persian"){
44
+ switch (layerType) {
45
+ case "turkish":
46
+ this.layers.set(ViewLayerType.TURKISH_WORD, new TurkishWordLayer(layerValue));
47
+ break;
48
+ case "persian":
40
49
  this.layers.set(ViewLayerType.PERSIAN_WORD, new PersianWordLayer(layerValue));
41
- } else {
42
- if (layerType == "english"){
43
- this.layers.set(ViewLayerType.ENGLISH_WORD, new EnglishWordLayer(layerValue));
44
- } else {
45
- if (layerType == "morphologicalAnalysis"){
46
- this.layers.set(ViewLayerType.INFLECTIONAL_GROUP, new MorphologicalAnalysisLayer(layerValue));
47
- this.layers.set(ViewLayerType.PART_OF_SPEECH, new MorphologicalAnalysisLayer(layerValue));
48
- } else {
49
- if (layerType == "metaMorphemes"){
50
- this.layers.set(ViewLayerType.META_MORPHEME, new MetaMorphemeLayer(layerValue));
51
- } else {
52
- if (layerType == "metaMorphemesMoved"){
53
- this.layers.set(ViewLayerType.META_MORPHEME_MOVED, new MetaMorphemesMovedLayer(layerValue));
54
- } else {
55
- if (layerType == "dependency"){
56
- this.layers.set(ViewLayerType.DEPENDENCY, new DependencyLayer(layerValue));
57
- } else {
58
- if (layerType == "semantics"){
59
- this.layers.set(ViewLayerType.SEMANTICS, new TurkishSemanticLayer(layerValue));
60
- } else {
61
- if (layerType == "namedEntity"){
62
- this.layers.set(ViewLayerType.NER, new NERLayer(layerValue));
63
- } else {
64
- if (layerType == "propBank"){
65
- this.layers.set(ViewLayerType.PROPBANK, new TurkishPropbankLayer(layerValue));
66
- } else {
67
- if (layerType == "englishPropbank"){
68
- this.layers.set(ViewLayerType.ENGLISH_PROPBANK, new EnglishPropbankLayer(layerValue));
69
- } else {
70
- if (layerType == "englishSemantics"){
71
- this.layers.set(ViewLayerType.ENGLISH_SEMANTICS, new EnglishSemanticLayer(layerValue));
72
- } else {
73
- if (layerType == "shallowParse"){
74
- this.layers.set(ViewLayerType.SHALLOW_PARSE, new ShallowParseLayer(layerValue));
75
- }
76
- }
77
- }
78
- }
79
- }
80
- }
81
- }
82
- }
83
- }
84
- }
85
- }
86
- }
50
+ break;
51
+ case "english":
52
+ this.layers.set(ViewLayerType.ENGLISH_WORD, new EnglishWordLayer(layerValue));
53
+ break;
54
+ case "morphologicalAnalysis":
55
+ this.layers.set(ViewLayerType.INFLECTIONAL_GROUP, new MorphologicalAnalysisLayer(layerValue));
56
+ this.layers.set(ViewLayerType.PART_OF_SPEECH, new MorphologicalAnalysisLayer(layerValue));
57
+ break;
58
+ case "metaMorphemes":
59
+ this.layers.set(ViewLayerType.META_MORPHEME, new MetaMorphemeLayer(layerValue));
60
+ break;
61
+ case "metaMorphemesMoved":
62
+ this.layers.set(ViewLayerType.META_MORPHEME_MOVED, new MetaMorphemesMovedLayer(layerValue));
63
+ break;
64
+ case "dependency":
65
+ this.layers.set(ViewLayerType.DEPENDENCY, new DependencyLayer(layerValue));
66
+ break;
67
+ case "semantics":
68
+ this.layers.set(ViewLayerType.SEMANTICS, new TurkishSemanticLayer(layerValue));
69
+ break;
70
+ case "namedEntity":
71
+ this.layers.set(ViewLayerType.NER, new NERLayer(layerValue));
72
+ break;
73
+ case "propBank":
74
+ this.layers.set(ViewLayerType.PROPBANK, new TurkishPropbankLayer(layerValue));
75
+ break;
76
+ case "englishPropbank":
77
+ this.layers.set(ViewLayerType.ENGLISH_PROPBANK, new EnglishPropbankLayer(layerValue));
78
+ break;
79
+ case "englishSemantics":
80
+ this.layers.set(ViewLayerType.ENGLISH_SEMANTICS, new EnglishSemanticLayer(layerValue));
81
+ break;
82
+ case "shallowParse":
83
+ this.layers.set(ViewLayerType.SHALLOW_PARSE, new ShallowParseLayer(layerValue));
84
+ break;
87
85
  }
88
86
  }
89
87
  }
90
88
 
91
- setLayerData(viewLayer: ViewLayerType, layerValue: string){
92
- switch (viewLayer){
89
+ /**
90
+ * Changes the given layer info with the given string layer value. For all layers new layer object is created and
91
+ * replaces the original object. For turkish layer, it also destroys inflectional_group, part_of_speech,
92
+ * meta_morpheme, meta_morpheme_moved and semantics layers. For persian layer, it also destroys the semantics layer.
93
+ * @param viewLayer Layer name.
94
+ * @param layerValue New layer value.
95
+ */
96
+ setLayerData(viewLayer: ViewLayerType, layerValue: string) {
97
+ switch (viewLayer) {
93
98
  case ViewLayerType.PERSIAN_WORD:
94
99
  this.layers.set(ViewLayerType.PERSIAN_WORD, new PersianWordLayer(layerValue));
95
100
  this.layers.delete(ViewLayerType.SEMANTICS);
@@ -141,25 +146,49 @@ export class LayerInfo {
141
146
  }
142
147
  }
143
148
 
144
- setMorphologicalAnalysis(parse: MorphologicalParse){
149
+ /**
150
+ * Updates the inflectional_group and part_of_speech layers according to the given parse.
151
+ * @param parse New parse to update layers.
152
+ */
153
+ setMorphologicalAnalysis(parse: MorphologicalParse) {
145
154
  this.layers.set(ViewLayerType.INFLECTIONAL_GROUP, new MorphologicalAnalysisLayer(parse.toString()));
146
155
  this.layers.set(ViewLayerType.PART_OF_SPEECH, new MorphologicalAnalysisLayer(parse.toString()));
147
156
  }
148
157
 
149
- setMetaMorphemes(parse: MetamorphicParse){
158
+ /**
159
+ * Updates the metamorpheme layer according to the given parse.
160
+ * @param parse NEw parse to update layer.
161
+ */
162
+ setMetaMorphemes(parse: MetamorphicParse) {
150
163
  this.layers.set(ViewLayerType.META_MORPHEME, new MetaMorphemeLayer(parse.toString()));
151
164
  }
152
165
 
153
- layerExists(viewLayerType: ViewLayerType): boolean{
166
+ /**
167
+ * Checks if the given layer exists.
168
+ * @param viewLayerType Layer name
169
+ * @return True if the layer exists, false otherwise.
170
+ */
171
+ layerExists(viewLayerType: ViewLayerType): boolean {
154
172
  return this.layers.has(viewLayerType)
155
173
  }
156
174
 
157
- checkLayer(viewLayer: ViewLayerType): ViewLayerType{
158
- switch (viewLayer){
175
+ /**
176
+ * Two level layer check method. For turkish, persian and english_semantics layers, if the layer does not exist,
177
+ * returns english layer. For part_of_speech, inflectional_group, meta_morpheme, semantics, propbank, shallow_parse,
178
+ * english_propbank layers, if the layer does not exist, it checks turkish layer. For meta_morpheme_moved, if the
179
+ * layer does not exist, it checks meta_morpheme layer.
180
+ * @param viewLayer Layer to be checked.
181
+ * @return Returns the original layer if the layer exists. For turkish, persian and english_semantics layers, if the
182
+ * layer does not exist, returns english layer. For part_of_speech, inflectional_group, meta_morpheme, semantics,
183
+ * propbank, shallow_parse, english_propbank layers, if the layer does not exist, it checks turkish layer
184
+ * recursively. For meta_morpheme_moved, if the layer does not exist, it checks meta_morpheme layer recursively.
185
+ */
186
+ checkLayer(viewLayer: ViewLayerType): ViewLayerType {
187
+ switch (viewLayer) {
159
188
  case ViewLayerType.TURKISH_WORD:
160
189
  case ViewLayerType.PERSIAN_WORD:
161
190
  case ViewLayerType.ENGLISH_SEMANTICS:
162
- if (!this.layers.has(viewLayer)){
191
+ if (!this.layers.has(viewLayer)) {
163
192
  return ViewLayerType.ENGLISH_WORD;
164
193
  }
165
194
  case ViewLayerType.PART_OF_SPEECH:
@@ -181,24 +210,35 @@ export class LayerInfo {
181
210
  return viewLayer;
182
211
  }
183
212
 
184
- getNumberOfWords(): number{
185
- if (this.layers.has(ViewLayerType.TURKISH_WORD)){
186
- return (<TurkishWordLayer> this.layers.get(ViewLayerType.TURKISH_WORD)).size();
213
+ /**
214
+ * Returns number of words in the Turkish or Persian layer, whichever exists.
215
+ * @return Number of words in the Turkish or Persian layer, whichever exists.
216
+ */
217
+ getNumberOfWords(): number {
218
+ if (this.layers.has(ViewLayerType.TURKISH_WORD)) {
219
+ return (<TurkishWordLayer>this.layers.get(ViewLayerType.TURKISH_WORD)).size();
187
220
  } else {
188
- if (this.layers.has(ViewLayerType.PERSIAN_WORD)){
189
- return (<PersianWordLayer> this.layers.get(ViewLayerType.PERSIAN_WORD)).size();
221
+ if (this.layers.has(ViewLayerType.PERSIAN_WORD)) {
222
+ return (<PersianWordLayer>this.layers.get(ViewLayerType.PERSIAN_WORD)).size();
190
223
  }
191
224
  }
192
225
  }
193
226
 
194
- private getMultiWordAt(viewLayerType: ViewLayerType, index: number, layerName: string): string{
195
- if (this.layers.has(viewLayerType)){
196
- if (this.layers.get(viewLayerType) instanceof MultiWordLayer){
197
- let multiWordLayer = <MultiWordLayer<string>> this.layers.get(viewLayerType);
198
- if (index < multiWordLayer.size() && index >= 0){
227
+ /**
228
+ * Returns the layer value at the given index.
229
+ * @param viewLayerType Layer for which the value at the given word index will be returned.
230
+ * @param index Word Position of the layer value.
231
+ * @param layerName Name of the layer.
232
+ * @return Layer info at word position index for a multiword layer.
233
+ */
234
+ private getMultiWordAt(viewLayerType: ViewLayerType, index: number, layerName: string): string {
235
+ if (this.layers.has(viewLayerType)) {
236
+ if (this.layers.get(viewLayerType) instanceof MultiWordLayer) {
237
+ let multiWordLayer = <MultiWordLayer<string>>this.layers.get(viewLayerType);
238
+ if (index < multiWordLayer.size() && index >= 0) {
199
239
  return multiWordLayer.getItemAt(index);
200
240
  } else {
201
- if (viewLayerType == ViewLayerType.SEMANTICS){
241
+ if (viewLayerType == ViewLayerType.SEMANTICS) {
202
242
  return multiWordLayer.getItemAt(multiWordLayer.size() - 1);
203
243
  }
204
244
  }
@@ -206,30 +246,59 @@ export class LayerInfo {
206
246
  }
207
247
  }
208
248
 
209
- getTurkishWordAt(index: number): string{
249
+ /**
250
+ * Layers may contain multiple Turkish words. This method returns the Turkish word at position index.
251
+ * @param index Position of the Turkish word.
252
+ * @return The Turkish word at position index.
253
+ */
254
+ getTurkishWordAt(index: number): string {
210
255
  return this.getMultiWordAt(ViewLayerType.TURKISH_WORD, index, "turkish");
211
256
  }
212
257
 
213
- getNumberOfMeanings(): number{
214
- if (this.layers.has(ViewLayerType.SEMANTICS)){
215
- return (<TurkishSemanticLayer> this.layers.get(ViewLayerType.SEMANTICS)).size();
258
+ /**
259
+ * Returns number of meanings in the Turkish layer.
260
+ * @return Number of meanings in the Turkish layer.
261
+ */
262
+ getNumberOfMeanings(): number {
263
+ if (this.layers.has(ViewLayerType.SEMANTICS)) {
264
+ return (<TurkishSemanticLayer>this.layers.get(ViewLayerType.SEMANTICS)).size();
216
265
  } else {
217
266
  return 0;
218
267
  }
219
268
  }
220
269
 
221
- getSemanticAt(index: number): string{
270
+ /**
271
+ * Layers may contain multiple semantic information corresponding to multiple Turkish words. This method returns
272
+ * the sense id at position index.
273
+ * @param index Position of the Turkish word.
274
+ * @throws LayerNotExistsException If the layer does not exist, it throws LayerNotExistsException.
275
+ * @throws WordNotExistsException If the index is out of bounds, it throws WordNotExistsException.
276
+ * @return The Turkish sense id at position index.
277
+ */
278
+ getSemanticAt(index: number): string {
222
279
  return this.getMultiWordAt(ViewLayerType.SEMANTICS, index, "semantics");
223
280
  }
224
281
 
225
- getShallowParseAt(index: number): string{
282
+ /**
283
+ * Layers may contain multiple shallow parse information corresponding to multiple Turkish words. This method
284
+ * returns the shallow parse tag at position index.
285
+ * @param index Position of the Turkish word.
286
+ * @throws LayerNotExistsException If the layer does not exist, it throws LayerNotExistsException.
287
+ * @throws WordNotExistsException If the index is out of bounds, it throws WordNotExistsException.
288
+ * @return The shallow parse tag at position index.
289
+ */
290
+ getShallowParseAt(index: number): string {
226
291
  return this.getMultiWordAt(ViewLayerType.SHALLOW_PARSE, index, "shallowParse");
227
292
  }
228
293
 
229
- getArgument(): Argument{
230
- if (this.layers.has(ViewLayerType.PROPBANK)){
231
- if (this.layers.get(ViewLayerType.PROPBANK) instanceof TurkishPropbankLayer){
232
- let argumentLayer = <TurkishPropbankLayer> this.layers.get(ViewLayerType.PROPBANK);
294
+ /**
295
+ * Returns the Turkish PropBank argument info.
296
+ * @return Turkish PropBank argument info.
297
+ */
298
+ getArgument(): Argument {
299
+ if (this.layers.has(ViewLayerType.PROPBANK)) {
300
+ if (this.layers.get(ViewLayerType.PROPBANK) instanceof TurkishPropbankLayer) {
301
+ let argumentLayer = <TurkishPropbankLayer>this.layers.get(ViewLayerType.PROPBANK);
233
302
  return argumentLayer.getArgument();
234
303
  } else {
235
304
  return null;
@@ -239,77 +308,117 @@ export class LayerInfo {
239
308
  }
240
309
  }
241
310
 
242
- getArgumentAt(index: number): Argument{
243
- if (this.layers.has(ViewLayerType.ENGLISH_PROPBANK)){
244
- if (this.layers.get(ViewLayerType.ENGLISH_PROPBANK) instanceof SingleWordMultiItemLayer){
245
- let multiArgumentLayer = <SingleWordMultiItemLayer<Argument>> this.layers.get(ViewLayerType.ENGLISH_PROPBANK);
311
+ /**
312
+ * A word may have multiple English propbank info. This method returns the English PropBank argument info at
313
+ * position index.
314
+ * @return English PropBank argument info at position index.
315
+ */
316
+ getArgumentAt(index: number): Argument {
317
+ if (this.layers.has(ViewLayerType.ENGLISH_PROPBANK)) {
318
+ if (this.layers.get(ViewLayerType.ENGLISH_PROPBANK) instanceof SingleWordMultiItemLayer) {
319
+ let multiArgumentLayer = <SingleWordMultiItemLayer<Argument>>this.layers.get(ViewLayerType.ENGLISH_PROPBANK);
246
320
  return multiArgumentLayer.getItemAt(index);
247
321
  }
248
322
  }
249
323
  }
250
324
 
251
- getMorphologicalParseAt(index: number): MorphologicalParse{
252
- if (this.layers.has(ViewLayerType.INFLECTIONAL_GROUP)){
253
- if (this.layers.get(ViewLayerType.INFLECTIONAL_GROUP) instanceof MultiWordLayer){
254
- let multiWordLayer = <MultiWordLayer<MorphologicalParse>> this.layers.get(ViewLayerType.INFLECTIONAL_GROUP);
255
- if (index < multiWordLayer.size() && index >= 0){
325
+ /**
326
+ * Layers may contain multiple morphological parse information corresponding to multiple Turkish words. This method
327
+ * returns the morphological parse at position index.
328
+ * @param index Position of the Turkish word.
329
+ * @return The morphological parse at position index.
330
+ */
331
+ getMorphologicalParseAt(index: number): MorphologicalParse {
332
+ if (this.layers.has(ViewLayerType.INFLECTIONAL_GROUP)) {
333
+ if (this.layers.get(ViewLayerType.INFLECTIONAL_GROUP) instanceof MultiWordLayer) {
334
+ let multiWordLayer = <MultiWordLayer<MorphologicalParse>>this.layers.get(ViewLayerType.INFLECTIONAL_GROUP);
335
+ if (index < multiWordLayer.size() && index >= 0) {
256
336
  return multiWordLayer.getItemAt(index);
257
337
  }
258
338
  }
259
339
  }
260
340
  }
261
341
 
262
- getMetamorphicParseAt(index: number): MetamorphicParse{
263
- if (this.layers.has(ViewLayerType.META_MORPHEME)){
264
- if (this.layers.get(ViewLayerType.META_MORPHEME) instanceof MultiWordLayer){
265
- let multiWordLayer = <MultiWordLayer<MetamorphicParse>> this.layers.get(ViewLayerType.META_MORPHEME);
266
- if (index < multiWordLayer.size() && index >= 0){
342
+ /**
343
+ * Layers may contain multiple metamorphic parse information corresponding to multiple Turkish words. This method
344
+ * returns the metamorphic parse at position index.
345
+ * @param index Position of the Turkish word.
346
+ * @return The metamorphic parse at position index.
347
+ */
348
+ getMetamorphicParseAt(index: number): MetamorphicParse {
349
+ if (this.layers.has(ViewLayerType.META_MORPHEME)) {
350
+ if (this.layers.get(ViewLayerType.META_MORPHEME) instanceof MultiWordLayer) {
351
+ let multiWordLayer = <MultiWordLayer<MetamorphicParse>>this.layers.get(ViewLayerType.META_MORPHEME);
352
+ if (index < multiWordLayer.size() && index >= 0) {
267
353
  return multiWordLayer.getItemAt(index);
268
354
  }
269
355
  }
270
356
  }
271
357
  }
272
358
 
273
- getMetaMorphemeAtIndex(index: number): string{
274
- if (this.layers.has(ViewLayerType.META_MORPHEME)){
275
- if (this.layers.get(ViewLayerType.META_MORPHEME) instanceof MetaMorphemeLayer){
276
- let metaMorphemeLayer = <MetaMorphemeLayer> this.layers.get(ViewLayerType.META_MORPHEME);
277
- if (index < metaMorphemeLayer.getLayerSize(ViewLayerType.META_MORPHEME) && index >= 0){
359
+ /**
360
+ * Layers may contain multiple metamorphemes corresponding to one or multiple Turkish words. This method
361
+ * returns the metamorpheme at position index.
362
+ * @param index Position of the metamorpheme.
363
+ * @return The metamorpheme at position index.
364
+ */
365
+ getMetaMorphemeAtIndex(index: number): string {
366
+ if (this.layers.has(ViewLayerType.META_MORPHEME)) {
367
+ if (this.layers.get(ViewLayerType.META_MORPHEME) instanceof MetaMorphemeLayer) {
368
+ let metaMorphemeLayer = <MetaMorphemeLayer>this.layers.get(ViewLayerType.META_MORPHEME);
369
+ if (index < metaMorphemeLayer.getLayerSize(ViewLayerType.META_MORPHEME) && index >= 0) {
278
370
  return metaMorphemeLayer.getLayerInfoAt(ViewLayerType.META_MORPHEME, index);
279
371
  }
280
372
  }
281
373
  }
282
374
  }
283
375
 
284
- getMetaMorphemeFromIndex(index: number): string{
285
- if (this.layers.has(ViewLayerType.META_MORPHEME)){
286
- if (this.layers.get(ViewLayerType.META_MORPHEME) instanceof MetaMorphemeLayer){
287
- let metaMorphemeLayer = <MetaMorphemeLayer> this.layers.get(ViewLayerType.META_MORPHEME);
288
- if (index < metaMorphemeLayer.getLayerSize(ViewLayerType.META_MORPHEME) && index >= 0){
376
+ /**
377
+ * Layers may contain multiple metamorphemes corresponding to one or multiple Turkish words. This method
378
+ * returns all metamorphemes from position index.
379
+ * @param index Start position of the metamorpheme.
380
+ * @return All metamorphemes from position index.
381
+ */
382
+ getMetaMorphemeFromIndex(index: number): string {
383
+ if (this.layers.has(ViewLayerType.META_MORPHEME)) {
384
+ if (this.layers.get(ViewLayerType.META_MORPHEME) instanceof MetaMorphemeLayer) {
385
+ let metaMorphemeLayer = <MetaMorphemeLayer>this.layers.get(ViewLayerType.META_MORPHEME);
386
+ if (index < metaMorphemeLayer.getLayerSize(ViewLayerType.META_MORPHEME) && index >= 0) {
289
387
  return metaMorphemeLayer.getLayerInfoFrom(index);
290
388
  }
291
389
  }
292
390
  }
293
391
  }
294
392
 
295
- getLayerSize(viewLayer: ViewLayerType): number{
296
- if (this.layers.get(viewLayer) instanceof MultiWordMultiItemLayer){
297
- return (<MultiWordMultiItemLayer<any>> this.layers.get(viewLayer)).getLayerSize(viewLayer);
393
+ /**
394
+ * For layers with multiple item information, this method returns total items in that layer.
395
+ * @param viewLayer Layer name
396
+ * @return Total items in the given layer.
397
+ */
398
+ getLayerSize(viewLayer: ViewLayerType): number {
399
+ if (this.layers.get(viewLayer) instanceof MultiWordMultiItemLayer) {
400
+ return (<MultiWordMultiItemLayer<any>>this.layers.get(viewLayer)).getLayerSize(viewLayer);
298
401
  } else {
299
- if (this.layers.get(viewLayer) instanceof SingleWordMultiItemLayer){
300
- return (<SingleWordMultiItemLayer<any>> this.layers.get(viewLayer)).getLayerSize(viewLayer);
402
+ if (this.layers.get(viewLayer) instanceof SingleWordMultiItemLayer) {
403
+ return (<SingleWordMultiItemLayer<any>>this.layers.get(viewLayer)).getLayerSize(viewLayer);
301
404
  }
302
405
  }
303
406
  return 0;
304
407
  }
305
408
 
306
- getLayerInfoAt(viewLayer: ViewLayerType, index: number): string{
307
- switch (viewLayer){
409
+ /**
410
+ * For layers with multiple item information, this method returns the item at position index.
411
+ * @param viewLayer Layer name
412
+ * @param index Position of the item.
413
+ * @return The item at position index.
414
+ */
415
+ getLayerInfoAt(viewLayer: ViewLayerType, index: number): string {
416
+ switch (viewLayer) {
308
417
  case ViewLayerType.META_MORPHEME_MOVED:
309
418
  case ViewLayerType.PART_OF_SPEECH:
310
419
  case ViewLayerType.INFLECTIONAL_GROUP:
311
- if (this.layers.get(viewLayer) instanceof MultiWordMultiItemLayer){
312
- return (<MultiWordMultiItemLayer<any>> this.layers.get(viewLayer)).getLayerInfoAt(viewLayer, index);
420
+ if (this.layers.get(viewLayer) instanceof MultiWordMultiItemLayer) {
421
+ return (<MultiWordMultiItemLayer<any>>this.layers.get(viewLayer)).getLayerInfoAt(viewLayer, index);
313
422
  }
314
423
  break;
315
424
  case ViewLayerType.META_MORPHEME:
@@ -321,35 +430,54 @@ export class LayerInfo {
321
430
  }
322
431
  }
323
432
 
324
- getLayerDescription(): string{
433
+ /**
434
+ * Returns the string form of all layer information except part_of_speech layer.
435
+ * @return The string form of all layer information except part_of_speech layer.
436
+ */
437
+ getLayerDescription(): string {
325
438
  let result = "";
326
- for (let viewLayerType of this.layers.keys()){
327
- if (viewLayerType != ViewLayerType.PART_OF_SPEECH){
439
+ for (let viewLayerType of this.layers.keys()) {
440
+ if (viewLayerType != ViewLayerType.PART_OF_SPEECH) {
328
441
  result = result + this.layers.get(viewLayerType).getLayerDescription();
329
442
  }
330
443
  }
331
444
  return result;
332
445
  }
333
446
 
334
- getLayerData(viewLayer: ViewLayerType): string{
335
- if (this.layers.has(viewLayer)){
447
+ /**
448
+ * Returns the layer info for the given layer.
449
+ * @param viewLayer Layer name.
450
+ * @return Layer info for the given layer.
451
+ */
452
+ getLayerData(viewLayer: ViewLayerType): string {
453
+ if (this.layers.has(viewLayer)) {
336
454
  return this.layers.get(viewLayer).getLayerValue();
337
455
  } else {
338
456
  return null;
339
457
  }
340
458
  }
341
459
 
342
- getRobustLayerData(viewLayer: ViewLayerType): string{
460
+ /**
461
+ * Returns the layer info for the given layer, if that layer exists. Otherwise, it returns the fallback layer info
462
+ * determined by the checkLayer.
463
+ * @param viewLayer Layer name
464
+ * @return Layer info for the given layer if it exists. Otherwise, it returns the fallback layer info determined by
465
+ * the checkLayer.
466
+ */
467
+ getRobustLayerData(viewLayer: ViewLayerType): string {
343
468
  viewLayer = this.checkLayer(viewLayer);
344
469
  return this.getLayerData(viewLayer);
345
470
  }
346
471
 
347
- private updateMetaMorphemesMoved(){
348
- if (this.layers.has(ViewLayerType.META_MORPHEME)){
349
- let metaMorphemeLayer = <MetaMorphemeLayer> this.layers.get(ViewLayerType.META_MORPHEME);
350
- if (metaMorphemeLayer.size() > 0){
472
+ /**
473
+ * Initializes the metamorphemesmoved layer with metamorpheme layer except the root word.
474
+ */
475
+ private updateMetaMorphemesMoved() {
476
+ if (this.layers.has(ViewLayerType.META_MORPHEME)) {
477
+ let metaMorphemeLayer = <MetaMorphemeLayer>this.layers.get(ViewLayerType.META_MORPHEME);
478
+ if (metaMorphemeLayer.size() > 0) {
351
479
  let result = metaMorphemeLayer.getItemAt(0).toString();
352
- for (let i = 1; i < metaMorphemeLayer.size(); i++){
480
+ for (let i = 1; i < metaMorphemeLayer.size(); i++) {
353
481
  result = result + " " + metaMorphemeLayer.getItemAt(i).toString();
354
482
  }
355
483
  this.layers.set(ViewLayerType.META_MORPHEME_MOVED, new MetaMorphemesMovedLayer(result));
@@ -357,47 +485,77 @@ export class LayerInfo {
357
485
  }
358
486
  }
359
487
 
360
- removeLayer(layerType: ViewLayerType){
488
+ /**
489
+ * Removes the given layer from hash map.
490
+ * @param layerType Layer to be removed.
491
+ */
492
+ removeLayer(layerType: ViewLayerType) {
361
493
  this.layers.delete(layerType)
362
494
  }
363
495
 
364
- metaMorphemeClear(){
496
+ /**
497
+ * Removes metamorpheme and metamorphemesmoved layers.
498
+ */
499
+ metaMorphemeClear() {
365
500
  this.layers.delete(ViewLayerType.META_MORPHEME);
366
501
  this.layers.delete(ViewLayerType.META_MORPHEME_MOVED);
367
502
  }
368
503
 
369
- englishClear(){
504
+ /**
505
+ * Removes English layer.
506
+ */
507
+ englishClear() {
370
508
  this.layers.delete(ViewLayerType.ENGLISH_WORD);
371
509
  }
372
510
 
373
- dependencyClear(){
511
+ /**
512
+ * Removes the dependency layer.
513
+ */
514
+ dependencyClear() {
374
515
  this.layers.delete(ViewLayerType.DEPENDENCY);
375
516
  }
376
517
 
377
- metaMorphemesMovedClear(){
518
+ /**
519
+ * Removed metamorphemesmoved layer.
520
+ */
521
+ metaMorphemesMovedClear() {
378
522
  this.layers.delete(ViewLayerType.META_MORPHEME_MOVED);
379
523
  }
380
524
 
381
- semanticClear(){
525
+ /**
526
+ * Removes the Turkish semantic layer.
527
+ */
528
+ semanticClear() {
382
529
  this.layers.delete(ViewLayerType.SEMANTICS);
383
530
  }
384
531
 
385
- englishSemanticClear(){
532
+ /**
533
+ * Removes the English semantic layer.
534
+ */
535
+ englishSemanticClear() {
386
536
  this.layers.delete(ViewLayerType.ENGLISH_SEMANTICS);
387
537
  }
388
538
 
389
- morphologicalAnalysisClear(){
539
+ /**
540
+ * Removes the morphological analysis, part of speech, metamorpheme, and metamorphemesmoved layers.
541
+ */
542
+ morphologicalAnalysisClear() {
390
543
  this.layers.delete(ViewLayerType.INFLECTIONAL_GROUP);
391
544
  this.layers.delete(ViewLayerType.PART_OF_SPEECH);
392
545
  this.layers.delete(ViewLayerType.META_MORPHEME);
393
546
  this.layers.delete(ViewLayerType.META_MORPHEME_MOVED);
394
547
  }
395
548
 
396
- metaMorphemeRemove(index: number): MetamorphicParse{
549
+ /**
550
+ * Removes the metamorpheme at position index.
551
+ * @param index Position of the metamorpheme to be removed.
552
+ * @return Metamorphemes concatenated as a string after the removed metamorpheme.
553
+ */
554
+ metaMorphemeRemove(index: number): MetamorphicParse {
397
555
  let removedParse
398
- if (this.layers.has(ViewLayerType.META_MORPHEME)){
399
- let metaMorphemeLayer = <MetaMorphemeLayer> this.layers.get(ViewLayerType.META_MORPHEME);
400
- if (index >= 0 && index < metaMorphemeLayer.getLayerSize(ViewLayerType.META_MORPHEME)){
556
+ if (this.layers.has(ViewLayerType.META_MORPHEME)) {
557
+ let metaMorphemeLayer = <MetaMorphemeLayer>this.layers.get(ViewLayerType.META_MORPHEME);
558
+ if (index >= 0 && index < metaMorphemeLayer.getLayerSize(ViewLayerType.META_MORPHEME)) {
401
559
  removedParse = metaMorphemeLayer.metaMorphemeRemoveFromIndex(index);
402
560
  this.updateMetaMorphemesMoved();
403
561
  }
@@ -405,29 +563,43 @@ export class LayerInfo {
405
563
  return removedParse;
406
564
  }
407
565
 
408
- isVerbal(): boolean{
409
- if (this.layers.has(ViewLayerType.INFLECTIONAL_GROUP)){
410
- return (<MorphologicalAnalysisLayer> this.layers.get(ViewLayerType.INFLECTIONAL_GROUP)).isVerbal();
566
+ /**
567
+ * Checks if the last inflectional group contains VERB tag.
568
+ * @return True if the last inflectional group contains VERB tag, false otherwise.
569
+ */
570
+ isVerbal(): boolean {
571
+ if (this.layers.has(ViewLayerType.INFLECTIONAL_GROUP)) {
572
+ return (<MorphologicalAnalysisLayer>this.layers.get(ViewLayerType.INFLECTIONAL_GROUP)).isVerbal();
411
573
  } else {
412
574
  return false;
413
575
  }
414
576
  }
415
577
 
416
- isNominal(): boolean{
417
- if (this.layers.has(ViewLayerType.INFLECTIONAL_GROUP)){
418
- return (<MorphologicalAnalysisLayer> this.layers.get(ViewLayerType.INFLECTIONAL_GROUP)).isNominal();
578
+ /**
579
+ * Checks if the last verbal inflectional group contains ZERO tag.
580
+ * @return True if the last verbal inflectional group contains ZERO tag, false otherwise.
581
+ */
582
+ isNominal(): boolean {
583
+ if (this.layers.has(ViewLayerType.INFLECTIONAL_GROUP)) {
584
+ return (<MorphologicalAnalysisLayer>this.layers.get(ViewLayerType.INFLECTIONAL_GROUP)).isNominal();
419
585
  } else {
420
586
  return false;
421
587
  }
422
588
  }
423
589
 
424
- divideIntoWords(): Array<LayerInfo>{
590
+ /**
591
+ * Creates an array list of LayerInfo objects, where each object correspond to one word in the tree node. Turkish
592
+ * words, morphological parses, metamorpheme parses, semantic senses, shallow parses are divided into corresponding
593
+ * words. Named entity tags and propbank arguments are the same for all words.
594
+ * @return An array list of LayerInfo objects created from the layer info of the node.
595
+ */
596
+ divideIntoWords(): Array<LayerInfo> {
425
597
  let result = new Array<LayerInfo>();
426
- for (let i = 0; i < this.getNumberOfWords(); i++){
598
+ for (let i = 0; i < this.getNumberOfWords(); i++) {
427
599
  let layerInfo = new LayerInfo();
428
600
  layerInfo.setLayerData(ViewLayerType.TURKISH_WORD, this.getTurkishWordAt(i));
429
601
  layerInfo.setLayerData(ViewLayerType.ENGLISH_WORD, this.getLayerData(ViewLayerType.ENGLISH_WORD));
430
- if (this.layerExists(ViewLayerType.INFLECTIONAL_GROUP)){
602
+ if (this.layerExists(ViewLayerType.INFLECTIONAL_GROUP)) {
431
603
  layerInfo.setMorphologicalAnalysis(this.getMorphologicalParseAt(i));
432
604
  }
433
605
  if (this.layerExists(ViewLayerType.META_MORPHEME)) {
@@ -439,7 +611,7 @@ export class LayerInfo {
439
611
  if (this.layerExists(ViewLayerType.ENGLISH_SEMANTICS)) {
440
612
  layerInfo.setLayerData(ViewLayerType.ENGLISH_SEMANTICS, this.getLayerData(ViewLayerType.ENGLISH_SEMANTICS));
441
613
  }
442
- if (this.layerExists(ViewLayerType.NER)){
614
+ if (this.layerExists(ViewLayerType.NER)) {
443
615
  layerInfo.setLayerData(ViewLayerType.NER, this.getLayerData(ViewLayerType.NER));
444
616
  }
445
617
  if (this.layerExists(ViewLayerType.SEMANTICS)) {
@@ -456,24 +628,30 @@ export class LayerInfo {
456
628
  return result;
457
629
  }
458
630
 
459
- toAnnotatedWord(wordIndex: number): AnnotatedWord{
631
+ /**
632
+ * Converts layer info of the word at position wordIndex to an AnnotatedWord. Layers are converted to their
633
+ * counterparts in the AnnotatedWord.
634
+ * @param wordIndex Index of the word to be converted.
635
+ * @return Converted annotatedWord
636
+ */
637
+ toAnnotatedWord(wordIndex: number): AnnotatedWord {
460
638
  let annotatedWord = new AnnotatedWord(this.getTurkishWordAt(wordIndex));
461
- if (this.layerExists(ViewLayerType.INFLECTIONAL_GROUP)){
639
+ if (this.layerExists(ViewLayerType.INFLECTIONAL_GROUP)) {
462
640
  annotatedWord.setParse(this.getMorphologicalParseAt(wordIndex).toString());
463
641
  }
464
- if (this.layerExists(ViewLayerType.META_MORPHEME)){
642
+ if (this.layerExists(ViewLayerType.META_MORPHEME)) {
465
643
  annotatedWord.setMetamorphicParse(this.getMetamorphicParseAt(wordIndex).toString());
466
644
  }
467
- if (this.layerExists(ViewLayerType.SEMANTICS)){
645
+ if (this.layerExists(ViewLayerType.SEMANTICS)) {
468
646
  annotatedWord.setSemantic(this.getSemanticAt(wordIndex));
469
647
  }
470
- if (this.layerExists(ViewLayerType.NER)){
648
+ if (this.layerExists(ViewLayerType.NER)) {
471
649
  annotatedWord.setNamedEntityType(this.getLayerData(ViewLayerType.NER));
472
650
  }
473
- if (this.layerExists(ViewLayerType.PROPBANK)){
474
- annotatedWord.setArgument(this.getArgument().toString());
651
+ if (this.layerExists(ViewLayerType.PROPBANK)) {
652
+ annotatedWord.setArgumentList(this.getArgument().toString());
475
653
  }
476
- if (this.layerExists(ViewLayerType.SHALLOW_PARSE)){
654
+ if (this.layerExists(ViewLayerType.SHALLOW_PARSE)) {
477
655
  annotatedWord.setShallowParse(this.getShallowParseAt(wordIndex));
478
656
  }
479
657
  return annotatedWord;