| 138 | return precision, recall, f1 |
| 139 | |
| 140 | def score_opinion(self): |
| 141 | assert len(self.predictions) == len(self.goldens) |
| 142 | golden_set = set() |
| 143 | predicted_set = set() |
| 144 | for i in range(self.data_num): |
| 145 | golden_opinion_spans = self.get_spans(self.goldens[i], self.sen_lengths[i], self.tokens_ranges[i], 2) |
| 146 | for spans in golden_opinion_spans: |
| 147 | golden_set.add(str(i) + '-' + '-'.join(map(str, spans))) |
| 148 | |
| 149 | predicted_opinion_spans = self.get_spans(self.predictions[i], self.sen_lengths[i], self.tokens_ranges[i], 2) |
| 150 | for spans in predicted_opinion_spans: |
| 151 | predicted_set.add(str(i) + '-' + '-'.join(map(str, spans))) |
| 152 | |
| 153 | correct_num = len(golden_set & predicted_set) |
| 154 | precision = correct_num / len(predicted_set) if len(predicted_set) > 0 else 0 |
| 155 | recall = correct_num / len(golden_set) if len(golden_set) > 0 else 0 |
| 156 | f1 = 2 * precision * recall / (precision + recall) if (precision + recall) > 0 else 0 |
| 157 | return precision, recall, f1 |
| 158 | |
| 159 | def score_uniontags(self): |
| 160 | assert len(self.predictions) == len(self.goldens) |