Recherche:Analyse de complexité des textes coutumostratiques

Analyse de complexité des textes coutumostratiques

Toute réaction ou commentaire par rapport à ce travail de recherche sont les bienvenus sur cette page de discussion.

Cette page fait partie de l’espace recherche de Wikiversité et dépend de la faculté linguistique. Pour plus d'informations, consultez le portail de l'espace recherche ou rendez-vous sur l'index des travaux de recherche par faculté.


Cette page à vocation à résumer des recherches relatives à l'évaluation métrique du niveau de difficulté que représente la lecture d'un texte.

Contexte

modifier

Afin d'aider les rédacteurs à estimer la difficulté que représente la lecture de leurs textes et de disposer d'un moyen objectif de vérifier la pertinence d'un texte pour un niveau de lettrisme donnée, il est possible de fournir directement des scores en marge de l’interface de rédaction.

Cet article vise donc à faire un tour d'horizon des différentes métriques existantes et envisageable, de faire un état de l'art des outils logiciels existant, et d'établir une feuille de route pour les outils intégrables dans une interface de rédaction.

Métriques

modifier

Pour évaluer la difficulté de lecture d'un texte, il convient d'abord d'établir les métriques qui permettent de la quantifier. C’est le propos de cette section que de détailler les métriques possibles en la matière.

Nombre de caractères

modifier

Le nombre de caractères d'un texte est assurément l’un des indicateurs les plus simple à quantifier. Cependant son intérêt est fort limité pour ce qui est d’assister le rédacteur à adapter son texte à un niveau donnée. En effet le rédacteur aura déjà intuitivement une idée de cette complexité en survolant le texte.

Le nombre de caractères distincts à lui peut d’intérêt. Tout au plus peut-il aider pour évaluer des cas très spécifiques tels que « toutes les lettres de l’alphabet, ou seulement un sous-ensemble de ces lettres, apparaissent au moins une fois dans le texte ».

Difficulté de mise en œuvre

modifier

A priori aucune.

Nombre de mot par phrase

modifier

Le corolaire phrase courte/phrase simple est l’un des plus fréquemment avancé.

S’il s’agit d'un bon indicateur, qui plus est assez simple en mettre en œuvre. Il ne peut cependant suffire à une métrique de la complexité effective des phrases concernés. En effet, un aphorisme ou un haĭku zen seront court tout en étant souvent porteur d’une sémantique complexe.

À noter qu’il s’agit bien d’évaluer la complexité, et non la qualité littéraire. Ainsi une phrase de Marcel Proust sera longue mais sa qualité littéraire n’en ai pas moins reconnue.

Difficulté de mise en œuvre

modifier

La segmentation des phrases peut être plus difficile que ce qui pourrait être présumé intuitivement. Par exemple dans le paragraphe suivant :

Socrate (en grec ancien Σωκράτης / Sōkrátēs) est un philosophe grec du Ve siècle av. J.-C. (né vers -470/469, mort en -399). Il est connu comme l’un des créateurs de la philosophie morale. Socrate n’a laissé aucun écrit, mais sa pensée et sa réputation se sont transmises par des témoignages indirects. »

Une analyse qui se contenterait d’une simple reconnaissance de point comme marqueur de fin de phrase produira des résultats erronés du fait de l’utilisation de points comme marqueurs abréviation.

Nombre de mots

modifier

Mot est à comprendre ici comme un ensemble de lettres groupées et séparées des autres par des espaces ou autres caractères de ponctuation outre le trait d’union.

Le nombre de mots, à l’instar du nombre de caractères est une métrique de faible intérêt en termes d’assistance au rédacteur.

Le nombre de mots distincts permet éventuellement d’évaluer la diversité du vocabulaire d’une façon approximative mais simple à mettre en œuvre.

Difficulté de mise en œuvre

modifier

Si par mot on se restreint à la définition précédemment donné, alors il s’agit en fait simplement d’homographes, et il n’y a là a priori aucune difficulté particulière.

Si en revanche dans une phrase comme « L’est est leste et lire des livres délivre. » il faut distinguer le substantif « est » désignant un point cardinal du verbe « être », le problème demande alors a minima une analyse sémantique et s’avère autrement plus complexe. À cela s’ajoute l’éventuel regroupement par lemme plutôt que par graphie, qui nécessite une phase de lemmatisation. Voir la section dédiée aux lemmes.

