Código NeuralTemplateGen- Función peine

Permítanme hablar de este modelo está haciendo -

breve introducción

Basado Encoder-Decoderrealización de la modelo NLG generación de texto se ha convertido en la corriente principal, pero está presente, tal como (1) no puede interpretarse, (2) es difícil para seleccionar el contenido o prácticamente hablando estas desventajas.

Este documento se decodermejoró, utilizando Markov Semi Ocultos HSMMModelos como un decodificador, este modelo se puede obtener aprendiendo plantillas también son controlables y explicativo.

El modelo se puede hacer automáticamente hablan selección de puntos y clasificación , generación de plantillas de texto , ranuras plantilla para llenar varios procesos para obtener finalmente una palabras completas.

A partir de las cuatro áreas de introducir el código de función.

En primer lugar, la preparación de datos y datos

1,1 de código abierto conjunto de datos E2E

E2EEs uno de los más grandes de alimentos y bebidas campo de conjunto de datos de código abierto. NM de uso común. Es una frase de palabras en un proceso.

  • MR: (representación significado textual) es la "palabra", similar al nombre de la propiedad y el valor de las propiedades
  • ref: generación puede leer frases

A Ejemplos mr

name[The Vaults], 
eatType[pub], 
priceRange[more than £30], 
customer rating[5 out of 5], 
near[Café Adriatic]

Que corresponde a la frase generada

Near Café Adriatic is a five star rated, high priced pub called The Vaults.
The Vaults is a 5 stars pub with middle prices in Café Adriatic.
The Vaults Pub is close to Café Adriatic, it is five star rated and it has high prices
The Vaults is near Café Adriatic, it's a pub that ranges more than 30 and customers rate it 5 out of 5.
The Vaults is a five star, expensive public house situated close to Café Adriatic
There is an expensive, five-star pub called The Vaults located near Café Adriatic.
The Vaults is a local pub with a 5 star rating and prices starting at £30. You can find it near Café Adriatic.
The Vaults is a pub with menu items more than £30 and a customer rating of 5 out of 5. The Vaults is located near Café Adriatic.
The Vaults with a amazing 5 out of 5 customer rating, is a pub near the Café Adriatic.  Menu price are more than £30 per item.
Rated 5 star by diners, The Vaults offers Pub fair near Café Adriatic.
The Vaults in  Café Adriatic is a great 5 stars pub with middle prices.
The Vaults costs more than 30 pounds and has a 5 out of 5 rating.  It is a pub located near Café Adriatic.
The Vaults is a pub that costs more than 30 pounds and has a 5 out of 5 rating.  It is located near Café Adriatic.
The pub Café Adriatic ranges more than 30 and is rated 5 out of 5 its near The Vaults.
The Vaults is an expensive, five-star pub located near Café Adriatic.

artículo nota

1. Generar una clase están hechos descritos, por ejemplo es un restaurante familiar, pero no hay ninguna descripción de
2. La misma muestra puede tener diferentes valores en algunas dimensiones, como los precios de los alimentos, se consideró más apropiado , se consideró más caro.
3. En una muestra de cada dimensión es sólo un valor, por ejemplo, un restaurante tiene una variedad de cocina, pero la cocina es sólo un valor para cada muestra (japonés, chino, platos italianos)

1.2 Uso de Datos

  1. origen y de destino
  • src_train Los datos, atributos y valores de atributos, el número total de 42061, el número de de-énfasis 4862
  • train Secuencia, frases generadas, el número total de 42061, el número de de-énfasis 40785
  1. campo insource
['customerrating', 'name', 'area', 'food', 'near', 'priceRange', 'eatType']

1.3 Preparación de datos

Actualmente ruta de datos data/sub_pathse incluye a continuación src_train.txt, tgt_train.txt, train.txt, src_test.txt, tgt_test.txt, test.txt, src_valid.txt, tgt_valid.txty valid.txtdocumentos,

src_*.txtEstructurado archivos de datos, tgt_*.txtel archivo es de texto legible.

Pero el modelo de formación es necesaria train.txty valid.txtarchivos. Es cómo conseguirlo?

Puede llevar a cabo

python data/make_e2e_labedata.py train > train.txt
python data/make_e2e_labedata.py valid > valid.txt

