Package miopia :: Package adapter :: Module Feature
[hide private]
[frames] | no frames]

Source Code for Module miopia.adapter.Feature

  1  ''' 
  2  Created on 09/05/2013 
  3   
  4  @author: David Vilares 
  5  ''' 
  6   
7 -class FeatureType(object):
8 """ 9 FeatureType defines the features supported by the L{Adapter} classes 10 """ 11 12 GRAM = "GRAM" 13 #CROSS_POSTAG = "COARSE_POSTAG" 14 #FINE_POSTAG = "FINE_POSTAG" 15 DEPENDENCY = "DEPENDENCY_TYPE" 16 #PSYCHOMETRIC = "PSYCHOMETRIC" 17 DEPENDENCY_TRIPLET = "DEPENDENCY_TRIPLET" 18 SENTIMENT_FEATURE = "SENTIMENT_FEATURE" 19 LEXICON = "LEXICON" 20 ABSTRACTED_LEXICON = "ABSTRACTED_LEXICON" 21 SCORED = "SCORED" 22 METADATA = "METADATA" 23 UNGRAMMATICAL = "UNGRAMMATICAL"
24 25
26 -class SentimentFeature(object):
27 """ 28 SentimentFeature defines the features provided by a L{SentimentAnalyzer} 29 """ 30 SEMANTIC_ORIENTATION = "S0" 31 POS_WORDS = "POS_WORDS" 32 NEG_WORDS = "NEG_WORDS" 33 SUBJECTIVITY = "SUBJECTIVITY" 34 NUMBER_INTENSIFIERS = "NUMBER_INTENSFIERS" 35 NUMBER_WORDS = "NUMBER_WORDS" 36 LENGTH_TEXT = "LENGTH_TEXT"
37
38 -class FeatureSemanticProperty(object):
39 """ 40 SemanticProperty defines a 'surname' to append semantic properties to the name of a features, building a new 41 feature 42 """ 43 POLARITY = "POLARITY"
44 45
46 -class FeatureLevelBackOff(object):
47 """ 48 FeatureLevelBackOff defines back off options supported by a L{FeatureTypeConfiguration}. 49 """ 50 FULL_BACK_OFF = "FULL_BACK_OFFF" 51 NO_BACK_OFF = "NO_BACK_OFF" 52 HEAD_BACK_OFF = "HEAD_BACK_OFF" 53 DEPENDENT_BACK_OFF = "DEPENDENT_BACK_OFF" 54 TYPE_BACK_OFF_EMPTY = "TYPE_BACK_OFF_EMPTY" 55 TYPE_BACK_OFF_LEMMA = "TYPE_BACK_OFF_LEMMA" 56 TYPE_BACK_OFF_WORD = "TYPE_BACK_OFF_WORD" 57 TYPE_BACK_OFF_COARSE_TAG = "TYPE_BACK_OFF_COARSE_TAG" 58 TYPE_BACK_OFF_FINE_TAG = "TYPE_BACK_OFF_FINE_TAG" 59 TYPE_BACK_OFF_POLARITY_WORDS = "TYPE_BACK_OFF_POLARITY_WORDS" 60 TYPE_BACK_OFF_SEMANTIC_ORIENTATION = "TYPE_BACK_OFF_SEMANTIC_ORIENTATION" 61 TYPE_BACK_OFF_PSYCHOMETRIC = "TYPE_BACK_OFF_PSYCHOMETRIC"
62 63
64 -class FeatureWekaDataType(object):
65 """ 66 FeatureWekaDataType defines the WekaDataTypes supported by this system 67 """ 68 NUMERIC = 'NUMERIC'
69 70
71 -class FeatureTypeConfiguration(object):
72 """ 73 FeatureTypeConfiguration specifies the configuration for a L{src.miope.adapter.Adapter} 74 """ 75 DELIMITER_CONFIGURATION = "|" 76 HEAD_BACK_OFF_DELIMITER = "HBOFF" 77 DEPENDENT_BACK_OFF_DELIMITER = "DBOFF" 78 N_GRAM_DELIMITER= "N_GRAM" 79 N_GRAM_BACK_OFF_DELIMITER ="N_GRAM_BACK_OFF" 80 ADD_DEPENDENCY_TYPE_DELIMITER= "DP_TYPE" 81 SEMANTIC_PROPERTY_DELIMITER = "SEMANTIC_PRO" 82 DEFAULT_N_GRAM_SIZE = "1" 83 84 85
86 - def __init__(self, back_off_head = None, 87 back_off_dependent = None, 88 **kwargs):
89 """ 90 @param **kwargs: ngram, n_gram_back_off, add_dependency_type, semantic_property 91 @param ngram: {"1","2","3",...} 92 @param n_gram_back_off: A type back_off of L{FeatureLevelBackOff} 93 @param add_dependency_type: {True,False}. If not included, taking False by default 94 @param semantic_property: A L{FeatureSemanticProperty} 95 """ 96 97 98 self._back_off_head = back_off_head 99 self._back_off_dependent = back_off_dependent 100 101 if 'n_gram' in kwargs.keys(): 102 self._n_gram = str(kwargs['n_gram']) 103 else: 104 self._n_gram = None 105 106 if 'n_gram_back_off' in kwargs.keys(): 107 self._n_gram_back_off = kwargs['n_gram_back_off'] 108 else: 109 self._n_gram_back_off = None 110 111 if 'add_dependency_type' in kwargs.keys(): 112 self._add_dependency_type = kwargs['add_dependency_type'] 113 else: 114 self._add_dependency_type = None 115 116 if 'semantic_property' in kwargs.keys(): 117 if kwargs['semantic_property'] in [FeatureSemanticProperty.POLARITY]: 118 self._semantic_property = kwargs['semantic_property'] 119 else: 120 raise ValueError("Not valid value for FeatureSemanticProperty") 121 else: 122 self._semantic_property = None 123 124 if 'weka_data_type' in kwargs.keys(): 125 self._weka_data_type = kwargs['weka_data_type'] 126 else: 127 self._weka_data_type = FeatureWekaDataType.NUMERIC
128
129 - def get_back_off_head(self):
130 """ 131 @return: The type of back off for the head of node a dependency triplet 132 """ 133 return self._back_off_head
134
135 - def get_back_off_dependent(self):
136 """ 137 @return: The type of back off for the dependent node of a dependency triplet 138 """ 139 return self._back_off_dependent
140
141 - def get_add_dependency_type(self):
142 """ 143 @return: A boolean indicating if the L{src.miope.adapter.DependencyTripletAdapter} must include or not 144 dependency types 145 """ 146 return self._add_dependency_type
147
148 - def get_n_gram(self):
149 """ 150 @return: The len for ngram's for a L{src.miope.adapter.NGramAdapter} 151 """ 152 return self._n_gram
153
154 - def get_n_gram_back_off(self):
155 """ 156 @return: The type of back off for ngram's of a L{src.miope.adapter.NGramAdapter} 157 """ 158 return self._n_gram_back_off
159 160
161 - def get_semantic_property(self):
162 return self._semantic_property
163
164 - def get_weka_data_type(self):
165 return self._weka_data_type
166
167 - def __str__(self, *args, **kwargs):
168 169 170 171 back_off_head = ('' if 172 self.get_back_off_head() == None 173 else 174 self.DELIMITER_CONFIGURATION+self.HEAD_BACK_OFF_DELIMITER+"="+self.get_back_off_head()) 175 back_off_dependent = ('' if 176 self.get_back_off_dependent() == None 177 else 178 self.DELIMITER_CONFIGURATION+self.DEPENDENT_BACK_OFF_DELIMITER+"="+self.get_back_off_dependent()) 179 180 181 n_gram = ('' if 182 self.get_n_gram() == None 183 else 184 self.DELIMITER_CONFIGURATION+self.N_GRAM_DELIMITER+"="+self.get_n_gram()) 185 186 n_gram_back_off = ('' if 187 self.get_n_gram_back_off() == None 188 else 189 self.DELIMITER_CONFIGURATION+self.N_GRAM_BACK_OFF_DELIMITER+"="+self.get_n_gram_back_off()) 190 191 add_dependency_type = ('' if 192 self.get_add_dependency_type() == None 193 else 194 self.DELIMITER_CONFIGURATION+self.ADD_DEPENDENCY_TYPE_DELIMITER+"="+str(self.get_add_dependency_type())) 195 196 semantic_property = ('' if 197 self.get_semantic_property() == None 198 else 199 self.DELIMITER_CONFIGURATION+self.SEMANTIC_PROPERTY_DELIMITER+"="+str(self.get_semantic_property())) 200 201 return (back_off_head 202 +back_off_dependent 203 +n_gram 204 +n_gram_back_off 205 +add_dependency_type 206 +semantic_property 207 +self.DELIMITER_CONFIGURATION)
208 209 210 211 # REDIFITION OF __eq__ TO COMPARE OBJECT BY THEIR ATTRIBUTES
212 - def __hash__(self):
213 return hash((self._back_off_head, self._back_off_dependent, 214 self._n_gram, self._n_gram_back_off, 215 self._add_dependency_type, self._semantic_property))
216
217 - def __eq__(self, other):
218 return (self._back_off_head, self._back_off_dependent, 219 self._n_gram, self._n_gram_back_off, 220 self._add_dependency_type, self._semantic_property) == (other.get_back_off_head(), 221 other.get_back_off_dependent(), 222 other.get_n_gram(), 223 other.get_n_gram_back_off(), 224 other.get_add_dependency_type(), 225 other.get_semantic_property())
226 227
228 -class Feature(object):
229 ''' 230 classdocs 231 ''' 232
233 - def __init__(self,name,value,feature_type, type_configuration,data_type):
234 ''' 235 Constructor 236 @param name: The name of the feature. 237 @param value: The number of occurences of the features. 238 @param feature_type: A value of L{FeatureType} 239 @param type_configuration: A L{FeatureTypeConfiguration} object 240 @param data_type A value of L{FeatureWekaDataType} 241 ''' 242 self._name = name 243 self._value = value 244 self._feature_type = feature_type 245 self._type_configuration = type_configuration 246 self._data_type = data_type
247
248 - def get_name(self):
249 return self._name
250
251 - def get_value(self):
252 return self._value
253
254 - def get_type(self):
255 return self._feature_type
256
257 - def get_type_configuration(self):
258 return self._type_configuration
259
260 - def get_data_type(self):
261 return self._data_type
262