Outils pour utilisateurs

Outils du site


public:specs_annotation_nlp_api

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
public:specs_annotation_nlp_api [2019/12/04 18:12]
slh@ens-lyon.fr créée
public:specs_annotation_nlp_api [2019/12/06 14:03] (Version actuelle)
slh@ens-lyon.fr [Niveaux linguistiques]
Ligne 1: Ligne 1:
 ====== Spécifications de l'​annotation linguistique automatique ====== ====== Spécifications de l'​annotation linguistique automatique ======
  
 +===== Expression d'un workflow =====
  
 +Workflow in TXM :
 +  * hypothesis:
 +    * tokenization not done by TXM?
 +    * sentence segmentation not done by TXM?
 +  *1- use textual planes (XTZ)
 +    * extract raw txt between text-to-index tags (working with ELTeC level 2)
 +    * all text-to-index tags will be reinjected after NLP work
 +    * see text-to-index tags for front/​body/​back/​etc.
 +    * see text-not-to-index tags for  notes references (wil not be given to NLP tools)
 +  *2- call UDPipe on each raw text extraction (versus per text?)
 +    * eg p structure content with no sub-p tags
 +      * exceptions: <​foreign>​ can encode a text passage in a language different than the main language of the texte
 +    * new script engine, name ‘Python’,​ interpreter path ‘/​usr...’,​ extension ‘.py’ (for XTZ steps)
 +    * help script engine package installation:​ package_install_instructions (to install UDPipe, http://​ufal.mff.cuni.cz/​udpipe)
 +    * use slave/​master architecture (eg talismane)?
 +  *3- reinject result back
 +    * if concurrent tokens are present in the results
 +      * realign pre-tokens on post-toekens
 +      * replace pre-tokens by post-tokens while preserving XML tags
 +    * other possible operations
 +      * convert .CoNLL-U((voir definition plus bas)) parts to p (newpar?) / s@xml:​id=’$sent_id ’ + w@word@pos@msd@lemma
 +    * reinject sub-p tags
 +  *4- inject into XML-TXM
 +
 +===== Expression d'une interface =====
 +
 +  * on fournit soit du texte brut, soit du texte tokenisé, soit du texte où certains mots sont déjà tokenisés (je n'ai pas vu cette dernière possibilité dans cette interface)
 +  * on fournit soit du texte brut, soit du texte segmenté en phrases, soit du texte où certaines phrases sont déjà segmentées (je n'ai pas vu cette dernière possibilité dans cette interface)
 +  * on fournit une séquence de bouts de texte de taille ou de niveau linguistique variable
 +  * pour le premier élément de la séquence on peut attendre (une initialisation)
 +  * par contre entre deux bouts il faut que le temps de latence soi minimum
 +  * si on pouvait switcher entre langues ou avoir un flux par langue ce serait très utile (toujours plusieurs langues par texte)
 +  * le bout peut être de taille inférieure ou supérieure à un token/mot (il est acceptable que le cas '​taille inférieure'​ ne soit pas pris en compte)
 +  * le bout peut être de taille inférieure ou supérieure à une phrase
 +  * on peut préciser des propriétés comme :
 +  * ce bout de texte ne peut pas être dans le même mot que le bout précédent (pas grave si ce n'est pas possible)
 +  * ce bout de texte ne peut pas être dans la même phrase que le bout précédent (exemple des <​head>​ TEI où il n'y a pas de marque de surface de fin de phrase)
 +
 +Bien sûr si l'​interface pouvait gérer du XML de façon générale on pourrait obtenir des paramétrages plus généraux que la double segmentation en mots/​phrases.
 +
 +===== Niveaux linguistiques =====
 +
 +  * phrases
 +    * un segment de texte (brut ou tokenizé) peut contenir des phrases orthographiques ou des phrases syntaxiques complètes (p, head...)
 +    * une phrase orthographique ou syntaxique ne peut pas être à cheval sur deux segments de texte successifs
 +    * la relation entre des phrases orthographiques (ponctuation) et des phrases syntaxiques (parsing) est à clarifier selon les outils
 +    * l'​impact de certains balisages peut être du même type que celui de ponctuations séparatrices de phrases orthographiques
 +
 +  * mots
 +    * un segment de texte (brut ou tokenizé) peut contenir des mots complets
 +    * un mot ne peut pas être à cheval sur deux segments de texte successifs
 +    * l'​impact de certains balisages peut être du même type que celui de ponctuations séparatrices de mots
 +
 +===== New export macros =====
 +
 +  * TXMText2TXT,​ parameters:
 +    * word properties to use (default ‘word’, eg ‘lemma/​pos’)
 +    * word properties separator (default ‘/’, eg ‘\t’)
 +    * CQL to select words ([] by default, eg [pos!=”PUNCT”])
 +    * option end-of-line-at-end-of-structure (default ‘true’)
 +    * structure-ending (default ‘s’, eg ‘p’)\\ -> .txt for words, lemmas, etc.
 +  * TXMCorpus2TXT,​ call TXMText2TXT on each text (same parameters)
 +
 +  * TXMText2CoNLL-U ,  TXMCorpus2CoNLL-U
 +
 +===== État de l'art architectures NLP =====
 +
 +voir DKPro qui embed pour UIMA :
 +  * [[https://​dkpro.github.io/​dkpro-core/​releases/​1.11.0/​apidocs/​org/​dkpro/​core/​udpipe/​UDPipePosTagger.html|UDPipe]]
 +  * [[https://​dkpro.github.io/​dkpro-core/​releases/​1.11.0/​apidocs/​org/​dkpro/​core/​treetagger/​TreeTaggerPosTagger.html|TreeTagger]]
 +
 +==== CoNLL-U Definition ====
 +
 +voir https://​universaldependencies.org/​format.html
 +
 +  * # for comment lines (and metadata about following sentence), not between tokens
 +  * %%# global.columns%% = ID FORM UPOS HEAD DEPREL MISC PARSEME:MWE metadata (declaration of columns, optionnal)
 +  * # newdoc id = text1 metadata (au début de chaque texte, optionnal)
 +  * # newpar id = p1 metadata (au début de chaque paragraphe commençant en début de phrase, optionnal) [pour les paragraphes commençant au milieu d’une phrase, le token commençant le paragraphe reçoit la valeur NewPar=Yes dans la colonne MISC]
 +  * # sent_id = 1 metadata (au début de chaque phrase , identifiant treebank wide unique)
 +  * # text = la petite brise la glace metadata (phrase raw text)
 +  *éventuellement :​ text_fr, text_en... (traductions),​ translit (translittération)
 +  *<empty line> (= \n\n) after phrases (including last)
 +  *le script conllu_to_text.pl teste la présence de lignes newdoc et newpar
 +  *contractions dupliquées,​ eg. vámonos al mar :<​code>​ 1-2 ​   vámonos ​  _
 + 1      vamos     ir
 + 2      nos       ​nosotros
 + 3-4    al        _
 + 3      a         a
 + 4      el        el
 + 5      mar       ​mar</​code>​
 +  * on peut ajouter des colonnes, voir https://​universaldependencies.org/​ext-format.html.
public/specs_annotation_nlp_api.1575479555.txt.gz · Dernière modification: 2019/12/04 18:12 par slh@ens-lyon.fr