opener-kaf-naf-parser 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +674 -0
  3. data/README.md +46 -0
  4. data/bin/kaf-naf-parser +8 -0
  5. data/bin/kaf-naf-parser-server +10 -0
  6. data/bin/kaf-to-naf +7 -0
  7. data/bin/naf-to-kaf +7 -0
  8. data/config.ru +4 -0
  9. data/core/kaf-naf-parser.py +42 -0
  10. data/core/packages/KafNafParser-1.2.tar.gz +0 -0
  11. data/core/packages/VUA_pylib-1.3.tar.gz +0 -0
  12. data/core/site-packages/pre_build/KafNafParser-1.2-py2.7.egg-info/PKG-INFO +10 -0
  13. data/core/site-packages/pre_build/KafNafParser-1.2-py2.7.egg-info/SOURCES.txt +22 -0
  14. data/core/site-packages/pre_build/KafNafParser-1.2-py2.7.egg-info/dependency_links.txt +1 -0
  15. data/core/site-packages/pre_build/KafNafParser-1.2-py2.7.egg-info/installed-files.txt +47 -0
  16. data/core/site-packages/pre_build/KafNafParser-1.2-py2.7.egg-info/top_level.txt +1 -0
  17. data/core/site-packages/pre_build/KafNafParser/KafNafParserMod.py +338 -0
  18. data/core/site-packages/pre_build/KafNafParser/KafNafParserMod.pyc +0 -0
  19. data/core/site-packages/pre_build/KafNafParser/__init__.py +14 -0
  20. data/core/site-packages/pre_build/KafNafParser/__init__.pyc +0 -0
  21. data/core/site-packages/pre_build/KafNafParser/constituency_data.py +125 -0
  22. data/core/site-packages/pre_build/KafNafParser/constituency_data.pyc +0 -0
  23. data/core/site-packages/pre_build/KafNafParser/coreference_data.py +52 -0
  24. data/core/site-packages/pre_build/KafNafParser/coreference_data.pyc +0 -0
  25. data/core/site-packages/pre_build/KafNafParser/dependency_data.py +80 -0
  26. data/core/site-packages/pre_build/KafNafParser/dependency_data.pyc +0 -0
  27. data/core/site-packages/pre_build/KafNafParser/entity_data.py +59 -0
  28. data/core/site-packages/pre_build/KafNafParser/entity_data.pyc +0 -0
  29. data/core/site-packages/pre_build/KafNafParser/external_references_data.py +41 -0
  30. data/core/site-packages/pre_build/KafNafParser/external_references_data.pyc +0 -0
  31. data/core/site-packages/pre_build/KafNafParser/feature_extractor/__init__.py +2 -0
  32. data/core/site-packages/pre_build/KafNafParser/feature_extractor/__init__.pyc +0 -0
  33. data/core/site-packages/pre_build/KafNafParser/feature_extractor/constituency.py +205 -0
  34. data/core/site-packages/pre_build/KafNafParser/feature_extractor/constituency.pyc +0 -0
  35. data/core/site-packages/pre_build/KafNafParser/feature_extractor/dependency.py +300 -0
  36. data/core/site-packages/pre_build/KafNafParser/feature_extractor/dependency.pyc +0 -0
  37. data/core/site-packages/pre_build/KafNafParser/features_data.py +71 -0
  38. data/core/site-packages/pre_build/KafNafParser/features_data.pyc +0 -0
  39. data/core/site-packages/pre_build/KafNafParser/header_data.py +127 -0
  40. data/core/site-packages/pre_build/KafNafParser/header_data.pyc +0 -0
  41. data/core/site-packages/pre_build/KafNafParser/opinion_data.py +200 -0
  42. data/core/site-packages/pre_build/KafNafParser/opinion_data.pyc +0 -0
  43. data/core/site-packages/pre_build/KafNafParser/references_data.py +15 -0
  44. data/core/site-packages/pre_build/KafNafParser/references_data.pyc +0 -0
  45. data/core/site-packages/pre_build/KafNafParser/span_data.py +63 -0
  46. data/core/site-packages/pre_build/KafNafParser/span_data.pyc +0 -0
  47. data/core/site-packages/pre_build/KafNafParser/term_data.py +111 -0
  48. data/core/site-packages/pre_build/KafNafParser/term_data.pyc +0 -0
  49. data/core/site-packages/pre_build/KafNafParser/term_sentiment_data.py +42 -0
  50. data/core/site-packages/pre_build/KafNafParser/term_sentiment_data.pyc +0 -0
  51. data/core/site-packages/pre_build/KafNafParser/text_data.py +90 -0
  52. data/core/site-packages/pre_build/KafNafParser/text_data.pyc +0 -0
  53. data/core/site-packages/pre_build/VUA_pylib-1.3-py2.7.egg-info/PKG-INFO +10 -0
  54. data/core/site-packages/pre_build/VUA_pylib-1.3-py2.7.egg-info/SOURCES.txt +14 -0
  55. data/core/site-packages/pre_build/VUA_pylib-1.3-py2.7.egg-info/dependency_links.txt +1 -0
  56. data/core/site-packages/pre_build/VUA_pylib-1.3-py2.7.egg-info/installed-files.txt +23 -0
  57. data/core/site-packages/pre_build/VUA_pylib-1.3-py2.7.egg-info/top_level.txt +1 -0
  58. data/core/site-packages/pre_build/VUA_pylib/__init__.py +1 -0
  59. data/core/site-packages/pre_build/VUA_pylib/__init__.pyc +0 -0
  60. data/core/site-packages/pre_build/VUA_pylib/common/__init__.py +1 -0
  61. data/core/site-packages/pre_build/VUA_pylib/common/__init__.pyc +0 -0
  62. data/core/site-packages/pre_build/VUA_pylib/common/common.py +28 -0
  63. data/core/site-packages/pre_build/VUA_pylib/common/common.pyc +0 -0
  64. data/core/site-packages/pre_build/VUA_pylib/corpus_reader/__init__.py +1 -0
  65. data/core/site-packages/pre_build/VUA_pylib/corpus_reader/__init__.pyc +0 -0
  66. data/core/site-packages/pre_build/VUA_pylib/corpus_reader/google_web_nl.py +156 -0
  67. data/core/site-packages/pre_build/VUA_pylib/corpus_reader/google_web_nl.pyc +0 -0
  68. data/core/site-packages/pre_build/VUA_pylib/io_utils/__init__.py +1 -0
  69. data/core/site-packages/pre_build/VUA_pylib/io_utils/__init__.pyc +0 -0
  70. data/core/site-packages/pre_build/VUA_pylib/io_utils/feature_file.py +121 -0
  71. data/core/site-packages/pre_build/VUA_pylib/io_utils/feature_file.pyc +0 -0
  72. data/core/site-packages/pre_build/VUA_pylib/lexicon/__init__.py +1 -0
  73. data/core/site-packages/pre_build/VUA_pylib/lexicon/__init__.pyc +0 -0
  74. data/core/site-packages/pre_build/VUA_pylib/lexicon/lexicon.py +72 -0
  75. data/core/site-packages/pre_build/VUA_pylib/lexicon/lexicon.pyc +0 -0
  76. data/core/site-packages/pre_build/VUKafParserPy-1.0-py2.7.egg-info/PKG-INFO +10 -0
  77. data/core/site-packages/pre_build/VUKafParserPy-1.0-py2.7.egg-info/SOURCES.txt +7 -0
  78. data/core/site-packages/pre_build/VUKafParserPy-1.0-py2.7.egg-info/dependency_links.txt +1 -0
  79. data/core/site-packages/pre_build/VUKafParserPy-1.0-py2.7.egg-info/installed-files.txt +11 -0
  80. data/core/site-packages/pre_build/VUKafParserPy-1.0-py2.7.egg-info/top_level.txt +1 -0
  81. data/core/site-packages/pre_build/VUKafParserPy/KafDataObjectsMod.py +165 -0
  82. data/core/site-packages/pre_build/VUKafParserPy/KafDataObjectsMod.pyc +0 -0
  83. data/core/site-packages/pre_build/VUKafParserPy/KafParserMod.py +439 -0
  84. data/core/site-packages/pre_build/VUKafParserPy/KafParserMod.pyc +0 -0
  85. data/core/site-packages/pre_build/VUKafParserPy/__init__.py +7 -0
  86. data/core/site-packages/pre_build/VUKafParserPy/__init__.pyc +0 -0
  87. data/ext/hack/support.rb +38 -0
  88. data/lib/opener/kaf_naf_parser.rb +77 -0
  89. data/lib/opener/kaf_naf_parser/cli.rb +92 -0
  90. data/lib/opener/kaf_naf_parser/public/markdown.css +284 -0
  91. data/lib/opener/kaf_naf_parser/server.rb +16 -0
  92. data/lib/opener/kaf_naf_parser/version.rb +5 -0
  93. data/lib/opener/kaf_naf_parser/views/index.erb +103 -0
  94. data/lib/opener/kaf_naf_parser/views/result.erb +15 -0
  95. data/opener-kaf-naf-parser.gemspec +38 -0
  96. data/pre_build_requirements.txt +3 -0
  97. metadata +283 -0
