Sentence
| 34 | |
| 35 | |
| 36 | class Sentence(object): |
| 37 | """Sentence""" |
| 38 | def __init__(self, fields, values): |
| 39 | for field, value in zip(fields, values): |
| 40 | if isinstance(field, Iterable): |
| 41 | for j in range(len(field)): |
| 42 | setattr(self, field[j].name, value) |
| 43 | else: |
| 44 | setattr(self, field.name, value) |
| 45 | self.fields = fields |
| 46 | |
| 47 | @property |
| 48 | def values(self): |
| 49 | """Returns an iterator containing all the features of one sentence""" |
| 50 | for field in self.fields: |
| 51 | if isinstance(field, Iterable): |
| 52 | yield getattr(self, field[0].name) |
| 53 | else: |
| 54 | yield getattr(self, field.name) |
| 55 | |
| 56 | def __len__(self): |
| 57 | """Get sentence length""" |
| 58 | return len(next(iter(self.values))) |
| 59 | |
| 60 | def __repr__(self): |
| 61 | """repr""" |
| 62 | return '\n'.join('\t'.join(map(str, line)) for line in zip(*self.values)) + '\n' |
| 63 | |
| 64 | def get_result(self): |
| 65 | """Returns json style result""" |
| 66 | output = {} |
| 67 | for field in self.fields: |
| 68 | if isinstance(field, Iterable) and not field[0].name.isdigit(): |
| 69 | output[field[0].name] = getattr(self, field[0].name) |
| 70 | elif not field.name.isdigit(): |
| 71 | output[field.name] = getattr(self, field.name) |
| 72 | return output |
| 73 | |
| 74 | |
| 75 | class Corpus(object): |
no outgoing calls
no test coverage detected