Формат ввода BERT для прогнозирования следующего предложения в python NLP

#python #json #nlp #bert-language-model #huggingface-datasets

#питон #json #нлп #берт-язык-модель #обнимашки-наборы данных

Вопрос:

Я пытаюсь обучить модель БЕРТА предсказанию правильного следующего высказывания. Мне дается запутанный разговор, и я пытаюсь выбрать следующее высказывание из списка кандидатов из 100, которое может не содержать правильного следующего высказывания. Я пытаюсь создать модель, обученную данным, которые поступают в этот ввод:

 { "data-split": "train",  "example-id": 0,  "messages-so-far": [  {  "date": "2007-02-13",  "speaker": "participant_0",  "time": "07:31",  "utterance": "hi guys, i need some urgent help. i "rm -rf'd" a direcotry. any way i can recover it?"  },  {  "date": "2007-02-13",  "speaker": "participant_1",  "time": "07:31",  "utterance": "participant_0 : in short, no."  },  {  "date": "2007-02-13",  "speaker": "participant_0",  "time": "07:31",  "utterance": "participant_1 , are you sure?"  },  ...  ],  "options-for-correct-answers": [  {  "candidate-id": "3d06877cb2f0c1861b248860fa60ce07",  "speaker": "participant_1",  "utterance": ""Are you sure?" is something rm -rf never asks.."  }  ],  "options-for-next": [  {  "candidate-id": "ace962b708d559fc462b7fdd9b6fc093",  "speaker": "participant_1",  "utterance": "(and if hardware is detected correctly, of course)"  },  {  "candidate-id": "349efca9c3d5986a87d95fb90c1b7c04",  "speaker": "participant_2",  "utterance": "how do i do a simulated reboot"  },  ...  ],  "scenario": 1   }  

Поле сообщения-до сих пор содержит контекст диалогового окна, а параметры для следующего содержит кандидатов для выбора следующего высказывания. Правильное следующее высказывание указывается в поле варианты правильных ответов. Сценарий поля относится к подзадаче.

В какой формат я должен перевести эти данные? В настоящее время он находится в JSON. Я знаю, что это должен быть файл tsv, но мне трудно понять, что должно быть в столбцах.

Я написал код, который переводит его в этот формат

но я не думаю, что это то, чего я хочу.

Для справки это код, который обрабатывает его в этом формате. Любые предложения о том, как изменить это на то, что я хочу, чтобы можно было ввести в файл TSV для обучения БЕРТА, были бы потрясающими!

 import json  file_path = "/Users/madison/Desktop/Final 1671/NOESIS-II/subtask1/data/task-1.advising.train.json"  with open(file_path) as json_file:  records = (json.load(json_file))   example_id = [] last_sentence = [] next_sentence = []  for row in records:   example_id.append(row['example-id'])  last_sentence.append(row['messages-so-far'][-1]['utterance'])   if len(row['options-for-correct-answers']) != 0:  next_sentence.append(row['options-for-correct-answers'][0]['utterance'])  else:  next_sentence.append("None")   import pandas as pd  data = {"example_id": example_id, "last_sentence": last_sentence, "next_sentence": next_sentence} df = pd.DataFrame(data)  print(df.head())