| 48 | |
| 49 | |
| 50 | def align(dataset_name, question_string, data, ground_truth_datas): |
| 51 | answer_list= [] |
| 52 | origin_data = [j for j in ground_truth_datas if j[question_string] == data[question_string]][0] |
| 53 | if dataset_name == 'cwq': |
| 54 | if 'answers' in origin_data: |
| 55 | answers = origin_data["answers"] |
| 56 | else: |
| 57 | answers = origin_data["answer"] |
| 58 | for answer in answers: |
| 59 | alias = answer['aliases'] |
| 60 | ans = answer['answer'] |
| 61 | alias.append(ans) |
| 62 | answer_list.extend(alias) |
| 63 | |
| 64 | elif dataset_name == 'webqsp': |
| 65 | answers = origin_data["Parses"] |
| 66 | for answer in answers: |
| 67 | for name in answer['Answers']: |
| 68 | if name['EntityName'] == None: |
| 69 | answer_list.append(name['AnswerArgument']) |
| 70 | else: |
| 71 | answer_list.append(name['EntityName']) |
| 72 | |
| 73 | elif dataset_name == 'grailqa': |
| 74 | answers = origin_data["answer"] |
| 75 | for answer in answers: |
| 76 | if "entity_name" in answer: |
| 77 | answer_list.append(answer['entity_name']) |
| 78 | else: |
| 79 | answer_list.append(answer['answer_argument']) |
| 80 | |
| 81 | elif dataset_name == 'simpleqa': |
| 82 | answers = origin_data["answer"] |
| 83 | answer_list.append(answers) |
| 84 | |
| 85 | elif dataset_name == 'qald': |
| 86 | answers = origin_data["answer"] |
| 87 | for answer in answers: |
| 88 | answer_list.append(answers[answer]) |
| 89 | |
| 90 | elif dataset_name == 'webquestions': |
| 91 | answer_list = origin_data["answers"] |
| 92 | |
| 93 | elif dataset_name == 'trex' or dataset_name == 'zeroshotre': |
| 94 | answers = origin_data["answer"] |
| 95 | answer_list.append(answers) |
| 96 | |
| 97 | elif dataset_name == 'creak': |
| 98 | answer = origin_data['label'] |
| 99 | answer_list.append(answer) |
| 100 | |
| 101 | return list(set(answer_list)) |
| 102 | |
| 103 | def check_string(string): |
| 104 | return "{" in string |