Banalité du vocabulaire

modifier

La fréquence d’emploi d’un mot dans l’usage courant peut s’avérer un indicateur intéressant pour estimer la difficulté qu’un lecteur aura à le comprendre, en particulier chez l’enfant, en supposant qu’il est plus facile d’interpréter des mots déjà bien acquis au moins à l’oral.

La possibilité de repérer le vocabulaire moins fréquent peut permettre de n’en introduire qu'une variété limitée ; dans une quantité adapté au niveau du lecteur. Couplé avec une analyse du nombre d’occurrence de chaque lexème, il peut même permettre de s’assurer que le vocabulaire moins fréquent soit répété suffisamment pour augmenter les probabilité de son acquisition. Cela s’avère d’autant plus crucial pour les plus jeunes lecteurs si le facteur de corrélation entre age d’acquisition et de faciliter de lecture est pris en compte[1].

L’âge d’acquisition peut donc également être envisagé comme critère supplémentaire et distinct permettant d’établir des évaluations de la difficulté que représente la lecture d’un texte par tranche d’âge.

Difficulté de mise en œuvre

modifier

La principale difficulté d’un telle indicateur est la nécessité de disposer préalablement d’une base de données des fréquences d’utilisation des mots. À cela s’ajoute la problématique de l’établissement de la correspondance entre graphies et lexèmes. Pour la première problématique, de telles bases de données existent clé en main.

C’est le cas des jeux de données utilisée par Google Books Ngram Viewer qui sont disponibles sous licence Creative Commons Attribution 3.0 Unported[2].

C’est également le cas de Lexique 3[3][4] une base de données qui fournit pour 135 000 mots du français 55 000 lemmes. Elle comprend les représentations orthographiques et phonémiques, la syllabation, la catégorie grammaticale, le genre et le nombre, les fréquences, les lemmes associés, et plus encore. En revanche cette base de données est diffusé sous une licence non-libre : BY-NC-SA-3.0-FR. L’un des points intéressant de cette base de donnée est la présence de données de fréquence orale, qui s’appuie sur un corpus de sous-titres d’œuvres audio-visuelles, notamment de films et de séries télévisés[5][6].

Pour l’âge d’acquisition de chaque terme il existe également des bases de données spécifiques. CHACQFAM par exemple est téléchargeable en ligne, cependant sans mention de licence ce qui laisse de fait sous un statut juridique restrictif[7]. Elle est en revanche accompagné d’un article documentant les objectifs et la méthodologie ayant conduit à la constituer[8].

Parmi les autres ressources disponibles sur le sujet, les banques de données suivantes constituent des pistes potentielles :

  • Brulex[9][10]
  • Bonin, P., Méot, A., Aubert, L., Malardier, N., Niedenthal, N., & Capelle-Toczek, M.-C. (2003). Normes de concrétude, de valeur d’imagerie, de fréquence subjective et de valence émotionnelle pour 866 mots Chalard, M., Bonin, P., Méot, A., Boyer, B., & Fayol M. (2003). Objective age-of-acquisition (aoa) norms for a set of 230 object names in French: Relationships with psycholinguistic variables, the English data from Morrison et al. (1997), and naming latencies. European Journal of Cognitive Psychology, 15(2), 209-245
  • 400AoA[11][12]
  • La page Documentation Autres Bases sur le site de Lexique

Nombre de lemmes distincts

modifier

Le nombre de lemmes, c’est-à-dire de termes canoniques servant d’entrée lexicale d’une unité abstraite de vocabulaire, permet de donner un indicateur de la variété du vocabulaire employé dans un texte, indépendamment des flexions. Ainsi un texte où apparaît et cheval et chevaux ne verra pas cette métrique augmenter. En revanche chevaux et équestres sont généralement lématisés en deux entrées distincts et conduiront donc à l’accroissement de l’indicateur du nombre de lemme.

Difficulté de mise en œuvre

modifier

En plus de nécessiter la distinction entre les homographes, une telle analyse nécessite de disposer d’une base de données exhaustive des flexions de chaque mot de la langue cible, où au moins un base initiale suffisamment vaste qui puisse être complété au fil de l’eau.

Note: outre l’association d’une graphie à un lemme, il pourrait être envisagé d’induire des associations à des lexies, dont des locutions comme « les voyages forment la jeunesse ».

