Webvectors est une boîte à outils permettant de servir des modèles sémantiques vectoriels (en particulier des intégrations de mots basées sur la prédiction, comme dans word2vec ou ELMo ) sur le Web, ce qui facilite la démonstration de leurs capacités au grand public. Il nécessite Python >= 3.6 et utilise Flask , Gensim et simple_elmo sous le capot.
Démonstrations de travail :
Le service peut être soit intégré au serveur Web Apache en tant qu'application WSGI, soit exécuté en tant que serveur autonome à l'aide de Gunicorn (nous recommandons cette dernière option).
Ajoutez la ligne suivante au fichier de configuration Apache :
WSGIScriptAlias /WEBNAME "PATH/syn.wsgi"
, où WEBNAME est l'alias de votre service par rapport à la racine du serveur (webvectors pour http://example.com/webvectors
) et PATH est le chemin de votre système de fichiers vers le répertoire WebVectors .
Dans tous les fichiers *.wsgi
et *.py
de votre répertoire WebVectors , remplacez webvectors.cfg
dans la chaîne config.read('webvectors.cfg')
par le chemin absolu du fichier webvectors.cfg
.
Configurez votre service à l'aide du fichier de configuration webvectors.cfg
. Les paramètres les plus importants sont :
Balises
Les modèles peuvent utiliser des balises arbitraires attribuées aux mots (par exemple, des balises de partie du discours, comme dans boot_NOUN ). Si vos modèles sont formés sur des mots avec des balises, vous devez activer cela dans webvectors.cfg
(variable use_tags
). Ensuite, WebVectors permettra aux utilisateurs de filtrer leurs requêtes par balises. Vous devez également spécifier la liste des balises autorisées (variable tags_list
dans webvectors.cfg
) et la liste des balises qui seront présentées à l'utilisateur (fichier tags.tsv
).
Démon de modèles
WebVectors utilise un démon qui s'exécute en arrière-plan et traite réellement toutes les tâches liées à l'intégration. Il peut également fonctionner sur une autre machine, si vous le souhaitez. Ainsi, dans webvectors.cfg
vous devez spécifier host
et port
sur lesquels ce démon écoutera. Après cela, démarrez le script démon actuel word2vec_server.py
. Il chargera les modèles et ouvrira une socket d’écoute. Ce démon doit être actif en permanence, vous souhaiterez donc peut-être le lancer en utilisant screen ou quelque chose comme ça.
Modèles
La liste des modèles que vous souhaitez utiliser est définie dans le fichier models.tsv
. Il se compose de champs séparés par des tabulations :
L'identifiant du modèle sera utilisé comme nom pour les cases à cocher dans les pages Web, et il est également important que dans le fichier strings.csv
, le même identifiant soit utilisé pour désigner les noms de modèles. La langue du modèle est utilisée comme argument passé à la fonction lemmatiseur, c'est une simple chaîne avec le nom de la langue (par exemple "anglais", "russe", "français").
Les modèles peuvent actuellement être sous 4 formats :
WebVectors détectera automatiquement le format des modèles et les chargera tous en mémoire. Les utilisateurs pourront choisir parmi les modèles chargés.
Localisation
WebVectors utilise le fichier strings.csv
comme source des chaînes localisées. Il s'agit d'un fichier séparé par des virgules avec 3 champs :
Par défaut, la langue 1 est l'anglais et la langue 2 est le russe. Cela peut être modifié dans webvectors.cfg
.
Modèles
Les pages Web réelles présentées à l'utilisateur sont définies dans les fichiers templates/*.html
. Accordez-les comme vous le souhaitez. Le menu principal est défini dans base.html
.
Fichiers statistiques
Si votre application ne trouve pas les fichiers statiques (scripts bootstrap et js), modifiez la variable static_url_path
dans run_syn.py
. Vous devez y mettre le chemin absolu du dossier data
.
Conseils de requête
Si vous souhaitez que les indicateurs de requête fonctionnent, n'oubliez pas de compiler votre propre liste d'indicateurs (format JSON). Un exemple d'une telle liste est donné dans data/example_vocab.json
. La véritable URL de cette liste doit être indiquée dans data/hint.js
.
Exécution de WebVectors
Une fois que vous avez modifié tous les paramètres en fonction de votre flux de travail, que vous vous êtes assuré que les modèles vous conviennent et que vous avez lancé le démon de modèles, vous êtes prêt à démarrer réellement le service. Si vous utilisez l'intégration Apache , redémarrez/rechargez simplement Apache . Si vous préférez l'option autonome, exécutez la commande suivante dans le répertoire racine du projet :
gunicorn run_syn:app_syn -b address:port
où adresse est l'adresse sur laquelle le service doit être actif (peut être localhost) et port est, eh bien, le port à écouter (par exemple, 9999).
Prise en charge des intégrations contextualisées Vous pouvez activer la prise en charge des modèles d'intégration contextualisés (actuellement, ELMo est pris en charge). Pour ce faire :
Installer le paquet simple_elmo
Téléchargez un modèle ELMo de votre choix (par exemple, ici).
Créer une projection basée sur le type au format word2vec
pour un ensemble limité de mots (par exemple 10 000), compte tenu du modèle ELMo et d'un corpus de référence. Pour cela, utilisez le script extract_elmo.py
que nous fournissons :
python3 extract_elmo.py --input CORPUS --elmo PATH_TO_ELMO --outfile TYPE_EMBEDDING_FILE --vocab WORD_SET_FILE
Il exécutera le modèle ELMo sur le corpus fourni et générera des intégrations de types moyennes statiques pour chaque mot de l'ensemble de mots. Ils seront utilisés comme substituts lexicaux.
Préparez un dictionnaire de fréquences à utiliser avec les visualisations contextualisées, sous forme de fichier en texte brut séparé par des tabulations, où la première colonne contient des mots et la deuxième colonne contient leurs fréquences dans le dictionnaire de référence de votre choix. La première ligne de ce fichier doit contenir un entier correspondant à la taille du corpus en jetons de mots.
Dans la section [Token]
du fichier de configuration webvectors.cfg
, basculez use_contextualized
sur True et indiquez les chemins d'accès à votre token_model
(ELMo pré-entraîné), type_model
(la projection basée sur le type que vous avez créée avec notre script) et freq_file
qui est votre dictionnaire des fréquences.
Dans le champ ref_static_model
, spécifiez l'un de vos modèles d'intégration de mots statiques (juste son nom), que vous souhaitez utiliser comme cible des hyperliens à partir de mots dans les pages de visualisation contextualisées.
La page avec les substituts lexicaux ELMo sera disponible sur http://YOUR_ROOT_URL/contextual/
En cas de problème, n'hésitez pas à nous contacter :
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/