(predicted, golden, lengths, ignore_index=-1)
| 60 | |
| 61 | |
| 62 | def score_opinion(predicted, golden, lengths, ignore_index=-1): |
| 63 | assert len(predicted) == len(golden) |
| 64 | golden_set = set() |
| 65 | predict_set = set() |
| 66 | for i in range(len(golden)): |
| 67 | golden_spans = get_opinions(golden[i], lengths[i], ignore_index) |
| 68 | for l, r in golden_spans: |
| 69 | golden_set.add('-'.join([str(i), str(l), str(r)])) |
| 70 | |
| 71 | predict_spans = get_opinions(predicted[i], lengths[i], ignore_index) |
| 72 | for l, r in predict_spans: |
| 73 | predict_set.add('-'.join([str(i), str(l), str(r)])) |
| 74 | |
| 75 | correct_num = len(golden_set & predict_set) |
| 76 | precision = correct_num / len(predict_set) if len(predict_set) > 0 else 0 |
| 77 | recall = correct_num / len(golden_set) if len(golden_set) > 0 else 0 |
| 78 | f1 = 2 * precision * recall / (precision + recall) if (precision + recall) > 0 else 0 |
| 79 | return precision, recall, f1 |
| 80 | |
| 81 | |
| 82 | def find_pair(tags, aspect_spans, opinion_spans): |
nothing calls this directly
no test coverage detected