{"id":18439502,"url":"https://github.com/idiap/gile","last_synced_at":"2025-10-07T04:24:13.561Z","repository":{"id":144962045,"uuid":"170688393","full_name":"idiap/gile","owner":"idiap","description":"A generalized input-label embedding for text classification","archived":false,"fork":false,"pushed_at":"2019-12-06T17:34:52.000Z","size":41061,"stargazers_count":24,"open_issues_count":1,"forks_count":6,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-04-07T21:41:17.820Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/idiap.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-02-14T12:32:58.000Z","updated_at":"2025-03-17T10:37:11.000Z","dependencies_parsed_at":null,"dependency_job_id":"7d5491b7-df16-4c9b-9591-1d2a4795381b","html_url":"https://github.com/idiap/gile","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/idiap/gile","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/idiap%2Fgile","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/idiap%2Fgile/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/idiap%2Fgile/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/idiap%2Fgile/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/idiap","download_url":"https://codeload.github.com/idiap/gile/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/idiap%2Fgile/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278720044,"owners_count":26034086,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-07T02:00:06.786Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-06T06:25:11.491Z","updated_at":"2025-10-07T04:24:13.549Z","avatar_url":"https://github.com/idiap.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cb\u003egile\u003c/b\u003e —\nThis repository contains a Keras implementation of GILE, a generalized input-label embedding for large-scale text classification, which was proposed in TACL 2019 [\u003ca href=\"https://arxiv.org/pdf/1806.06219.pdf\"\u003e1\u003c/a\u003e]. The overall model consists of a joint non-linear  input-label embedding with controllable capacity and a joint-space-dependent classification unit which is trained with cross-entropy loss to optimize classification performance. GILE improves over monolingual and multilingual models which do not leverage label semantics [\u003ca href=\"https://arxiv.org/pdf/1707.00896.pdf\"\u003e2\u003c/a\u003e] and previous joint input-label space models for text [\u003ca href=\"http://www.aclweb.org/anthology/D15-1027\"\u003e3\u003c/a\u003e, \u003ca href=\"https://www.aaai.org/ocs/index.php/AAAI/AAAI16/paper/view/12058/11827\"\u003e4\u003c/a\u003e] in both full-resource and low or zero-resource scenarios.\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://arxiv.org/pdf/1806.06219.pdf\"\u003e\u003cimg align=\"center\" src=\"images/schema_mini.png\" alt=\"Overview of the neural architecture for text classification based on the proposed generalized input-label embedding.\" width=\"480\"/\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n```\n@article{Pappas_TACL_2019,\n    author = {Pappas, Nikolaos and Henderson, James},\n    title = {GILE: A Generalized Input-Label Embedding for Text Classification},\n    journal = {Transactions of the Association for Computational Linguistics (TACL)},\n    volume = {7},\n    year = {2019}\n}\n```\n\nGetting started\n------------\nThe provided code allows to reproduce the two experiments decribed in the paper:\n\n* **Multilingual text classification**: Under the main folder (./) you can find the code related to the multilingual text classification experiments on DW dataset from [\u003ca href=\"https://arxiv.org/pdf/1707.00896.pdf\"\u003e2\u003c/a\u003e].  \n\n* **Biomedical semantic indexing**: Under the hdf5/ folder you can find the code related to the biomedical text classification experiments on BioASQ dataset from [\u003ca href=\"https://www.aaai.org/ocs/index.php/AAAI/AAAI16/paper/view/12058/11827\"\u003e4\u003c/a\u003e]. We created a separate code to provide support for large-scale datasets like BioASQ (10M) using the HDF5 format and for trainable word embeddings.  \n\n\n### Installation\nThe available code for GILE requires \u003ca href=\"http://www.python.org/getit/\"\u003ePython 2.7\u003c/a\u003e programming language and \u003ca href=\"http://www.pip-installer.org/en/latest/\"\u003epip\u003c/a\u003e package manager to run.\nFor detailed instructions on how to install them please refer\nto the corresponding links. Next, you should be able to install the required libraries as follows using the provided list of dependencies: \u003cbr /\u003e\n```\npip install -r dependencies.txt\n```\nTo avoid creating library conflicts in your existing pip environment, it may be more convenient for you to use a folder-specific pip environment using \u003ca href=\"https://github.com/pypa/pipenv\"\u003epipenv\u003c/a\u003e instead. For setting up your GPUs to work with Theano please refer to \u003ca href=\"http://deeplearning.net/software/theano/install_ubuntu.html\"\u003ehere\u003c/a\u003e and  \u003ca href=\"http://deeplearning.net/software/theano/tutorial/using_gpu.html\"\u003ehere\u003c/a\u003e. For example, the theano configuration for running our experiments on GPUs with \u003ca href=\"https://developer.nvidia.com/cuda-downloads\"\u003eCUDA 8.0\u003c/a\u003e and \u003ca href=\"https://developer.nvidia.com/cudnn\"\u003ecuDNN 5110\u003c/a\u003e was the following one:\n```\nTHEANO_FLAGS='cuda.root=\u003cpath\u003e/CUDA-8.0, mode=FAST_RUN, dnn.enabled=True, device=gpu, lib.cnmem=0.9'\n```\n**Note**: A large portion of this repository is borrowed from \u003ca href=\"https://github.com/idiap/mhan\"\u003emhan\u003c/a\u003e toolkit, so for networks which have typical sigmoid output layer parametrizations please consider using and acknowledging that toolkit instead.  \n\n\n# Multilingual text classification  \nThis section describes how to obtain the task prerequisites (datasets, pretrained word vectors) and how to use the basic code functionality needed to perform multilingual text classification experiments on DW dataset from [\u003ca href=\"https://arxiv.org/pdf/1707.00896.pdf\"\u003e2\u003c/a\u003e].\n\nPrerequisites\n-------------\nTo get started, please follow the steps below to obtain the required data and the pretrained word vectors:\n1. Request and download the compressed file containing the pre-processed DW dataset from [\u003ca href=\"https://arxiv.org/pdf/1707.00896.pdf\"\u003e2\u003c/a\u003e] (see Datasets in \u003ca href=\"https://github.com/idiap/mhan\"\u003emhan\u003c/a\u003e) and unzip its contents under the data/ folder:\n```\nmkdir data; cd data;\n# Copy the compressed data files to data/ folder.\nunzip dw_general.zip dw_specific.zip\n```\n2. Download the compressed files with the pretrained aligned word embeddings in pickle format from \u003ca href=\"https://github.com/idiap/mhan\"\u003emhan\u003c/a\u003e repository and unzip its contents under the main folder:\n```\ncd ../;mkdir word_vectors; cd word_vectors;\nfor lang in {english,german,spanish,portuguese,ukrainian,russian,arabic,persian}; \\\ndo wget https://github.com/idiap/mhan/raw/master/word_vectors/$lang.pkl.gz ; done\n```\n\nUsage\n---------------\n```\n$ python run.py --help\nUsing Theano backend.\nusage: run.py [-h] [--wdim WDIM] [--swpad SWPAD] [--spad SPAD] [--sdim SDIM]\n              [--ddim DDIM] [--ep EP] [--ep_size EP_SIZE] [--bs BS]\n              [--enc ENC] [--act ACT] [--gruact GRUACT] [--share SHARE]\n              [--t T] [--seed SEED] [--args_file ARGS_FILE]\n              [--wordemb_path WORDEMB_PATH]\n              [--languages LANGUAGES [LANGUAGES ...]] [--data_path DATA_PATH]\n              [--path PATH] [--target TARGET] [--source SOURCE]\n              [--store_file STORE_FILE] [--max_num MAX_NUM] [--train] [--test]\n              [--store_test] [--onlylabel] [--onlyinput] [--la]\n              [--ladim LADIM] [--laact LAACT] [--lashare]\n(...)\n```\n\nUsage: Training models\n-------------\nTo train a model we have to specify the --train argument in the run.py file. For each specified language, the script will automatically load the training and validation sets stored under the specified data folder and train the model on them. At each epoch the script will store a snapshot of the model along with its validation scores (precision, recall and F1-score) under the specified folder for all the languages involved in the training e.g. under exp/\u003clanguage_1\u003e/, exp/\u003clanguage_2\u003e/. In case the script detects already stored models for multiple epochs in the specified folder, it will continue training from the model stored at the last epoch.  \n\n### Monolingual\nFor example, to train a mononolingual HAN with DENSE encoders and GILE output layer (GILE-HAN) on general German categories we execute the following command:\n```\npython run.py --train --languages german --wordemb_path word_vectors/ --data_path=data/dw_general \\\n  --path exp/bi-gen/mono/gile-han-att --wdim 40 --swpad 30 --spad 30 --sdim 100 --ddim 100 --ep 300 \\ \n  --bs 16 --enc attdense --act relu --la\n```\n\n### Multilingual\nFor example, to train a multilingual HAN with DENSE encoders, shared attention and GILE output layer (GILE-MHAN-Att) on general English and German categories we execute the following command:\n```\npython run.py --train --languages english german --wordemb_path word_vectors/ --data_path=data/dw_general \\\n--path exp/bi-gen/multi/en-de/gile-mhan-att --wdim 40 --swpad 30 --spad 30 --sdim 100 --ddim 100 --ep 300 \\\n--bs 16 --enc attdense --act relu --share att --la --lashare\n```\n\n**Note**: With the above commands you can also run the experiments for the rest of the languages in the monolingual case and the rest of the language-pair combinations in the multilingual case by changing the --languages argument.\n\nUsage: Testing models\n-------------\nTo test a model we have to specify the --test argument in the run.py file and simply point to the directory of the model that we would like to evaluate and the language on which we would like to evaluate using the --target argument. The script will select the model with the best validation score in the specified directory and test it on the corresponding test set. When using the testing function, the architecture of the model is also plotted and stored in the specified directory (see below).\n\n### Monolingual\nUsing the previous example, we can test the above mononolingual HAN with DENSE encoders and GILE output layer (GILE-HAN) on the  corresponding German test set as follows:\n```\npython run.py --test --path exp/bi-gen/mono/gile-han-att --target german --la --t 0.40\n```\n\n### Multilingual\nUsing the previous example, we can evaluate the above multilingual HAN with DENSE encoders, shared attention and GILE output layer (GILE-MHAN-Att) on the corresponding German test set as follows:\n```\npython  run.py --test --path exp/bi-gen/multi/en-de/gile-mhan-att --target german --t 0.40\n```\n\n\u003ctable\u003e\n\u003ctr\u003e\n\t\u003ctd style=\"vertical-align:top;width:50%;text-align:center\"\u003e\u003ccenter\u003e\u003cb\u003eHAN with Dense encoders + GILE output layer\u003c/b\u003e\u003cbr\u003e\u003cbr\u003e\u003cimg align=\"top\" src=\"images/gile-han.png\" alt=\"\" width=\"370\"/\u003e\u003c/center\u003e\u003c/td\u003e\n\t\u003ctd style=\"vertical-align:top;width:50%;text-align:center\"\u003e\u003ccenter\u003e\u003cb\u003eMHAN with Dense encoders + GILE output layer \u003c/b\u003e\u003cbr\u003e\u003cbr\u003e\u003cimg align=\"top\" src=\"images/gile-mhan-att.png\" alt=\"\" width=\"470\"/\u003e\u003c/center\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n\nUsage: Other\n-------------\nFor other functionalities such as storing attention weights and visualizing them please check \u003ca href=\"https://github.com/idiap/mhan\"\u003emhan\u003c/a\u003e toolkit.\n\nPretrained models\n-------------\nApart from the code, we also provide under pretrained/ folder the configurations of the best-performing models with GILE output layer from the full-resource experiments in [\u003ca href=\"https://arxiv.org/pdf/1806.06219.pdf\"\u003e1\u003c/a\u003e] (Tables 2 and 4):\n\n1. **bi-gen/**: Bilingual models with DENSE encoders and GILE output layer trained on general categories (Table 2, upper part).\n2. **bi-spe/**: Bilingual models with DENSE encoders and GILE output layer trained on specific categories (Table 2, lower part).\n3. **enc-gen/**: Monolingual models with varying encoders (DENSE, GRU, biGRU) and GILE output layer trained on general categories (Table 4).\n\n\n### Testing\nThe command below evaluates the English-German MHAN model with DENSE encoders and GILE output layer, which was trained on general English and German categories, on the corresponding English test set. The resulting F1-score should match the one in the corresponding column of Table 3 in [\u003ca href=\"https://arxiv.org/pdf/1806.06219.pdf\"\u003e1\u003c/a\u003e].\n\n```\npython run.py --test --path pretrained/bi-gen/multi/en-de/gile-mhan-att --target english  --t 0.4\n```\n\n### Retraining\nTo train the model from scratch using the same configuration (args.json) and initial weights as in [\u003ca href=\"https://arxiv.org/pdf/1806.06219.pdf\"\u003e1\u003c/a\u003e], one has to simply remove the optimal pretrained model files from the specified path folder as follows:\n\n```\nrm  pretrained/bi-gen/multi/en-de/gile-mhan-att/english/*_[1-9]*-*\nrm  pretrained/bi-gen/multi/en-de/gile-mhan-att/german/*_[1-9]*-*\npython run.py --path pretrained/bi-gen/multi/en-de/gile-mhan-att/ --languages english german --train\n```\n\n**Note**: We also provide upon request the configurations and initial weights of any other model used in the paper.\n\n\n# Biomedical semantic indexing\nThis section describes how to obtain the task prerequisites (datasets, pretrained word vectors) and how to use the basic code functionality needed to perform biomedical semantic indexing experiments on the BioASQ dataset from [\u003ca href=\"https://www.aaai.org/ocs/index.php/AAAI/AAAI16/paper/view/12058/11827\"\u003e4\u003c/a\u003e]. Compared to the code for the previous experiments, this version of the code differs in the following ways: i) it supports trainable word embeddings, ii) it uses the HDF5 format for efficiently storing and accessing large-scale datasets and iii) supports zero-shot evaluation.\n\nPrerequisites\n-------------\nTo get started, please follow the steps below to obtain the required data and (optionally) the pretrained word vectors:\n1. Download our pre-processed version of the BioASQ dataset according to [\u003ca href=\"https://www.aaai.org/ocs/index.php/AAAI/AAAI16/paper/view/12058/11827\"\u003e4\u003c/a\u003e] stored in HDF5 format (or pre-process the data yourselves and store them in the same format):   \n```\ncd hdf5;mkdir data;cd data;\nwget https://raw.githubusercontent.com/circulosmeos/gdown.pl/master/gdown.pl; chmod +x gdown.pl;\n./gdown.pl https://drive.google.com/open?id=16TcpunnhNyPIWoy4RSkIICVYDZSKDpzU bioasq.tar.gz\ntar -zxvf bioasq.tar.gz\n```\n2. (Optional) Use the pretrained word vectors by storing them under the hdf5/ folder:\n```\ncd ../;mkdir word_vectors;\nwget https://raw.githubusercontent.com/circulosmeos/gdown.pl/master/gdown.pl; chmod +x gdown.pl;\n./gdown.pl https://drive.google.com/open?id=1zu4l4bRcqiTwqNXrZI8gDPC1sxrDJsBf bioasq-word_vectors.zip\nunzip bioasq-word_vectors.zip\n```\n\nUsage\n---------------\n```\n$ cd hdf5/; python run.py --help\nUsing Theano backend.\nusage: run.py [-h] [--wdim WDIM] [--wsize WSIZE] [--lpad LPAD] [--wpad WPAD]\n              [--sampling SAMPLING] [--swpad SWPAD] [--spad SPAD]\n              [--sdim SDIM] [--ddim DDIM] [--ep EP] [--ep_size EP_SIZE]\n              [--epval_size EPVAL_SIZE] [--bs BS] [--enc ENC] [--act ACT]\n              [--gruact GRUACT] [--share SHARE] [--t T] [--seed SEED]\n              [--args_file ARGS_FILE] [--wordemb_path WORDEMB_PATH]\n              [--languages LANGUAGES [LANGUAGES ...]] [--data_path DATA_PATH]\n              [--path PATH] [--target TARGET] [--source SOURCE]\n              [--store_file STORE_FILE] [--chunks CHUNKS] [--train] [--test]\n              [--store_test] [--mode MODE] [--pretrained] [--maskedavg]\n              [--chunks_offset CHUNKS_OFFSET] [--onlylabel] [--onlyinput]\n              [--la] [--ladim LADIM] [--laact LAACT] [--lashare]\n              [--seen_ids SEEN_IDS] [--unseen_ids UNSEEN_IDS]\n(...)\n```\n\nUsage: Training\n---------------\nAs in the previous section, to train a model we have to specify the --train argument in the run.py file. For each specified language, the script will automatically load the training and validation sets stored under the specified data folder and train the model on them. At each epoch the script will store a snapshot of the model along with its validation scores (precision, recall and F1-score) under the specified folder for all the languages involved in the training e.g. under exp/\u003clanguage_1\u003e/, exp/\u003clanguage_2\u003e/. In case the script detects already stored models for multiple epochs in the specified folder, it will continue training from the model stored at the last epoch.  \n\nFor example, to train a WAN with DENSE encoders and GILE output layer (GILE-HAN) on the BioASQ dataset we execute the following command:\n```\npython run.py --languages english --data_path data/bioasq/ --path exp/gile-wan --train \\\n--wdim 100 --bs 64 --sampling 0.03 --la --ladim 500 --lpad 50 --maskedavg\n```\n\nUsage: Testing\n---------------\nAs in the previous section, to test a model we have to specify the --test argument in the run.py file and simply point to the directory of the model that we would like to evaluate and the language on which we would like to evaluate using the --target argument. The script will select the model with the best validation score in the specified directory and test it on the corresponding test set. When using the testing function, the architecture of the model is also plotted and stored in the specified directory (see below). One key difference with the previous section is that the test functionality allows to evaluate on a particular subsets of the test set, namely the ones that have labels that been seen during training and the ones that have labels which have not been seen during training (zero-shot setting).\n\nFor example, to evaluate a WAN with DENSE encoders and GILE output layer (GILE-HAN) on the seen labels during training we execute the following command:\n```\npython run.py --test --path exp/gile-wan --target english --mode seen --chunks 50 --bs 8\n```\n\nTo evaluate on the unseen labels during training, we execute the following command:\n```\npython run.py --test --path exp/gile-wan --target english --mode unseen --chunks 5 --bs 8\n```\n\n**Note**: The results of the first script above are stored under the predifined folder (--path) in separate files and should be averaged to obtain the final score over the whole test set.\n\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd style=\"vertical-align:top;width:100%;text-align:center\"\u003e\u003ccenter\u003e\u003cb\u003eWAN with Dense encoders + GILE output layer\u003c/b\u003e\u003cbr\u003e\u003cbr\u003e\u003cimg align=\"top\" src=\"images/gile-wan.png\" alt=\"\" width=\"420\"/\u003e\u003c/center\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\nUsage: Other\n-------------\nFor other functionalities such as storing attention weights and visualizing them please check \u003ca href=\"https://github.com/idiap/mhan\"\u003emhan\u003c/a\u003e toolkit.\n\nPretrained models\n---------------\nApart from the code, we also provide under pretrained/ folder the configurations of the best-performing model that uses GILE output layer from the experiments in [\u003ca href=\"https://arxiv.org/pdf/1806.06219.pdf\"\u003e1\u003c/a\u003e] (Table 1):\n\n1. **gile-wan/**: Model with DENSE encoders and GILE output layer on general categories (Table 1). Due to its big size this pretrained model is hosted externally and can be obtained as follows: \n```\ncd hdf5; wget https://raw.githubusercontent.com/circulosmeos/gdown.pl/master/gdown.pl ; chmod +x gdown.pl;\n./gdown.pl https://drive.google.com/open?id=1Xq8-9KBLEBRoTzOMAIqqzXueq0_ciLML bioasq-pretrained.zip\nunzip bioasq-pretrained.zip  \n```\n\n### Testing\nThe command below evaluates the WAN model with DENSE encoders and GILE output layer on the seen labels during. The resulting average F1-score should match the one in the corresponding column of Table 1 in [\u003ca href=\"https://arxiv.org/pdf/1806.06219.pdf\"\u003e1\u003c/a\u003e].\n\n```\npython run.py --test --path pretrained/gile-wan --target english --mode seen --chunks 50 --bs 8\n```\n### Retraining\nTo train the model from scratch using the same configuration (args.json) and initial weights as in [\u003ca href=\"https://arxiv.org/pdf/1806.06219.pdf\"\u003e1\u003c/a\u003e], one has to simply remove the optimal pretrained model files from the specified path folder as follows:\n\n```\nrm  pretrained/gile-wan/*_[1-9]*-*\npython run.py --path pretrained/gile-wan/ --train\n```\n**Note**: We also provide upon request the configurations and initial weights of any other model used in the paper.\n\nReferences\n------------\n* [1] Nikolaos Pappas, James Henderson, \u003ca href=\"https://arxiv.org/pdf/1806.06219.pdf\"\u003eGILE: A Generalized Input-Label Embedding for Text Classification\u003c/a\u003e, Transactions of the Association for Computational Linguistics, 2019\n* [2] Nikolaos Pappas, Andrei Popescu-Belis, \u003ca href=\"https://arxiv.org/pdf/1707.00896.pdf\"\u003eMultilingual Hierarchical Attention Networks for Document Classification\u003c/a\u003e, 8th International Joint Conference on Natural Language Processing , Tapei, Taiwan, 2017\n* [3] Mazid Yazdani, James Henderson \u003ca href=\"http://aclweb.org/anthology/D15-1027\"\u003eA Model of Zero-Shot Learning of Spoken Language Understanding\u003c/a\u003e, Proceedings of the 2015 Conference on Empirical Methods in Natural Language Processing, Lisbon, Portugal, 2015\n* [4] Jinseok Nam, Eneldo Loza Mencía, Johannes Fürnkranz, \u003ca href=\"https://www.aaai.org/ocs/index.php/AAAI/AAAI16/paper/view/12058/11827\"\u003eAll-in Text: Learning Document, Label, and Word Representations Jointly\u003c/a\u003e, Proceedings of the 30th AAAI Conference on Artificial Intelligence, Phoenix, USA, 2016\n\nAcknowledgements\n------------\n We are grateful for funding to the European Union's Horizon 2020 program through the SUMMA project (Research and Innovation Action, grant agreement n. 688139): Scalable Understanding of Multilingual Media, see \u003ca href=\"http://www.summa-project.eu/\"\u003ehttp://www.summa-project.eu/\u003c/a\u003e.\n\n## Contact:\nnpappas@idiap.ch\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fidiap%2Fgile","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fidiap%2Fgile","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fidiap%2Fgile/lists"}