Source pour l'interface de chat à deux personnes utilisé pour collecter l'ensemble de données Visdial (arxiv.org/abs/1611.08669) sur Amazon Mechanical Turk.
Si vous trouvez ce code utile, envisagez de citer notre travail:
@inproceedings{visdial,
title={{V}isual {D}ialog},
author={Abhishek Das and Satwik Kottur and Khushi Gupta and Avi Singh
and Deshraj Yadav and Jos'e M.F. Moura and Devi Parikh and Dhruv Batra},
booktitle={Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition},
year={2017}
}
L'interface de chat en temps réel est construite à l'aide de node.js et socket.io. Nous utilisons Redis pour maintenir un pool d'images pour les tubes en direct et toutes les données résident enfin dans une base de données MySQL.
Une table de base de données stocke les images de l'ensemble de données CoCo chacune avec une légende choisie au hasard. Un lot d'images de ce tableau est ensuite poussé vers une liste Redis pour lancer des tubes. Le serveur Web correspondant à l'interface de chat associe deux travailleurs AMT, leur attribue des rôles (questionneur ou répondeur) et affiche l'interface correspondante, choisit une image de la liste Redis pour collecter des données sur et enregistre leur conversation dans la base de données, marquant également cette image en tant que `` complet '' une fois le coup terminé. Cela se produit en parallèle afin que les travailleurs ne soient pas en attente, et le serveur garantit que les travailleurs ont des ID uniques. Les déconnexions sont gérées gracieusement - le travailleur restant est invité à continuer à poser des questions ou à fournir des faits (légendes) jusqu'à 10 messages. Une fois les hits terminés, les scripts dans mturk_scripts/approve peuvent être utilisés pour examiner, approuver, rejeter des coups et payer les travailleurs.
Les images pops de la liste Redis, récupèrent les données pertinentes des tables MySQL, rend l'interface de chat et associe les travailleurs sur AMT, enregistre des données soumises aux tables MySQL
npm install (à partir du dossier nodejs )example.config.js à config.js et définissez les informations d'identification MySQL et Redisstatic/dataset vers /path/to/mscoco/images/index.html Line 276node index.js devrait désormais servir l'interface à 127.0.0.1:5000Scripts pour configurer la base de données MySQL, remplir la liste Redis et approuver / rejeter des coups sûrs
example.config.json à config.json et définissez les informations d'identification MySQL. from_timestamp est l'horodatage Unix avant de lancer un lot de succèscreateDatabase.py et fillDatabase.py Créer des tables MySQL, remplissez-la d'images et de légendes de Coco et générer la liste Redis pour un lot de succèscreateHits.py lance des succès sur AMT mturk_scripts/approve )example.config.json à config.json et définir les informations d'identification MySQLexample.constants.py à constants.py et définir des informations d'identification AMTreviewHits.py obtient des coups finaux et les sauve à amthitsQues.csv et amthitsAns.csv pour examenapproveHits.py pour marquer des coups approuvés pour le paiement et reviewRejectedHits.py , rejectHits.py pour rejeter des hits, et enfin payWorkers.py pour traiter les paiementsLes parties de ce code (scripts MTURK) sont adaptées du projet simple-AMT de @ jcjohnson.
BSD