Este repositorio contiene código para el entrenamiento y el uso del modelo SRL profundo descrito en: Etiquetado de rol semántico profundo: qué funciona y lo que sigue
Si usa nuestro código, cite nuestro documento de la siguiente manera:
@InProcedings {HE2017Deep,
Title = {Etiquetado de rol semántico profundo: qué funciona y lo que sigue},
Autor = {He, Luheng y Lee, Kenton y Lewis, Mike y Zettlemoyer, Luke},
booktitle = {Actas de la reunión anual de la Asociación de Lingüística Computacional},
año = {2017}
}
./scripts/fetch_required_data.sh Descomprima los modelos (en recursos) bajo el directorio neural_srl. Por ejemplo, en el directorio de CodeBase:
tar -zxvf resources/conll05_model.tar.gz
Aquí hay una lista de modelos previos a la aparición:
conll05_model.tar.gz : modelo único entrenado en el conjunto de datos Conll-2005.conll05_ensemble.tar.gz : 5 Modelo Ensemble entrenado en el conjunto de datos Conll-2005.conll05_propid_model.tar.gz : Tren del modelo de identificación de predicado en Conll-2005.conll2012_model.tar.gz : modelo único entrenado en el conjunto de datos Conll-2012.conll2012_ensemble.tar.gz : 5 Modelo Ensemble entrenado en el conjunto de datos Conll-2012.conll2012_propid_model.tar.gz : tren modelo de identificación de predicado en Conll-2012. python python/interactive.py --model conll05_model/ --pidmodel conll05_propid_model
Correr:
./scripts/run_end2end.sh sample_data/sentences_with_predicates.txt temp/sample.out (en CPU) o:
./scripts/run_end2end.sh sample_data/sentences_with_predicates.txt temp/sample.out ${gpu_id} (en GPU)
Tenga en ./conll05_ensemble que el script agrega /usr/local/cuda/... a PATH y CUDA_LD_LIBRARY_PATH , y carga modelos previos a ./conll05_propid_model
El archivo de entrada contiene oraciones tokenizadas, una oración por línea.
El archivo de salida contendrá algo como:
John le dijo a Pat que cortara el árbol.
Predicado: dicho (1)
A0: John
V: Dado
A2: Pat
A1: cortar el árbol
John le dijo a Pat que cortara el árbol.
Predicado: corte (4)
A0: Pat
V: cortado
A1: el árbol
predict.py carga todo el archivo de entrada en la memoria, por lo que sería mejor mantener el número de oraciones en cada archivo bajo 50,000. Para replicar los resultados en los conjuntos de datos Conll-2005 y Conll-2012, siga los pasos a continuación.
Los datos son proporcionados por: Conll-2005 Tarea compartida, pero las palabras originales son del conjunto de datos Penn Treebank, que no está disponible públicamente. Si tiene el Corpus PTB, puede ejecutar:
./scripts/fetch_and_make_conll05_data.sh /path/to/ptb/
Debe seguir las instrucciones a continuación para obtener datos Conll-2012 Conll-2012, esto daría como resultado un directorio llamado /path/to/conll-formatted-ontonotes-5.0 . Correr:
./scripts/make_conll2012_data.sh /path/to/conll-formatted-ontonotes-5.0
Ver uso de python/train.py :
python python/predict.py -h
O como un comienzo rápido, ejecute el modelo entrenado (requiere Conll05_ensemble):
./scripts/run_predict_conll05.sh ${gpu_id} o:
./scripts/run_predict_conll05.sh para ejecutar en CPU.
Ejecute el modelo de extremo a extremo con predicción (requiere Conll05_ensemble y Conll05_Propid_Model):
./scripts/run_end_to_end_conll05.sh ${gpu_id}
Ejecutar el modelo Conll-2012 funciona de manera similar.
Ver uso de python/train.py :
python python/train.py -h
Entrene un modelo SRL (con predicados de oro) con archivos de configuración predefinidos: ./scripts/run_train.sh ${gpu_id}
Entrene un predicado identifider: ./scripts/run_propid_train.sh ${gpu_id}
Tenga en cuenta que en el tiempo de entrenamiento, train.py se ejecuta en el modelo FAST_RUN , lo que dará como resultado una gran sobrecarga de compilación de modelos. Puede tomar hasta varios minutos para un modelo de 2 capas, y hasta 8 horas para un modelo de 8 capas con abandono variacional.
Consulte los archivos en sample_data y las explicaciones a continuación sobre cómo formatear la entrada del modelo.
Cada línea contiene exactamente una muestra de entrenamiento, que tiene la información de predicado (índice en las oraciones, a partir de 0), la oración tokenizada y una secuencia de etiquetas. Si las etiquetas de oro no existen, solo use una secuencia de OS. La oración y la secuencia de la etiqueta se separan con un ||| símbolo. Usamos el formato IOB2. Todas las fichas y símbolos están separados por un espacio blanco arbitrario.
Líneas de ejemplo:
2 Mis gatos aman los sombreros. ||| B-A0 I-A0 BV B-A1 O
El formato es similar al anterior definido, excepto que cada línea corresponde a una oración de entrada, y no se proporciona información de predicado. Los prediadores corresponden a las etiquetas V y todas las demás palabras están etiquetadas con las etiquetas O.
Líneas de ejemplo:
A mis gatos les encantan los sombreros, dicen. ||| Oovooovo
config contiene algunos archivos de configuración para capacitar al modelo SRL ( srl_config.json y srl_small_config.json ), así como para capacitar el modelo de predicado-id ( propid_config.json )
¡Póngase en contacto con Luheng, él si tiene alguna pregunta!