Este proceso es una etiqueta y datos originales exactamente los mismos que los del valor de ranura generado a partir del texto.
Para el castaño:

Los datos originales:

name: The Vaults
eatType: pub
priceRange: more than £ 30
customerrating: 5 out of 5
near: Café Adriatic 

texto generado:

The Vaults pub near Café Adriatic has a 5 star rating . Prices start at £ 30 .

Sólo se puede ver name, eatTypey nearestos atributos valores de atributos generación aparecido en el texto correspondiente, por lo que marcamos con la ubicación y atributos id, id es la misma puntuacion.

A continuación, el resultado de este ejemplo es como sigue

[(0, 2, idx('name')), (2, 3, idx('eatType')), (4, 6, idx('near')), (11, 12, idx('unknow')), (17, 18, idx('unknow'))]

Esto nos ayudará a conocer la ubicación y el tipo de plantillas de relación.

En segundo lugar, el proceso de formación

python chsmm.py \
    -data data/labee2e/ \
    -emb_size 300 \
    -hid_size 300 \
    -layers 1 \
    -K 55 \
    -L 4 \
    -log_interval 200 \
    -thresh 9 \
    -emb_drop \
    -bsz 15 \
    -max_seqlen 55 \
    -lr 0.5 \
    -sep_attn \
    -max_pool \
    -unif_lenps \
    -one_rnn \
    -Kmul 5 \
    -mlpinp \
    -onmt_decay \
    -cuda \
    -seed 1818 \
    -save models/chsmm-e2e-300-55-5.pt

El proceso principal es la siguiente:

  • El malestar de la muestra
  • make_combo_targs: Las palabras y copiar la información en un solo tensor de
  • make_masks: Debido a la generación puede ser nuevas palabras en el texto, en el seguimiento serán desechados, es la máscara. Y hay dos operaciones, una es directamente para eliminar la palabra, hay un promedio
  • get_uniq_fields: Cada lote de campos que se rellenan a la longitud máxima

En tercer lugar, la extracción de plantilla

Este se genera principalmente plantilla, o en el ejemplo anterior, se genera el molde con el siguiente ranura.

Aquí Insertar imagen Descripción
Después de guardar la plantilla dibujada bajo segs / ruta. Plantilla método de generación es el siguiente:

El uso de métodos no autorregresivos:

python chsmm.py -data data/sub_path/ -emb_size 300 -hid_size 300 -layers 1 -K 55 -L 4 -log_interval 200 -thresh 9 -emb_drop -bsz 16 -max_seqlen 55 -lr 0.5  -sep_attn -max_pool -unif_lenps -one_rnn -Kmul 5 -mlpinp -onmt_decay -cuda -load models/e2e-55-5.pt -label_train | tee segs/seg-e2e-300-55-5.txt

En cuarto lugar, la generación de texto

Una vez que tenga modelos y plantillas, puede generar los amigos de texto. (En realidad un proceso de selección de plantilla y llenar la ranura.)

autorregresivo generación del modelo:

python chsmm.py -data data/sub_path/ -emb_size 300 -hid_size 300 -layers 1 -dropout 0.3 -K 60 -L 4 -log_interval 100 -thresh 9 -lr 0.5 -sep_attn -unif_lenps -emb_drop -mlpinp -onmt_decay -one_rnn -max_pool -gen_from_fi data/labee2e/src_uniq_valid.txt -load models/e2e-60-1-far.pt -tagged_fi segs/seg-e2e-60-1-far.txt -beamsz 5 -ntemplates 100 -gen_wts '1,1' -cuda -min_gen_tokes 0 > gens/gen-e2e-60-1-far.txt

- gen_from_ficon la parte posterior del archivo de datos está estructurada
- tagged_fiseguido de la destrucción de nuestra plantilla buena
- loadentrenamos el modelo
- gens/mantener el texto de la trayectoria de próxima generación.

Nota formato generado resultados: <texto> ||| <plantilla fragmentos> realmente necesita para mantener sólo con texto.

Publicados 120 artículos originales · ganado elogios 35 · vistas 170 000 +

Supongo que te gusta

Origin blog.csdn.net/u012328476/article/details/103820529
Recomendado
Clasificación