@@ -0,0 +1,200 @@
1
+ #Modified for KAF NAF ok
2
+
3
+ from lxml import etree
4
+ from lxml.objectify import dump
5
+ from span_data import *
6
+
7
+
8
+
9
+ class Cholder:
10
+ def __init__(self,node=None):
11
+ self.type = 'NAF/KAF'
12
+ if node is None:
13
+ self.node = etree.Element('opinion_holder')
14
+ else:
15
+ self.node = node
16
+
17
+ def set_span(self,my_span):
18
+ self.node.append(my_span.get_node())
19
+
20
+ def set_comment(self,c):
21
+ c = c.replace('--','- -')
22
+ self.node.insert(0,etree.Comment(c) )
23
+
24
+ def get_span(self):
25
+ span_obj = self.node.find('span')
26
+ if span_obj is not None:
27
+ return Cspan(span_obj)
28
+ return None
29
+
30
+ def __str__(self):
31
+ return dump(self.node)
32
+
33
+ def get_node(self):
34
+ return self.node
35
+
36
+
37
+ class Ctarget:
38
+ def __init__(self,node=None):
39
+ self.type = 'NAF/KAF'
40
+ if node is None:
41
+ self.node = etree.Element('opinion_target')
42
+ else:
43
+ self.node = node
44
+
45
+ def set_comment(self,c):
46
+ c = c.replace('--','- -')
47
+ self.node.insert(0,etree.Comment(c) )
48
+
49
+ def get_comment(self):
50
+ return self.node_comment
51
+
52
+ def set_span(self,my_span):
53
+ self.node.append(my_span.get_node())
54
+
55
+ def get_span(self):
56
+ span_obj = self.node.find('span')
57
+ if span_obj is not None:
58
+ return Cspan(span_obj)
59
+ return None
60
+
61
+ def __str__(self):
62
+ return dump(self.node)
63
+
64
+ def get_node(self):
65
+ return self.node
66
+
67
+
68
+ class Cexpression:
69
+ def __init__(self,node=None):
70
+ self.type = 'NAF/KAF'
71
+ if node is None:
72
+ self.node = etree.Element('opinion_expression')
73
+ else:
74
+ self.node = node
75
+
76
+ def set_comment(self,c):
77
+ c = c.replace('--','- -')
78
+ self.node.insert(0,etree.Comment(c))
79
+
80
+ def set_polarity(self,pol):
81
+ self.node.set('polarity',pol)
82
+
83
+ def get_polarity(self):
84
+ return self.node.get('polarity')
85
+
86
+ def set_strength(self,st):
87
+ self.node.set('strength',st)
88
+
89
+ def get_strength(self):
90
+ return self.node.get('strength')
91
+
92
+ def set_span(self,my_span):
93
+ self.node.append(my_span.get_node())
94
+
95
+ def get_span(self):
96
+ span_obj = self.node.find('span')
97
+ if span_obj is not None:
98
+ return Cspan(span_obj)
99
+ return None
100
+
101
+ def __str__(self):
102
+ return dump(self.node)
103
+
104
+ def get_node(self):
105
+ return self.node
106
+
107
+ class Copinion:
108
+ def __init__(self,node=None,type='NAF'):
109
+ self.type = type
110
+ if node is None:
111
+ self.node = etree.Element('opinion')
112
+ else:
113
+ self.node = node
114
+
115
+ def set_id(self,my_id):
116
+ if self.type == 'NAF':
117
+ self.node.set('id',my_id)
118
+ elif self.type == 'KAF':
119
+ self.node.set('oid',my_id)
120
+
121
+ def get_id(self):
122
+ if self.type == 'NAF':
123
+ self.node.het('id')
124
+ elif self.type == 'KAF':
125
+ self.node.get('oid')
126
+
127
+ def set_holder(self,hol):
128
+ self.node.append(hol.get_node())
129
+
130
+ def get_holder(self):
131
+ node_hol = self.node.find('opinion_holder')
132
+ if node_hol is not None:
133
+ return Cholder(node_hol)
134
+ else:
135
+ return None
136
+
137
+ def set_target(self,tar):
138
+ self.node.append(tar.get_node())
139
+
140
+ def get_target(self):
141
+ node_target = self.node.find('opinion_target')
142
+ if node_target is not None:
143
+ return Ctarget(node_target)
144
+ else:
145
+ return None
146
+
147
+ def set_expression(self,exp):
148
+ self.node.append(exp.get_node())
149
+
150
+ def get_expression(self):
151
+ node_exp = self.node.find('opinion_expression')
152
+ if node_exp is not None:
153
+ return Cexpression(node_exp)
154
+ else:
155
+ return None
156
+
157
+ def __str__(self):
158
+ return dump(self.node)
159
+
160
+ def get_node(self):
161
+ return self.node
162
+
163
+
164
+
165
+
166
+
167
+ class Copinions:
168
+ def __init__(self,node=None,type='NAF'):
169
+ self.type = type
170
+ if node is None:
171
+ self.node = etree.Element('opinions')
172
+ else:
173
+ self.node = node
174
+
175
+ def __get_opinion_nodes(self):
176
+ for node in self.node.findall('opinion'):
177
+ yield node
178
+
179
+ def get_opinions(self):
180
+ for node in self.__get_opinion_nodes():
181
+ yield Copinion(node,self.type)
182
+
183
+ def to_kaf(self):
184
+ if self.type == 'NAF':
185
+ for node in self.__get_opinion_nodes():
186
+ node.set('oid',node.get('id'))
187
+ del node.attrib['id']
188
+
189
+ def to_naf(self):
190
+ if self.type == 'KAF':
191
+ for node in self.__get_opinion_nodes():
192
+ node.set('id',node.get('oid'))
193
+ del node.attrib['oid']
194
+
195
+
196
+ def add_opinion(self,opi_obj):
197
+ self.node.append(opi_obj.get_node())
198
+
199
+ def get_node(self):
200
+ return self.node
@@ -0,0 +1,15 @@
1
+ # Modified for NAF/KAf
2
+ from span_data import *
3
+
4
+ class Creferences:
5
+ def __init__(self,node=None):
6
+ self.type = 'NAF/KAF'
7
+ if node is None:
8
+ self.node = etree.Element('references')
9
+ else:
10
+ self.node = node
11
+
12
+ def __iter__(self):
13
+ for span_node in self.node.findall('span'):
14
+ yield Cspan(span_node)
15
+
@@ -0,0 +1,63 @@
1
+ # Modified for KAF/NAF
2
+
3
+ from lxml import etree
4
+ from lxml.objectify import dump
5
+
6
+ class Ctarget:
7
+ def __init__(self,node=None):
8
+ self.type = 'NAF/KAF'
9
+ if node is None:
10
+ self.node = etree.Element('target')
11
+ else:
12
+ self.node = node
13
+
14
+ def get_id(self):
15
+ return self.node.get('id')
16
+
17
+ def set_id(self,this_id):
18
+ self.node.set('id',this_id)
19
+
20
+ def get_node(self):
21
+ return self.node
22
+
23
+
24
+ class Cspan:
25
+ def __init__(self,node=None):
26
+ self.type = 'NAF/KAF'
27
+ if node is None:
28
+ self.node = etree.Element('span')
29
+ else:
30
+ self.node = node
31
+
32
+ def add_target_id(self,this_id):
33
+ new_target = Ctarget()
34
+ new_target.set_id(this_id)
35
+ self.node.append(new_target.get_node())
36
+
37
+ def create_from_ids(self,list_ids):
38
+ for this_id in list_ids:
39
+ new_target = Ctarget()
40
+ new_target.set_id(this_id)
41
+ self.node.append(new_target.get_node())
42
+
43
+ def add_target(self,target):
44
+ self.node.append(target.get_node())
45
+
46
+
47
+ def __get_target_nodes(self):
48
+ for target_node in self.node.findall('target'):
49
+ yield target_node
50
+
51
+ def __iter__(self):
52
+ for target_node in self.__get_target_nodes():
53
+ yield Ctarget(target_node)
54
+
55
+ def get_span_ids(self):
56
+ return [t_obj.get_id() for t_obj in self]
57
+
58
+ def __str__(self):
59
+ return dump(self.node)
60
+
61
+ def get_node(self):
62
+ return self.node
63
+
@@ -0,0 +1,111 @@
1
+ # included code for NAF/KAF
2
+
3
+
4
+ from span_data import *
5
+ from external_references_data import *
6
+ from term_sentiment_data import *
7
+ from lxml import etree
8
+
9
+
10
+ class Cterm:
11
+ def __init__(self,node=None,type='NAF'):
12
+ self.type = type
13
+ if node is None:
14
+ self.node = etree.Element('term')
15
+ else:
16
+ self.node = node
17
+
18
+
19
+ def get_id(self):
20
+ if self.type == 'NAF':
21
+ return self.node.get('id')
22
+ elif self.type == 'KAF':
23
+ return self.node.get('tid')
24
+
25
+ def get_lemma(self):
26
+ return self.node.get('lemma')
27
+
28
+ def get_pos(self):
29
+ return self.node.get('pos')
30
+
31
+ def get_morphofeat(self):
32
+ return self.node.get('morphofeat')
33
+
34
+ def get_span(self):
35
+ node_span = self.node.find('span')
36
+ if node_span is not None:
37
+ return Cspan(node_span)
38
+ else:
39
+ return None
40
+
41
+ def get_sentiment(self):
42
+ sent_node = self.node.find('sentiment')
43
+
44
+ if sent_node is None:
45
+ return None
46
+ else:
47
+ return Cterm_sentiment(sent_node)
48
+
49
+
50
+ def add_external_reference(self,ext_ref):
51
+ ext_refs_node = self.node.find('externalReferences')
52
+ if ext_refs_node is None:
53
+ ext_refs_obj = CexternalReferences()
54
+ self.node.append(ext_refs_obj.get_node())
55
+ else:
56
+ ext_refs_obj = CexternalReferences(ext_refs_node)
57
+
58
+ ext_refs_obj.add_external_reference(ext_ref)
59
+
60
+ def add_term_sentiment(self,term_sentiment):
61
+ self.node.append(term_sentiment.get_node())
62
+
63
+
64
+
65
+
66
+ class Cterms:
67
+ def __init__(self,node=None,type='NAF'):
68
+ self.idx = {}
69
+ self.type = type
70
+ if node is None:
71
+ self.node = etree.Element('terms')
72
+ else:
73
+ self.node = node
74
+ for node_term in self.__get_node_terms():
75
+ self.idx[node_term.get('id')] = node_term
76
+
77
+ def get_node(self):
78
+ return self.node
79
+
80
+ def to_kaf(self):
81
+ if self.type == 'NAF':
82
+ self.type = 'KAF'
83
+ for node in self.__get_node_terms():
84
+ node.set('tid',node.get('id'))
85
+ del node.attrib['id']
86
+
87
+ def to_naf(self):
88
+ if self.type == 'KAF':
89
+ self.type = 'NAF'
90
+ for node in self.__get_node_terms():
91
+ node.set('id',node.get('tid'))
92
+ del node.attrib['tid']
93
+
94
+ def __get_node_terms(self):
95
+ for node_term in self.node.findall('term'):
96
+ yield node_term
97
+
98
+ def __iter__(self):
99
+ for node_term in self.__get_node_terms():
100
+ yield Cterm(node_term,self.type)
101
+
102
+ def get_term(self,term_id):
103
+ if term_id in self.idx:
104
+ return Cterm(self.idx[term_id],self.type)
105
+ else:
106
+ return None
107
+
108
+ def add_external_reference(self,term_id, external_ref):
109
+ if term_id in self.idx:
110
+ term_obj = Cterm(self.idx[term_id],self.type)
111
+ term_obj.add_external_reference(external_ref)
@@ -0,0 +1,42 @@
1
+ # Modified for NAF KAF
2
+ from lxml import etree
3
+ from lxml.objectify import dump
4
+
5
+ class Cterm_sentiment:
6
+ def __init__(self,node=None):
7
+ self.type = 'NAF/KAF'
8
+ if node is None:
9
+ self.node = etree.Element('sentiment')
10
+ else:
11
+ self.node = node
12
+ #self.resource = self.polarity = self.strength = self.subjectivity = self.semantic_type = self.modifier = self.marker = self.product_feature = ''
13
+ #if node is not None:
14
+ # self.resource = node.get('resource','')
15
+ # self.polarity = node.get('polarity','')
16
+ # self.strength = node.get('strength','')
17
+ # self.subjectivity = node.get('subjectivity','')
18
+ #self.semantic_type = node.get('sentiment_semantic_type','')
19
+ # self.modifier = node.get('sentiment modifier','')
20
+ # self.marker = node.get('sentiment_marker','')
21
+ # self.product_feature = node.get('sentiment product feature','')
22
+
23
+ def set_resource(self,r):
24
+ self.node.set('resource',r)
25
+
26
+ def get_node(self):
27
+ return self.node
28
+
29
+ def get_polarity(self):
30
+ return self.node.get('polarity')
31
+
32
+ def set_polarity(self,p):
33
+ self.node.set('polarity',p)
34
+
35
+ def get_modifier(self):
36
+ return self.node.get('sentiment_modifier')
37
+
38
+ def set_modifier(self,sm):
39
+ self.node.set('sentiment_modifier',sm)
40
+
41
+ def __str__(self):
42
+ return dump(self.node)