Nombre de mots utilisant des flexions exceptionnelles

modifier

La mise à disposition des lexèmes présents dans le texte permettrait également de rapporter la quantité de flexions dérogeant aux cas les plus généraux.

Ainsi dans le cas où des mots avec des flexions exceptionnelles apparaissent, l’analyse peut offrir de mettre en exergue l’usage ou non de tout ou partie des flexions correspondantes. Par exemple si le texte utilise le mot « cheval », le rapport d’analyse pourrait indiquer s’il contient également le mot « chevaux ».

Complexité grapho-phonologiques

modifier

Pour les langues dont l’écriture n’est pas phonétique, l’association grapho-phonologique représente un défi important pour l’apprenant. C’est effectivement le cas pour le français et l’anglais qui ont des écritures phono-généalogiques.

Aussi des indicateurs sur la complexité des associations grapho-phonologiques présentent dans le texte serait certainement d’une grande utilité pour évaluer la pertinence d’un texte pour un niveau de lecture donnée.

Difficulté de mise en œuvre

modifier

Outre l’association des graphies à des lexèmes, cette analyse requière une base de données de correspondance entre lexèmes et prononciations phonologiques.

Analyse des solutions logicielles existantes

modifier

L’analyse de l’existant des outils existants se focalisera sur les outils disposant à minima d’un adaptateur dans le langage Ruby.

Matrice d’inventaire des logiciels évalués

modifier
Nom Technologies sous-jacente Création Dernière mise à jour Fonctionnalités
Multilingue Segmentation de phrases
Treat Ruby, java[notes 1] 05/06/2017
TXM Oui ?

Évaluation des solutions existantes pour l’analyse de texte

modifier

Cette section développe un état de l’art en matière de logiciel permettant l’analyse de texte, notamment ceux permettant de dégager la typologie et la fréquence d’occurrence des items lexicaux pour évaluer le niveau de difficulté de lecture du texte.

L’analyse présente les outils regroupés par technologies sous-jacentes. Cela permet notamment d’évaluer rapidement les possibilités d’intégration à un projet existant sans y introduire d’hétérogénéité qui est souvent facteur de complexité de maintenance et de coût en termes de performance d’exécution. Ceci étant les interactions entre composants logiciels reposant sur des socles technologiques est largement éprouvé, et les considérations mentionnés sont souvent largement compensé par la facilité global de de mise en œuvre.

Natural Language Toolkit (NLTK) est une bibliothèque logicielle en Python permettant un traitement automatique des langues.

Ruby est un langage de programmation interprété, orienté objet et multi-paradigme. Son écosystème comprend de nombreuses solutions relatives au traitement automatique des langues coutumostratiques. D’autres projet font déjà œuvre de collecte des ressources afférentes[13]. Les sous-section qui suivent présentent de manière plus détaillée les solutions pertinent dans le cadre du présent projet.

Treat est une boîte à outils pour le traitement des langues coutumostratiques et la linguistique computationnelle. Il vise à construire un framework indépendant des langages et des algorithmes pour Ruby avec des fonctions de récupération de documents, de segmentation, de lexicalisation, d'étiquetage de parties du discours, d'extraction de mots clés et de reconnaissance d'entités nommées[14].

Installation
modifier

L’installation du module Ruby dans le cadre du présent test a été réalisé sans encombre. Pour l’installation du paquet linguistique français en revanche des difficultés sont apparues[15].

Aussi en plus du français, ont également été conduit sur un corpus anglais, langue pris en charge par défaut dans les composants logiciels testés, permettant ainsi d’évaluer la solution dans un cas optimum.

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk # à adapater
git clone git@github.com:louismullie/treat.git
# gem install wordnet # suggested by install log
gem build treat.gemspec
gem install treat-2.1.0.gem
require 'treat’
Treat::Core::Installer.install # english is default
Segmentation de phrase
modifier

Pour l’échantillon anglais, c’est les processeur srx est standford qui s’en sortent le mieux, avec des segmentations exempt d’erreur.

Pour l’échantillon français, le processeur tactful fourni la segmentation la plus probante. Seul manque la segmentation sur un point de suspension suivi d’une majuscule.

À noter que lors de ces tests le processeur punkt n’a pas utilisé le paquet linguistique du français, du fait d’un problème de disponibilité de celui-ci. Cependant même en anglais pour lequel il dispose du paquet approprié, la segmentation s’est avéré erronée avec la non prise en compte de la présence d’abréviations.

