Red de conocimiento informático - Material del sitio web - Cómo utilizar la tecnología de aprendizaje profundo para entrenar un modelo de lenguaje de chatbot

Cómo utilizar la tecnología de aprendizaje profundo para entrenar un modelo de lenguaje de chatbot

Preprocesamiento de datos

De qué puede hablar el modelo también depende del corpus seleccionado. Si ya tiene los datos de chat sin procesar, puede usar SQL para consultar algunas conversaciones por palabra clave, es decir, seleccionar una biblioteca pequeña de una biblioteca grande para capacitación. A juzgar por algunos artículos, muchos algoritmos están en el nivel de preprocesamiento de datos. Por ejemplo, "Máquina neuronal consciente del mecanismo para la generación de respuestas de diálogo" describe la extracción de bibliotecas pequeñas de una biblioteca grande y luego fusionarlas y entrenarlas para crear una única. diálogo.

Para inglés, debemos comprender NLTK, que proporciona funciones como carga de corpus, normalización de corpus, clasificación de corpus, anotación de parte del discurso PoS y extracción semántica.

Otra potente biblioteca de herramientas es CoreNLP, una herramienta de código abierto de Stanford con funciones como anotación de entidades, extracción semántica y soporte en varios idiomas.

Los siguientes dos contenidos principales:

Segmentación de palabras chinas

Hay muchos SDK de segmentación de palabras chinas y muchos algoritmos de segmentación de palabras. Hay muchos artículos sobre el rendimiento. de diferentes SDK. Hizo una comparación. El código de muestra para la segmentación de palabras chinas es el siguiente.

# coding:utf8

'''' ?

¿Segmentador con chino ?

'''

importar jieba ?

importar langid

def segment_chinese_sentence(sentence):

'''

Devuelve oración segmentada.

'''

seg_list = jieba.cut(sentence, cut_all=False)

seg_sentence = u" ".join(seg_list)

return seg_sentence.strip().encode('utf8')

def process_sentence(sentence):

'''

Solo procesa oración en chino. p>

'''

if langid.classify(oración), ], y forma una prueba.

Iniciar entrenamiento

cp config.sample.ini config.ini # ¿modificar claves?

python deepqa2/train.py?

config.ini es el archivo de configuración, que se modifica según config.sample.ini. El tiempo de entrenamiento está determinado por épocas, tasa de aprendizaje, longitud máxima y número de pares de líneas.

deepqa2/train.py tiene aproximadamente 100 líneas y se utiliza para cargar el diccionario de datos, inicializar la sesión, el protector y el escritor de tensorflow, inicializar el modelo de neurona, iterar según la época y guardar el modelo en el disco. .

Una sesión es un diagrama de red que consta de marcadores de posición, variables, unidades, capas y salidas.

saver se utiliza para guardar modelos y también se puede utilizar para restaurar modelos.

modelo es la sesión en la que se instancia la variable.

El escritor es un recopilador que se utiliza para ver loss fn u otros datos de interés para el desarrollador. El protector guarda los resultados del escritor y luego los ve usando el tensorboard.

Modelo

El modelo se construye teniendo en cuenta la entrada, el estado, el máximo suave y la salida.

Defina la función de pérdida y use AdamOptimizer para iterar.

Por último, consulta la sección LOOP de formación.

Cada vez que entrenes, el modelo se almacenará en la ruta de guardado y el nombre de la carpeta se generará según el nombre del host y la marca de tiempo de la máquina.

Servicio

En TensorFlow, proporcionamos un módulo de servicio estándar: servicio de tensorflow, pero después de un largo período de investigación y lectura especial de "C++ Essentials", todavía no hemos encontrado el Hágalo bien y habrá una queja común de la comunidad de que el servicio de tensorflow no es fácil de aprender y usar. La comunidad también se queja en general de que el servicio de tensorflow es difícil de aprender y usar. Después del entrenamiento, use el siguiente script para iniciar el servicio. La parte de servicio de DeepQA2 todavía llama a la API de Python de TensorFlow.

cd DeepQA2/save/earning.cobra.vulcan.20170127.175256/deepqa2/serve?

cp db.sample.sqlite3 db.sqlite3 ?

python Manage.py RunServer 0.0.0.0:8000 ?

Pruebas

POST /api /v1 /question HTTP/1.1 ?

Host: 127.0.0.1:8000 ?

Tipo de contenido: aplicación/json ?

Autorización: Básica YWRtaW46cGFzc3dvcmQxMjM= ?

Control de caché: sin caché

{"message":"es bueno saberlo"}

respuesta ?

{

"rc":0,

"msg":"hello"

}

El código central del servicio se encuentra en server/api/chatbotmanager .py en.

Usar scripts

scripts/start_training.sh?Iniciar entrenamiento

scripts/start_tensorboard.sh?Iniciar Tensorboard

scripts/start_serving. sh?Start service

Evaluación del modelo

Actualmente, el código es altamente fácil de mantener, razón por la cual el proyecto DeepQA se ha reestructurado para aclarar el preprocesamiento de datos, la capacitación y los servicios. Cualquier cambio nuevo se puede agregar a deepqa2/models y luego modificarlo en train.py y chatbotmanager.py.

Áreas que necesitan mejorar

a. Nuevos modelos/rnn2.py, usando abandono. El abandono se utiliza actualmente en DeepQA.

b. La red seq2seq se proporciona en tensorflow rc0.12.x y se puede actualizar a la versión tf.

c. En el entrenamiento de fusión, el modelo actual solo tiene una biblioteca, y se debe diseñar un nuevo modelo para admitir bibliotecas grandes y pequeñas y diferentes pesos, como se describe en ¿Máquina neuronal consciente del mecanismo para la respuesta al diálogo? Generación.

d. El código admite la ejecución en múltiples computadoras y múltiples GPU.

e. El resultado de la capacitación actual es un par de control de calidad y una pregunta puede tener múltiples respuestas.

f Actualmente no hay forma de probar la precisión, una idea es proporcionar distractores directamente en el entrenamiento, ya que actualmente solo hay respuestas correctas, si se proporcionan respuestas incorrectas (cuantos más, mejor), se puede. Pruébelo usando el método recuerda_at_k.

Esto lo aprendí en "Robot Master", espero que te sea útil.