Cómo dividir los datos de la conversación en pares de (Contexto, Respuesta)

Estoy usando el modelo Gensim Doc2Vec, tratando de agrupar partes de las conversaciones de atención al cliente. Mi objetivo es dar al equipo de soporte una sugerencia de respuesta automática.

Figura 1: muestra un ejemplo de conversaciones donde la pregunta del usuario se responde en la siguiente línea de conversación, lo que facilita la extracción de datos:

durante la conversacion"Hola" y"Nuestras oficinas están ubicadas en Nueva York" debe ser sugerido

Figura 2: describe una conversación donde las preguntas y respuestas no están sincronizadas

durante la conversacion"Hola" y"Nuestras oficinas están ubicadas en Nueva York" debe ser sugerido

Figura 3: describe una conversación en la que el contexto para la respuesta se construye con el tiempo, y para fines de clasificación (supongo), algunas de las líneas son redundantes.

durante la conversacion"Aquí hay un enlace para la cuenta de prueba gratuita" debe ser sugerido

Tengo los siguientes datos por línea de conversación (simplificado):
quién escribió la línea (usuario o agente), texto, marca de tiempo

Estoy usando el siguiente código para entrenar a mi modelo:

from gensim.models import Doc2Vec
from gensim.models.doc2vec import TaggedLineDocument
import datetime

print('Creating documents',datetime.datetime.now().time())
context = TaggedLineDocument('./test_data/context.csv')

print('Building model',datetime.datetime.now().time())

model = Doc2Vec(context,size = 200, window = 10, min_count = 10, workers=4)
print('Training...',datetime.datetime.now().time())

for epoch in range(10):
    print('Run number :',epoch)
    model.train(context)

model.save('./test_data/model')

Q: ¿Cómo debo estructurar mis datos de entrenamiento y qué heurística podría aplicarse para extraerlos de los datos sin procesar?

Respuestas a la pregunta(1)

Su respuesta a la pregunta