Nombre de mots par phrase
modifier

Dans l’analyse de Treat une phrase[notes 2] se compose d’un syntagme[notes 3], lui même subdivisé de manière arborescente où les nœuds terminaux ont l’un des types suivant :

mot (word)
chaîne correspondant à l’expression rationnelle /^[[:alpha:]\-']+$/
enclitique (enclitic)
nombre (number
une chaîne constitué uniquement de chiffres
ponctuation (ponctuation)
chaîne correspondant à l’expression rationnelle /^[[:punct:]\$]+$/
symbole (symbol)
représente un fragment considéré non-linguistique par Treat (symbole errant)
url
chaîne correspondant à l’expression rationnelle /^(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(([0-9]{1,5})?\/.*)?$/ix
email
chaîne correspondant à l’expression rationnelle </.+\@.+\..+
inconnu (unknown)
tout autre signe ne correspondant n’entrant en correspondance avec aucun des types de terme précédent.


Cette explication s’avère nécessaire pour convenablement comptabiliser les éléments qui constitue la phrase lorsque l’objectif est de « compter le nombre de mots ». En l’occurrence, la présente analyse ne se focalise que sur le décompte des termes de type mot, nombre, symbole, url et email.

Tableau résultant enrichie d’annotations relatives à un décompte manuelle
Phrase ptb stanford punkt Total manuel
mots symbol nombre total mots symbol nombre total mots symbol nombre total
Socrate (en grec ancien Σωκράτης / Sōkrátēs) est un philosophe grec du Ve siècle av. J. -C. (né vers -470/469, mort en -399). 17 5 1 23 18 4 1 23 20 2 1 23 22[notes 4]
Il est connu comme l’un des créateurs de la philosophie morale. 11 0 0 11 10 1 0 11 10 1 0 11 12[notes 5]
Socrate n’a laissé aucun écrit, mais sa pensée et sa réputation se sont transmises par des témoignages indirects. 18 0 0 18 20 0 0 20 17 1 0 18 19[notes 5]
Ses disciples Platon et Xénophon ont notablement œuvré à maintenir l'image de leur maître, qui est mis en scène dans leurs œuvres respectives. 23 0 0 23 23 0 0 23 24 0 0 24 24
Les philosophes Démétrios de Phalère, et Maxime de Tyr dans sa Neuvième Dissertation1 ont écrit que Socrate est mort à l’âge de 70 ans. 22 1 1 24 21 2 1 24 21 2 1 24 25[notes 5]
Déjà renommé de son vivant, Socrate est devenu l’un des penseurs les plus illustres de l'histoire de la philosophie. 19 0 0 19 18 1 0 19 19 1 0 20 21[notes 5]
Sa condamnation à mort et sa présence très fréquente dans les dialogues de Platon ont contribué à faire de lui une icône philosophique majeure. 24 0 0 24 24 0 0 24 24 0 0 24 24
La figure de Socrate a été discutée, reprise, et réinterprétée jusqu'à l'époque contemporaine. 13 0 0 13 15 0 0 15 15 0 0 15 15
Socrate est ainsi célèbre au-delà de la sphère philosophique, et son personnage entouré de légendes. 15 0 0 15 15 0 0 15 15 0 0 15 15
En dépit de cette influence culturelle, très peu de choses sont connues avec certitude sur le Socrate historique. 18 0 0 18 18 0 0 18 18 0 0 18 18
Les témoignages le concernant sont souvent discordants, et la restitution de la vie ou la pensée originelle de Socrate est une approche sur laquelle les spécialistes ne s'accordent pas. 29 0 0 29 30 1 0 31 30 0 0 30 30

À noter que l’analyseur lexical:

  • tactful n’a pas été testé ici car l’adaptateur de Treat ne fonctionnait pas dans l’installation mise en œuvre ;
  • open-nlp n’a pas été testé, car bien que présent dans le dépôt de Treat, il ne bénéficie d’aucune documentation sur sa mise en œuvre et installer les gems correspondantes via gem install open-nlp et l’installation des paquets natifs n’a pas suffit au bon fonctionnement.

C’est donc punkt, parmi les bibliothèques mis sur le banc de test, qui fourni les résultats les plus pertinent pour cette phase d’analyse sur le texte français utilisé.

Lemmatisation
modifier

Treat propose des algorithmes de racinisation (anglais stemming), mais pas de lemmatisation. De plus ces algorithmes sont adaptés à l’anglais, et ne donne que des résultats improbants sur des textes en français.

TactfulTokenizer

modifier
Segmentation de phrase
modifier
require "tactful_tokenizer"
m = TactfulTokenizer::Model.new

text = %q{Socrate (en grec ancien Σωκράτης / Sōkrátēs) est un philosophe grec du Ve siècle av. J.-C. (né vers -470/469, mort en -399). Il est connu comme l’un des créateurs de la philosophie morale. Socrate n’a laissé aucun écrit, mais sa pensée et sa réputation se sont transmises par des témoignages indirects. Ses disciples Platon et Xénophon ont notablement œuvré à maintenir l'image de leur maître, qui est mis en scène dans leurs œuvres respectives. Les philosophes Démétrios de Phalère, et Maxime de Tyr dans sa Neuvième Dissertation1 ont écrit que Socrate est mort à l’âge de 70 ans.}

m.tokenize_text(text)
===> [
 "Socrate (en grec ancien Σωκράτης / Sōkrátēs) est un philosophe grec du Ve siècle av.",
  "J.-C. (né vers -470/469, mort en -399).",
  "Il est connu comme l’un des créateurs de la philosophie morale.",
  "Socrate n’a laissé aucun écrit, mais sa pensée et sa réputation se sont transmises par des témoignages indirects.",
 "Ses disciples Platon et Xénophon ont notablement œuvré à maintenir l'image de leur maître, qui est mis en scène dans leurs œuvres respectives.",
  "Les philosophes Démétrios de Phalère, et Maxime de Tyr dans sa Neuvième Dissertation1 ont écrit que Socrate est mort à l’âge de 70 ans."


Ve se veut un framework clé en main facile d’utilisation. Il s’appuie sur les analyseurs syntaxique FreeLing (pour les langues indo-européennes) et MeCab (notamment pour le japonnais)[16].


Installation
modifier

Pour tester ve sur des textes en français, il faudra d’abord installer Freeling. Le manuel officiel propose une documentation correct pour guider cette installation[17]. Quelques ajustements ont été nécessaires pour l’installation sur un système Fedora 27, indiqué ci-dessous.

sudo dnf install boost-devel
wget https://github.com/TALP-UPC/FreeLing/releases/download/4.0/FreeLing-4.0.tar.gz
tar xvzf FreeLing-4.0.tar.gz
cd FreeLing-4.0
  autoreconf --install
  ./configure

Stanford CoreNLP

modifier

Il s’agit encore d’une bibliothèque, cette fois construite au-dessus de Stanford CoreNLP[18].

Installation
modifier
gem install stanford-core-nlp
wget http://nlp.stanford.edu/software/stanford-postagger-full-2014-10-26.zip
unzip stanford-postagger-full-2014-10-26.zip
mv stanford-postagger-full-2014-10-26/* ~/.rbenv/versions/$(rbenv version|cut -d\  -f1)/lib/ruby/gems/*/gems/stanford-core-nlp-*/bin
rmdir stanford-postagger-full-2014-10-26
rm stanford-postagger-full-2014-10-26.zip
cd ~/.rbenv/versions/2.4.3/lib/ruby/gems/2.4.0/gems/stanford-core-nlp-0.5.3/bin/models
ln -s . taggers # ’taggers/’ est suffixé à StanfordCoreNLP.model_path 
ln -s $(locate frenchFactored.ser.gz  | head -n1 | xargs dirname) grammar
Session de test
modifier
require 'stanford-core-nlp’
StanfordCoreNLP.jar_path = `locate xom.jar  | head -n1 | xargs dirname`.chomp.concat('/')
StanfordCoreNLP.model_path = `locate french.tagger | grep stanford-core-nlp | head -n1 | xargs dirname`.chomp.concat('/')
exit if StanfordCoreNLP.model_path.empty? # le fichier french.tagger n’a pas été trouvé

StanfordCoreNLP.use :french

text = %q{Socrate (en grec ancien Σωκράτης / Sōkrátēs) est un philosophe grec du Ve siècle av. J.-C. (né vers -470/469, mort en -399). Il est connu comme l’un des créateurs de la philosophie morale. Socrate n’a laissé aucun écrit, mais sa pensée et sa réputation se sont transmises par des témoignages indirects. Ses disciples Platon et Xénophon ont notablement œuvré à maintenir l'image de leur maître, qui est mis en scène dans leurs œuvres respectives. Les philosophes Démétrios de Phalère, et Maxime de Tyr dans sa Neuvième Dissertation1 ont écrit que Socrate est mort à l’âge de 70 ans.}

pipeline =  StanfordCoreNLP.load(:tokenize, :ssplit, :pos, :lemma, :parse, :ner, :dcoref)

Ressources relatives

modifier

Dans les projets Wikimédia

modifier

Liens externes

modifier
  1. Nécessaire pour l’utilisation de la gem <code>stanford-core-nlp</code>.
  2. En anglais sentence.
  3. Le terme originale est phrase, ici traduit par syntagme. Il est a noter cependant qu’il ne s’agit pas là d’une correspondance biunivoque. Le terme anglais peut, entre autres, désigner aussi bien un syntagme, une expression qu’une locution, voir notamment les entrées du Glossaire français-anglais de terminologie linguistique de la SIL. Dans le même temps, l’anglais dispose également des termes respectifs de [[w:en:syntagm|]], d’expression et de [[w:en:fixed expression|]].
  4. La différence est lié à l’ajout d’une espace avant le trait d’union dans l’abréviation du nom propre abrégé « J.-C. ». Il s’agit donc ici plus d’un problème lié à l’utilisation du résultat produits par la chaîne de traitement en amont qu’un problème de décompte imputable aux algorithmes de segmentation lexical testés ici.
  5. 5,0 5,1 5,2 et 5,3 Ici la différence est lié à la non-reconnaissance de l’apostrophe courbe comme séparateur. Avec un apostrophe droite, l’analyse lexicale de punkt renvoie la valeur attendu, mais les deux autres sont encore erronées.
  1. Normes d'âge d'acquisition pour 400 mots monosyllabiques, Ludovic FERRAND, Jonathan GRAINGER et Boris NEW jeu. 09 septembre 2004
  2. Google Ngram Viewer
  3. (en) New, B., PALLIER, C., Ferrand, L. et Matos, R., « Une base de données lexicales du français contemporain sur internet : LEXIQUE™//A lexical database for contemporary french : LEXIQUE™ », L'année psychologique, vol. 101, no  3 (ISSN 0003-5033) [texte intégral (page consultée le 2018-03-26)]
  4. Site officiel du projet Lexique
  5. http://www.lexique.org/outils/Manuel_Lexique.htm#_Toc152122350
  6. The use of film subtitles to estimate word frequencies. New, B., Brysbaert, M., Veronis, J., & Pallier, C. (in press). Applied Psycholinguistics.
  7. Base de données CHACQFAM
  8. une base de données renseignant l’âge d’acquisition estimé et la familiarité pour 1225 mots monosyllabiques et bisyllabiques du Français Dr. Christian Michel LACHAUD, également disponible sur le portail persée
  9. Brulex. Une base de données lexicales informatisée pour le français écrit et parlé
  10. Index de ftp://ftp.ulb.ac.be/pub/packages/psyling/Brulex/ avec possibilité de télécharger directement la banque de données. Voir notamment l’archive Brulex4Mac.zip qui la propose sous forme de fichier texte brut et de feuille de calcul.
  11. Version archivée de la banque de données 400AoA, le fichier correspondant n’étant plus servi sur le serveur officiel
  12. [http://www.lexique.org/outils/AoA-2002.doc Normes d’âge d’acquisition pour 400 mots monosyllabiques], également disponible via Persée. Ludovic FERRAND, Jonathan GRAINGER et Boris NEW (2003). L’Année Psychologique, 104, 445-468.
  13. diasks2/ruby-nlp: A collection of links to Ruby Natural Language Processing (NLP) libraries, tools and software
  14. louismullie/treat: Natural language processing framework for Ruby
  15. Voir le rapport d’anomalie correspondant
  16. Kimtaro/ve: A linguistic framework that's easy to use.
  17. https://talp-upc.gitbooks.io/freeling-4-0-user-manual/content/installation.html Getting it to Work · FreeLing 4.0 User Manual]
  18. Stanford CoreNLP – Natural language software