Ce référentiel présente le travail effectué lors de ma thèse de maîtrise avec le titre "Amélioration de la traduction de la machine neuronale de faibles ressources des langues connexes par apprentissage par transfert" conseillé par Alexandra Birch et Rachel Bawden à l'Université d'Édimbourg. Il a été soumis en août 2020. Il a étudié certaines des approches d'apprentissage du transfert pour les systèmes de traduction de la machine neuronale (NMT) en utilisant les modèles de langue masqués tels que XLM-Roberta (XLM-R) [1]. Ce projet a été principalement construit sur la fusion basée sur l'attention des représentations de mots contextualisées à partir des modèles de langage masqué (MLM) avec le système NMT basé sur le transformateur [2]. Il a également tracé empiriquement le transfert des connaissances syntaxiques par une analyse des têtes d'attention dans ce système en fonction du travail de référence [3]. Ce guide donne les instructions d'installation nécessaires avec un petit exemple de travail en utilisant un petit sous-ensemble de l'ensemble de données parallèle d'anglais-hindi d'anglais IIT [4]. Tous les hyperparamètres utilisés dans ce travail sont accessibles à partir de la thèse.
Table des matières
- Un aperçu de la fusion basée sur l'attention
- Installation
- Prétraitement
- Système NMT de base
- Système NMT fusionné XLM-R
- Finetuning xlm-r
- Conversion de script
- Analyse syntaxique
- Informations supplémentaires
- Références
1. Un aperçu de la fusion basée sur l'attention
- Nous avons connecté le XLM-R avec le système NMT basé sur le transformateur en utilisant la fusion basée sur l'attention après les travaux [2].
- Nous l'appelons le système NMT fusionné XLM-R qui se compose d'un module XLM-R supplémentaire autre que le Encodeur NMT standard et le NMT-Decoder.
- Une phrase d'entrée est adoptée à la fois au XLM-R et au Encodeur NMT, qui donne deux représentations différentes pour la phrase. La représentation des mots contextualisés du XLM-R est fusionnée avec la représentation d'encodeur NMT en utilisant une fusion basée sur l'attention. De même, la représentation XLM-R est fusionnée avec le décodeur.
2. Installation
2.1. Exigences
- Python> = 3,5
- Pytorch> = 1.5.0
- TensorFlow == 1.13.1
- HuggingFace Transformers == 2.11.0
- Matplotlib
- Marin
- Scikit-apprend
- SacrebleU> = 1.4.10
- Phrase> = 0,1,91
- Bibliothèque NLP indic> = 0,6
- Moïse
2.2 Installation dans le répertoire des packages
- Téléchargez, extraire et installez Mosesdecoder à cet endroit.
- Téléchargez, extraire et installez la bibliothèque NLP Indic à cet emplacement. Extrairez également les ressources NLP Indic à cet endroit. Nous pouvons ignorer cette étape si nous ne travaillons pas avec les langues indic.
- Téléchargez, extraire et installez la bibliothèque de transformateurs HuggingFace à cet endroit.
2.3 Installation de Fairseq
- Cloner ce référentiel. Son répertoire parent agira en tant que répertoire domestique pour tous les scripts de prétraitement, de formation et d'évaluation dans ce travail.
- Exécutez les commandes suivantes à partir du répertoire domestique.
cd 'work/systems/baseline-NMT/fairseq'
pip install --editable ./
- Il installera le système de base-NMT basé sur la bibliothèque Fairseq avec ses dépendances. Notez que nous avons utilisé plusieurs versions des systèmes Fairseq situés à cet endroit. Nous avons donc toujours utilisé les chemins exacts des fichiers de formation et d'évaluation pour éviter les conflits.
2.4 Téléchargement et extraction XLM-R
- Téléchargez tous les fichiers associés au XLM-R à partir du Huggingface Hub. Utilisez l'option «Listez tous les fichiers dans le modèle» pour afficher et télécharger les fichiers à savoir config.json, pytorch_model.bin, phrasepiece.bpe.model et tokenizer.json .
- Mettez ces fichiers dans ce répertoire.
3. Prétraitement
- Veuillez visiter les bibliothèques Fairseq et Bert-NMT pour vous familiariser avec les étapes de prétraitement, de formation et d'évaluation de base, car notre travail est construit sur eux.
- Nous avons utilisé Mosesdecoder pour prétraiter les ensembles de données anglais, mais nous sommes passés à la bibliothèque NLP indic pour les langues indic comme hindi, gujarati, bengali et marathi.
- Nous avons utilisé le BPE de la phrase pour la segmentation des mots. Lorsque les langages source et cible ont partagé des caractères substantiels, nous avons traité les ensembles de données avec le BPE conjoint en utilisant ce script. Sinon, un script différent a été utilisé.
- Pour l'ensemble de données anglais-hindi utilisé pour démontrer cette œuvre, nous avons utilisé ce dernier script.
- Définissez le home_dir sur le répertoire parent de ce référentiel.
- Nous avons déjà mis des fichiers Train, Test et Dev sur le RAW_DATA_DIR . Vous pouvez les modifier avec vos fichiers avec les mêmes conventions de dénomination.
- Nous avons fusionné les données de formation avec les ensembles de données monolingues massifs pour apprendre une meilleure segmentation du BPE. Mettez ces ensembles de données sur raw_monlingual_data_dir . Nous avons utilisé un corps Oscar massif dans notre travail, mais pour cette démo, nous venons d'utiliser les mêmes fichiers de train.
- Communiquez entre la bibliothèque NLP INC INC ou MOSES en fonction des langues en commentant la fonction Clean_norm_Tok , comme indiqué dans le script.
- Exécutez ce script qui prépare tous les fichiers et enregistre sur prestrocessed_data_dir . Le répertoire tokenisé-bpe contient tous les fichiers intermédiaires après normalisation, tokenisation, etc., ainsi que tous les fichiers BPED finaux.
- Ensuite, ce script binare les données à utiliser par les systèmes basés sur Fairseq et enregistre dans le répertoire binaire . Il utilise le binariser Fairseq du système fusionné XLM-R pour binariser les fichiers de la ligne de base, ainsi que les systèmes fusionnés XLM-R. Il utilise --bert-model-name pour accéder au tokenizer XLM-R pour tokenize les fichiers source, car ils ont également été utilisés par le composant XLM-R avec le Encodeur NMT standard dans les systèmes fusionnés XLM-R.
- (Facultatif) Notez que ce système est principalement basé sur le XLM-R, mais nous pouvons également utiliser d'autres modèles de langage masqué fournis par la bibliothèque de transformateurs HuggingFace. Nous devons apporter des modifications comme suit:
- Téléchargez et extraire le nouveau modèle de langue comme mentionné à l'étape 2.4.
- Importez le jeton et le modèle correspondants à partir de la bibliothèque de transformateurs HuggingFace dans le système fusionné XLM-R avec le par défaut comme mentionné ci-dessous:
from transformers import XLMRobertaModel
BertModel = XLMRobertaModel
from transformers import XLMRobertaTokenizer
BertTokenizer = XLMRobertaTokenizer
- Nous devons les importer dans les fichiers suivants:
- Work / Systems / XLM-R-Fused / Bert-NMT / Preprocess.py
- Work / Systems / XLM-R-Fused / Bert-NMT / Interactive.py
- Work / Systems / XLM-R-Fused / Bert-NMT / FAIRSEQ_CLI / Preprocess.py
- Work / Systems / XLM-R-Fused / Bert-NMT / Fairseq_Cli / Interactive.py
- Work / Systems / XLM-R-Fused / Bert-NMT / Fairseq / Tasks / Translation.py
- Work / Systems / XLM-R-Fused / Bert-NMT / Fairseq / Models / Transformer.py
- Travail / Systèmes / xlm-R-Fused / Bert-NMT / Fairseq / Binarizer.py
- De plus, nous devons modifier les jetons de démarrage
(<s>) et de fin (</s>) dans ces fichiers conformément au nouveau modèle de langue.
4. système NMT de base
4.1 Formation du système NMT de base de formation
- Formez le système de base basé sur le transformateur avec ce script.
- Il accumulera les gradients pour former une plus grande taille de lot efficace. Taille du lot = (nombre de GPU) * ( --max-tokens ) * ( - update-freq ).
- Il utilise une stratégie de validation d'arrêt précoce avec - la patience déterminant le nombre maximum de points de contrôle avec des scores BLEU en baisse.
- Notre travail utilise l'architecture du transformateur: transformateur_iwslt_de_en par défaut. Les systèmes fusionnés XLM-R restaurent les paramètres des systèmes de base, de sorte que leurs architectures doivent correspondre. Nous pouvons également utiliser d'autres architectures plus grandes pour le système de base, mais nous devons également donner la même architecture sous-jacente pour le système fusionné XLM-R. Vérifiez ce fichier pour des architectures supplémentaires implémentant la fusion basée sur l'attention.
- Il enregistre les points de contrôle à la base_nmt_checkpoints_dir .
4.2 Évaluation du système NMT de base
- Évaluez le système de base avec ce script.
- Nous devons évaluer le fichier de test BPED avec le meilleur point de contrôle. Utiliser --Remove-Bpe = phrase-phrase pour supprimer la segmentation BPE du fichier de sortie.
- Utilisez INC NLP ou Moïse pour détonnequer le fichier de sortie comme indiqué dans le script.
- Ce script calcule les scores BLEU finaux à l'aide de Sacrebleu en utilisant le fichier de test intact de la langue cible.
5.
5.1 Formation Système NMT fusionné XLM-R
- Formez les systèmes fusionnés XLM-R avec ce script qui utilisera le système à cet endroit.
- Bert_name stocke le chemin d'accès à la variante XLM-R utilisée avec ce système. Nous pouvons utiliser ici des variantes pré-formées ou finetunées.
- Ce script copie le meilleur point de contrôle du système de base et restaure les paramètres pour une formation plus approfondie avec le système fusionné XLM-R.
- Ce système a été construit sur une version antérieure de Fairseq qui n'a pas fourni d'arrêt anticipé, donc ce script enregistre tous les points de contrôle des étapes de formation - max-update , qui sont ensuite évaluées plus tard.
- Pour la fusion d'attention du côté de l'encodeur et du décodeur, utilisez le --arch comme transformateur_s2_iwslt_de_en , tandis que pour la fusion de décodeur uniquement, utilisez Transform_iwslt_de_en .
- Assurez-vous d'utiliser un petit taux d'apprentissage, car les paramètres sont déjà proches des niveaux optimaux.
5.2 Évaluation du système NMT fusionné XLM-R
- Évaluez les systèmes fusionnés XLM-R avec ce script, qui est similaire au script utilisé pour le système de base.
- Ce script utilise un point de contrôle particulier pour calculer le score BLEU, tandis qu'un autre script l'étend pour calculer les scores pour tous les points de contrôle.
- Comme il a été mentionné précédemment, il n'y a pas de fonctionnalité d'arrêt anticipée avec ce système. Nous avons donc enregistré tous les points de contrôle toutes les quelques époques et les avons évalués avec un ensemble de validation. Ensuite, le meilleur point de contrôle peut être défini en utilisant Best_checkpoint dans l'ancien script pour l'évaluation des tests de test.
- Il utilise les chemins sur deux fichiers de test différents qui sont utilisés par différents composants des systèmes NMT fusionnés XLM-R. Test_src_bped pointe vers le fichier qui est utilisé par le Encoder NMT standard, tandis que Test_SRC_RAW pointe vers le fichier source brut qui est utilisé par le composant XLM-R. Le fichier brut est nécessaire par le XLM-R car il utilise sa propre tokenisation interne à l'aide du tokenzer fourni par la bibliothèque de transformateurs HuggingFace. Assurez-vous que Bert_name pointe vers le répertoire des variantes XLM-R correspondant, afin qu'il puisse accéder à son tokenizer correspondant.
6. Finetuning xlm-r
6.1 Variantes multilingues et monolingues
- Nous avons déménagé les modèles XLM-R pour créer les variantes multilingues et monolingues des modèles pré-formés originaux.
- Indo-aryan-xlm-r-base est la variante multilingue, qui est créée par la base XLM-R finetun avec les langues associées - hindi, gujarati, marathi et bengali. Il exploite leurs similitudes syntaxiques, morphologiques, orthographiques et lexicales.
- Gujarati-xlm-R-base et gujarati-xlm-r-GARGE sont les variantes monolingues finetues avec l'ensemble de données gujarati unique. De plus, la base de Gujarati-Dev-XLM-R est créée avec la langue gujarati convertie en script Devanagari. Ces modèles ont été publiés au Huggingface Hub qui sont disponibles ici.
- Nous avons utilisé les variantes Pytorch du XLM-R disponibles ici comme modèles pré-formés.
6.2 Préparation des données
- Nous avons principalement suivi ce tutoriel, que nous vous encourageons à visiter avant de continuer.
- Utilisez ce script pour préparer les données. Il prépare les fichiers de formation et de validation pour un seul ensemble de données monolingues dont le chemin est défini à l'aide de RAW_MONO_SOURCE . Ensuite, il est prétraité à l'aide de la bibliothèque NLP Indic, comme le fait les fichiers de formation ci-dessus.
- Dans ce script, Bert_name pointe vers le modèle XLM-R prétrainé d'origine qui est utilisé pour accéder à son dictionnaire.
- Ensuite, il est binarisé en utilisant une autre variante de la bibliothèque Fairseq disponible ici. Il utilise le tokenizer XLM-R, qui garantit que nos données sont tokenisées de la même manière que les données d'origine ont été effectuées pour pré-dresser le XLM-R.
- (Facultatif) Si vous souhaitez FineTune tout autre modèle de langage masqué, vous devez importer ce modèle de langue dans ce fichier. Apporter les modifications suivantes:
- Importez le tokenizer correspondant au lieu de notre xlmrobertaketinateur par défaut
from transformers import XLMRobertaTokenizer
BertTokenizer = XLMRobertaTokenizer
- Remplacez le nom du modèle ici
dict = BertTokenizer.from_pretrained("xlm-roberta-base")
- Remplacez les jetons de démarrage et d'extrémité similaires à une suggestion dans le prétraitement.
- De même, préparez les données pour d'autres langues si vous souhaitez créer un modèle multilingue.
6.3 Formation et évaluation du modèle
- Utilisez ce script pour Finetune la variante monolingue.
- Il utilise le même système NMT de base qui est utilisé à l'étape 4.1 pour Finetune le modèle. Ici, Restore_Point pointe vers le point de contrôle du modèle pré-formé. Utilisez le - tâche comme masqué_lm pour la variante monolingue.
- Similalrly, utilisez ce script pour créer la variante multilingue. Il utilise le - tâche comme multilingue_masked_lm qui fusionne les données de différentes langues.
- Il le résume également pour minimiser l'impact du déséquilibre des données où les ensembles de données plus grands maîtrisent les plus petits. Utiliser - Multilang-échantillonnage-alpha pour ajuster le rapport d'échantillonnage. Voir le papier XLM-R original [1] pour les détails.
- Nous avons enregistré les points de contrôle à intervalles réguliers et choisi le modèle avec la perte de validation minimale.
6.4 Rendre le point de contrôle Pytorch compatible avec les transformateurs de câlins
- Nous devons convertir le point de contrôle Pytorch enregistré en une version différente compatible avec la bibliothèque de transformateurs HuggingFace.
- Nous supposons que vous avez installé la bibliothèque Transformers dans le répertoire des packages. Ensuite, utilisez la commande suivante.
python packages/transformers/src/transformers/convert_roberta_original_pytorch_checkpoint_to_pytorch.py --roberta_checkpoint_path best_ck_dir/ --pytorch_dump_folder_path ./
- Ici, Best_CK_DIR contient le point de contrôle XLM-R Finetuned nommé Model.pt , dict.txt et phrasepiece.bpe.model . Les 2 derniers fichiers sont les mêmes pour les modèles pré-formés et finetunés, qui peuvent être accessibles ici. pytorch_dump_folder_path fait référence au répertoire où la version Pytorch compatible des transformateurs doit être enregistrée.
- Notez que la bibliothèque Transformers a connu des problèmes avec le fichier convert_roberta_original_pytorch_checkpoint_to_pytorch.py , que nous avons corrigé et ajouté au répertoire UTILS. Remplacez ce fichier et reconstruisez la bibliothèque.
- (Facultatif) Nous pouvons utiliser les guides HuggingFace directement pour FineTune le modèle sans utiliser d'abord la bibliothèque Fairseq. Nous avons trouvé cette approche extrêmement lente en raison d'un mauvais support multi-GPU fourni par le Huggingface. Ils ont implémenté le multithreading sur le multiprocessement qui provoque une utilisation déséquilibrée du GPU. Fairseq a mis en œuvre son propre module pour gérer cela, qui est discuté ici.
- Après la finetuning, utilisez simplement la dernière version pytorch pour remplacer les modèles pré-formés d'origine pour la formation et l'évaluation des systèmes fusionnés XLM-R.
7. Conversion de script
- Nous avons utilisé certaines stratégies de conversion de script, où nous avons essayé d'exploiter les similitudes lexicales entre les langues associées en utilisant un script commun. Nous avons utilisé la bibliothèque NLP Indic pour convertir la même chose.
- Comme le système fusionné XLM-R traite les mêmes phrases d'entrée dans le XLM-R, ainsi que le Encodeur NMT, nous avons essayé différentes combinaisons des scripts pour ces modules. Par exemple, pour la paire Gujarati-Hindi, nous avons passé des phrases de script gujarati au module XLM-R, mais Gujarati dans le script Devanagari au Encodeur NMT pour maximiser le chevauchement lexical avec le langage cible.
- Les phrases dans les différents scripts ont la même signification sémantique, donc leur fusion basée sur l'attention était possible. Vérifiez la thèse pour plus de détails.
- Cette fonctionnalité peut être utilisée avec le système fusionné XLM-R en modifiant les fichiers source à binarsied pour le XLM-R. Cela peut être fait en utilisant ce script, qui convertit ces fichiers en script cible.
- De même, le script peut être utilisé pour convertir le script des fichiers source à passer au XLM-R, ainsi que le Encodeur NMT standard.
- Ensuite, entraînez les systèmes NMT de base et XLM-R comme avant d'utiliser les scripts d'entraînement initiaux.
- Évaluez ces systèmes comme avant d'utiliser les scripts d'évaluation initiaux. Si le langage cible est converti en script de la langue source, il doit être reconverti à son script initial en tant qu'étape de post-traitement. Cela peut être fait en utilisant les scripts d'évaluation présents dans le répertoire converti du script à l'intérieur des répertoires de scripts de base des systèmes fusionnés de base et XLM-R.
8. Analyse syntaxique
Veuillez vous familiariser avec le travail de [3], dont le code est disponible ici. Notre travail l'étend pour tracer le transfert des connaissances syntaxiques dans les systèmes fusionnés XLM-R.
8.1 Préparation des données
- Traitement de l'ensemble de données des dépendances universelles (UD)
- Nous avons utilisé l'ensemble de données Hindi UD [5] [6] pour l'analyse syntaxique.
- Utilisez ce script pour traiter le train UD RAW et les fichiers de test. Il extrait la tête syntaxique et les relations syntaxiques correspondantes à partir des fichiers UD.
- Ensuite, utilisez ce script pour convertir les fichiers ci-dessus au format JSON à l'aide des instructions ici.
- Enfin, extraire les phrases brutes des fichiers ci-dessus à l'aide de ce script.
- Traitement des fichiers source pour l'inférence Fairseq
- Utilisez les fichiers ci-dessus avec les phrases brutes comme fichiers de test source. Nous évaluons nos meilleures points de contrôle du système de base de référence et XLM-R avec ces fichiers.
- Prétraitez ces fichiers comme mentionné à l'étape 3 (prétraitement) et préparez les fichiers binarisés pour le Fairseq. Comme nous n'avons pas de données latérales cibles ici, nous utilisons un script de prétraitement modifié pour ne traiter que les fichiers latéraux source.
8.2 Extraction des cartes d'attention des systèmes de base et des systèmes XLM-R
- Utilisez les données binarsées ci-dessus pour extraire les cartes d'attention du système fusionné XLM-R à l'aide du script d'évaluation. De même, utilisez ce script pour extraire les cartes du système de base.
- Ces scripts utilisent deux systèmes différents construits sur le système NMT de base et le système NMT fusionné XLM-R, qui peuvent être accessibles ici et ici, respectivement.
- Ces systèmes extraient les cartes d'auto-agencement pour toutes les têtes d'attention présentes dans toutes les couches d'encodeur de transformateur. En outre, le système construit sur le fusion de XLM-R extrait également les cartes Bert-Attention résultant de la fusion basée sur l'attention des représentations XLM-R et des représentations d'encodeur NMT.
- Utilisez le paramètre supplémentaire --Save_Attn_Maps pour donner le chemin pour sauver les cartes d'attention. Créez les dossiers - Self , Bert et Batch_Sentences à l'intérieur pour stocker les cartes respectives. Batch_sences stocke les phrases correspondantes dans l'ordre les cartes d'attention sont extraites. Ce fichier peut être utilisé pour vérifier l'ordre des phrases traitées.
- Ces cartes seront enregistrées dans les tableaux Numpy où un seul fichier contient le nombre de phrases identiques à la taille du lot.
- Utilisez ce script pour traiter davantage les cartes d'attention.
- Il crée les objets Pickle en utilisant les cartes d'attention et les fichiers JSON.
- Ensuite, il convertit les cartes d'attention pour les jetons de niveau BPE au niveau de mot. Vérifiez la thèse pour plus de détails.
- Pour tester notre code, vous pouvez utiliser nos fichiers Pickle pour les systèmes de base et XLM-R qui sont disponibles ici. Téléchargez et extraire le fichier compressé à cet emplacement. Ces fichiers de cornichon fonctionneront avec les données prétraitées Hindi UD déjà présentes à l'emplacement mentionné.
8.3 Visualiser les cartes d'attention et le classificateur de sondage basé sur l'attention
- Exécutez le cahier d'analyse syntaxique disponible ici. Point Train_Path et Dev_Path dans le train ci-dessus et testez des fichiers de cornichons. Ici, nos fichiers de développement et de test sont les mêmes, car nous n'utilisons aucun hyperparamètre.
- Les poids obtenus à partir de la ligne de base et des systèmes fusionnés XLM-R ont été utilisés pour déterminer la tête syntaxique correcte dans différentes couches et têtes d'attention.
- Il a quelques exemples qualitatifs où une tête syntaxique a été prédite avec succès.
- Enfin, il donne un score UAS final en formant et en évaluant le classificateur de sondage basé sur l'attention. Il faut une combinaison pondérée des poids d'auto-attention donnés par toutes les couches et les têtes d'attention pour donner une mesure globale des connaissances syntaxiques.
9. Informations supplémentaires
- Licences: Veuillez noter que notre travail est autorisé en vertu de la licence du MIT. Mais, nous utilisons d'autres œuvres et ensembles de données qui ont leurs propres licences. Plus précisément, tous les systèmes basés sur la bibliothèque Fairseq ont leurs licences correspondantes présentes dans leurs répertoires respectifs. En outre, veuillez vérifier les licences pour l'ensemble de données parallèle de Bombay parallèle d'anglais et de l'ensemble de données Hindi Universal Dependance en utilisant les liens donnés dans le fichier ReadMe. De même, vérifiez la licence de la bibliothèque de transformateurs HuggingFace, car nous avons modifié l'un de ses fichiers comme mentionné dans le Readme.
- Soulevez un problème si vous avez besoin d'aide. Si vous trouvez ce travail utile, n'hésitez pas à l'utiliser et veuillez également citer ma thèse.
10. Références
[1] Conneau, Alexis et al. "Apprentissage de la représentation inter-gênante non supervisée à grande échelle." ARXIV Préprint Arxiv: 1911.02116 (2019)
[2] Zhu, Jinhua, et al. "Incorporer Bert dans la traduction des machines neuronales." Conférence internationale sur les représentations de l'apprentissage. 2019
[3] Clark, K., Khandelwal, U., Levy, O., et Manning, CD (2019, août). Que regarde Bert? Une analyse de l'attention de Bert. Dans les actes de l'atelier ACL 2019 BlackBoxNLP: analyser et interpréter les réseaux de neurones pour NLP (pp. 276-286).
[4] Anoop Kunchukuttan, Pratik Mehta, Pushpak Bhattacharyya. Le corpus parallèle de l'IIT Bombay Bombay. Conférence des ressources linguistiques et de l'évaluation. 2018.
[5] Riyaz Ahmad Bhat, Rajesh Bhatt, Annahita Farudi, Prescott Klassen, Bhuvana Narasimhan, Martha Palmer, Owen Rambow, Dipti Misra Sharma, Ashwini Vaidya, Sri Ramagurumurthy Vishnu et Fei Xia. Le projet Hindi / Urdu Treebank. Dans le manuel de l'annotation linguistique (édité par Nancy Ide et James Pustejovsky), Springer Press. 2015.
[6] Martha Palmer, Rajesh Bhatt, Bhuvana Narasimhan, Owen Rambow, Dipti Misra Sharma, Fei Xia. Syntaxe hindi: dépendance annotante, structure de prédicat-argument lexical et structure de phrase. Dans les actes de la 7e Conférence internationale sur le traitement du langage naturel, ICON-2009, Hyderabad, Inde, 14-17 décembre 2009.