Webvectors es un conjunto de herramientas para ofrecer modelos semánticos vectoriales (en particular, incrustaciones de palabras basadas en predicciones, como en word2vec o ELMo ) a través de la web, lo que facilita la demostración de sus capacidades al público en general. Requiere Python >= 3.6 y usa Flask , Gensim y simple_elmo bajo el capó.
Demostraciones de trabajo:
El servicio puede integrarse en el servidor web Apache como una aplicación WSGI o ejecutarse como un servidor independiente utilizando Gunicorn (recomendamos la última opción).
Agregue la siguiente línea al archivo de configuración de Apache:
WSGIScriptAlias /WEBNAME "PATH/syn.wsgi"
, donde WEBNAME es el alias de su servicio en relación con la raíz del servidor (webvectors para http://example.com/webvectors
) y PATH es la ruta de su sistema de archivos al directorio WebVectors .
En todos los archivos *.wsgi
y *.py
en su directorio WebVectors , reemplace webvectors.cfg
en la cadena config.read('webvectors.cfg')
con la ruta absoluta al archivo webvectors.cfg
.
Configure su servicio utilizando el archivo de configuración webvectors.cfg
. Las configuraciones más importantes son:
Etiquetas
Los modelos pueden usar etiquetas arbitrarias asignadas a palabras (por ejemplo, etiquetas de parte del discurso, como en boot_NOUN ). Si sus modelos están entrenados en palabras con etiquetas, debe activar esto en webvectors.cfg
(variable use_tags
). Luego, WebVectors permitirá a los usuarios filtrar sus consultas por etiquetas. También debe especificar la lista de etiquetas permitidas (variable tags_list
en webvectors.cfg
) y la lista de etiquetas que se mostrarán al usuario (archivo tags.tsv
).
demonio de modelos
WebVectors utiliza un demonio que se ejecuta en segundo plano y en realidad procesa todas las tareas relacionadas con la incrustación. También puede ejecutarse en una máquina diferente, si lo desea. Por lo tanto, en webvectors.cfg
debes especificar host
y port
en el que escuchará este demonio. Después de eso, inicie el script del demonio word2vec_server.py
. Cargará los modelos y abrirá una toma de escucha. Este demonio debe estar activo permanentemente, por lo que es posible que desees iniciarlo usando la pantalla o algo como esto.
Modelos
La lista de modelos que desea utilizar está definida en el archivo models.tsv
. Consta de campos separados por tabulaciones:
El identificador de modelo se utilizará como nombre para las casillas de verificación en las páginas web y también es importante que en el archivo strings.csv
se utilice el mismo identificador para indicar los nombres de los modelos. El idioma del modelo se utiliza como argumento pasado a la función lematizadora; es una cadena simple con el nombre del idioma (por ejemplo, "inglés", "ruso", "francés").
Actualmente los modelos pueden estar en 4 formatos:
WebVectors detectará automáticamente el formato de los modelos y los cargará todos en la memoria. Los usuarios podrán elegir entre los modelos cargados.
Localización
WebVectors utiliza el archivo strings.csv
como fuente de cadenas localizadas. Es un archivo separado por comas con 3 campos:
De forma predeterminada, el idioma 1 es el inglés y el idioma 2 es el ruso. Esto se puede cambiar en webvectors.cfg
.
Plantillas
Las páginas web reales que se muestran al usuario se definen en los archivos templates/*.html
. Sintonízalos como desees. El menú principal está definido en base.html
.
Archivos de estadísticas
Si su aplicación no encuentra los archivos estáticos (bootstrap y js scripts), edite la variable static_url_path
en run_syn.py
. Deberías poner allí la ruta absoluta a la carpeta data
.
Sugerencias de consulta
Si desea que las sugerencias de consulta funcionen, no olvide compilar su propia lista de sugerencias (formato JSON). Se proporciona un ejemplo de dicha lista en data/example_vocab.json
. La URL real de esta lista debe indicarse en data/hint.js
.
Ejecutando WebVectors
Una vez que haya modificado todas las configuraciones de acuerdo con su flujo de trabajo, se haya asegurado de que las plantillas sean correctas para usted y haya iniciado el demonio de modelos, estará listo para iniciar el servicio. Si utiliza la integración de Apache , simplemente reinicie/recargue Apache . Si prefiere la opción independiente, ejecute el siguiente comando en el directorio raíz del proyecto:
gunicorn run_syn:app_syn -b address:port
donde dirección es la dirección en la que el servicio debe estar activo (puede ser localhost) y puerto es, bueno, el puerto para escuchar (por ejemplo, 9999).
Soporte para incrustaciones contextualizadas Puede activar el soporte para modelos de incrustación contextualizados (actualmente se admite ELMo). Para hacer eso:
Instalar el paquete simple_elmo
Descargue un modelo ELMo de su elección (por ejemplo, aquí).
Cree una proyección basada en tipos en formato word2vec
para un conjunto limitado de palabras (por ejemplo, 10 000), dado el modelo ELMo y un corpus de referencia. Para ello, utilice el script extract_elmo.py
que le proporcionamos:
python3 extract_elmo.py --input CORPUS --elmo PATH_TO_ELMO --outfile TYPE_EMBEDDING_FILE --vocab WORD_SET_FILE
Ejecutará el modelo ELMo sobre el corpus proporcionado y generará incrustaciones de tipo promedio estático para cada palabra en el conjunto de palabras. Se utilizarán como sustitutos léxicos.
Prepare un diccionario de frecuencias para usar con las visualizaciones contextualizadas, como un archivo de texto sin formato separado por tabulaciones, donde la primera columna contiene palabras y la segunda columna contiene sus frecuencias en el diccionario de referencia de su elección. La primera línea de este archivo debe contener un número entero que coincida con el tamaño del corpus en tokens de palabras.
En la sección [Token]
del archivo de configuración webvectors.cfg
, cambie use_contextualized
a True e indique las rutas a su token_model
(ELMo previamente entrenado), type_model
(la proyección basada en tipos que creó con nuestro script) y freq_file
, que es su diccionario de frecuencias.
En el campo ref_static_model
, especifique cualquiera de sus modelos estáticos de incrustación de palabras (solo su nombre), que desea utilizar como destino de hipervínculos de palabras en las páginas de visualización contextualizadas.
La página con sustitutos léxicos de ELMo estará disponible en http://YOUR_ROOT_URL/contextual/
En caso de cualquier problema, no dude en contactarnos:
http://www.aclweb.org/anthology/E17-3025
http://papers.nips.cc/paper/5021-distributed-representations-of-words-and-phrases-and-their-compositionality.pdf
http://flask.pocoo.org/
http://radimrehurek.com/gensim/
http://gunicorn.org/