| 157 | |
| 158 | |
| 159 | class Document(object): |
| 160 | def __init__(self, doc_id, text, ents=[]): |
| 161 | self.doc_id = doc_id |
| 162 | self.text = text |
| 163 | self.ents = ents |
| 164 | self.sents = self.extract_sentences() |
| 165 | |
| 166 | def extract_sentences(self): |
| 167 | offset = 0 |
| 168 | ent_iter = iter(self.ents) |
| 169 | ent = next(ent_iter, None) |
| 170 | sents = [] |
| 171 | for text in self.text.split('。'): |
| 172 | sent_ents = [] |
| 173 | while (ent is not None and |
| 174 | ent.start_pos >= offset and |
| 175 | ent.end_pos <= offset + len(text)): |
| 176 | sent_ents.append(ent.offset(-offset)) |
| 177 | ent = next(ent_iter, None) |
| 178 | sent = Sentence(self.doc_id, offset, text, sent_ents) |
| 179 | sents.append(sent) |
| 180 | offset += len(text) + 1 |
| 181 | return sents |
| 182 | |
| 183 | def pad(self, pad_left=0, pad_right=0, pad_val=" "): |
| 184 | text = pad_left * pad_val + self.text + pad_right * pad_val |
| 185 | ents = self.ents.offset(pad_left) |
| 186 | return Document(self.doc_id, text, ents) |
| 187 | |
| 188 | def _repr_html_(self,portid): |
| 189 | sent = Sentence(self.doc_id, offset=0, text=self.text, ents=self.ents) |
| 190 | return sent._repr_html_(portid) |
| 191 | |
| 192 | |
| 193 | class Documents(object): |
no outgoing calls
no test coverage detected