Stemmers vs Lemmatizers

Natural Language Processing (NLP), en particulier pour l’anglais, est devenu le stade où l’émission deviendrait une technologie archaïque si des lemmatiseurs «parfaits» existaient. C’est parce que les stemmers changent la forme de surface d’un mot / jeton en des points sans signification.

Là encore, la définition du “lemmatiseur” parfait “est discutable parce que différentes tâches PNL auraient nécessité différents niveaux de lemmatisation. Par exemple, convertissez les mots entre les formes verbales / nominales / adjectives .

Stemmers

[in]: having [out]: hav 

Lemmatiseurs

 [in]: having [out]: have 
  • Donc, la question est la suivante: les stemmers anglais sont-ils utiles du tout aujourd’hui? Comme nous avons une pléthore d’outils de lemmatisation pour l’anglais

  • Dans la nounify , comment devrions-nous aller de l’avant pour créer des lemmatiseurs robustes capables de prendre en nounify les nounify , les verbify , les adverbify et les adverbify ?

  • Comment la tâche de lemmatisation pourrait-elle être facilement adaptée à d’autres langues ayant des structures morphologiques similaires à l’anglais?

Q1: “[…] l’anglais est-il vraiment utile aujourd’hui? Depuis que nous avons une pléthore d’outils de lemmatisation pour l’anglais”

Oui. Les Stemmers sont beaucoup plus simples, plus petits et généralement plus rapides que les lemmatiseurs, et pour de nombreuses applications, leurs résultats sont suffisamment bons . Utiliser un lemmatizer pour cela est un gaspillage de ressources. Prenons, par exemple, la réduction de la dimensionnalité dans la recherche d’informations. Vous remplacez tout lecteur / conduite par driv dans les documents recherchés et dans la requête. Vous ne vous souciez pas de savoir si c’est un disque ou un disque ou x17a $ tant qu’il regroupe les mots liés aux flexions.

Q2: “Comment devrions-nous aller de l’avant pour construire des lemmatiseurs robustes capables de prendre en charge les noms, les verbalisations, les adjectifs et les adverbifications des processus préliminaires?

Quelle est votre définition d’un lemme, inclut-elle la dérivation ( drivedriver ) ou seulement l’inflexion ( drivedrivesdrove )? Est-ce que cela prend en compte la sémantique?

Si vous voulez inclure la dérivation (ce que la plupart des gens diraient, y compris les noms vérifiés, etc.), gardez à l’esprit que la dérivation est beaucoup plus irrégulière que l’inflexion. Il existe de nombreuses particularités, lacunes, etc. Voulez-vous vraiment changer ( changer de train ) et changer (sous forme de pièces) pour avoir le même lemme? Sinon, où tracez-vous la limite? Que diriez-vous du nerf – de la terreur , de la terre – de la terre – … Cela dépend vraiment de l’application.

Si vous tenez compte de la sémantique (la banque serait appelée banque-argent ou banque-rivière selon le contexte), quelle est votre profondeur (faites-vous la distinction entre banque et établissement bancaire )? Certaines applications peuvent ne pas s’en préoccuper du tout, d’autres voudront peut-être distinguer la sémantique de base, d’autres voudront peut-être la graver.

Q3: “Comment la tâche de lemmatisation pourrait-elle être facilement adaptée à d’autres langues ayant des structures morphologiques similaires à l’anglais?”

Qu’entendez-vous par “structures morphologiques similaires à l’anglais”? L’anglais a très peu de morphologie flexionnelle. Il existe de bons lemmatisants pour les langages d’autres types morphologiques (véritablement flexion, agglutination, masortingce,…).

A l’exception possible des langages agglutinants, je dirais qu’une table de consultation (par exemple un sortinge compressé) est la meilleure solution. (Peut-être avec quelques règles de sauvegarde pour les mots inconnus tels que les noms propres). La recherche est suivie d’une sorte de désambiguïsation (allant de sortingvial – prenez le premier, ou prenez le premier cohérent avec les mots tag POS, à beaucoup plus sophistiqué). Les désambiguïsations les plus sophistiquées sont généralement des algorithmes stochastiques supervisés (par exemple TreeTagger ou Faster ), bien que la combinaison de l’apprentissage automatique et de règles créées manuellement ait également été effectuée (voir par exemple).

De toute évidence, pour la plupart des langues, vous ne voulez pas créer la table de consultation à la main, mais la générer à partir d’une description de la morphologie de cette langue. Pour les langages flexionnels, vous pouvez utiliser l’ingénierie de Hajic pour le tchèque ou Mikheev pour le russe, ou, si vous êtes audacieux, utiliser la morphologie à deux niveaux. Ou vous pouvez faire quelque chose entre eux, comme Hana (moi-même) (notez qu’il s’agit d’parsingurs morphologiques complets incluant la lemmatisation). Ou vous pouvez apprendre le lemmatizer de manière non supervisée à la Yarowsky et Wicentowski , éventuellement avec un post-traitement manuel, corrigeant les mots les plus fréquents.

Il y a beaucoup trop d’options et tout dépend vraiment de ce que vous voulez faire avec les résultats.

L’une des applications classiques de la radicalisation ou de la lemmatisation est l’amélioration des résultats des moteurs de recherche: en appliquant stemming (ou lemmatization) à la requête et (avant indexation) à tous les tokens indexés, les utilisateurs peuvent pour trouver les résultats contenant “a”.

(On peut dire que les verbes sont quelque peu rares dans la plupart des requêtes de recherche, mais le même principe s’applique aux noms, en particulier dans les langues avec une morphologie de nom riche.)

Aux fins de l’amélioration des résultats de la recherche, il n’est pas vraiment important que la racine (ou le lemme) soit significative (“avoir”) ou non (“hav”). Il lui suffit de pouvoir représenter le mot en question et toutes ses formes flexionnelles. En fait, certains systèmes utilisent des nombres ou d’autres types de chaînes d’identification au lieu de la racine ou du lemme (ou de la forme de base ou peu importe comment elle peut être appelée).

Par conséquent, ceci est un exemple d’application où les stemmers (selon votre définition) sont aussi bons que les lemmatiseurs.


Cependant, je ne suis pas tout à fait convaincu que votre définition (implicite) de “stemmer” et “lemmatizer” soit généralement acceptée. Je ne suis pas sûr qu’il y ait une définition généralement acceptée de ces termes, mais la façon dont je les définis est la suivante:

Stemmer: Fonction qui réduit les formes flexionnelles en tiges ou en formes de base, en utilisant des règles et des listes de suffixes connus.

Lemmatizer: Fonction qui effectue la même réduction, mais qui utilise un dictionnaire complet complet pour pouvoir traiter des formes irrégulières.

Sur la base de ces définitions, un lemmatiseur est essentiellement une version de qualité supérieure (et plus coûteuse) d’un

La réponse dépend fortement de la tâche ou du domaine d’étude spécifique du traitement du langage naturel (PNL) dont nous parlons.

Il convient de souligner que dans certaines tâches spécifiques, comme l’ parsing des sentiments (qui est un sous-domaine favori de la PNL), l’utilisation d’un Stemmer ou d’un Lemmatizer comme caractéristique du développement d’un système modèle) n’a pas d’effet notable sur la précision du modèle, quel que soit l’outil. Même si cela améliore les performances, il existe des fonctionnalités plus importantes, comme l’ parsing des dépendances, qui peuvent être utilisées dans de tels systèmes.

Il est important de mentionner que les caractéristiques de la langue sur laquelle nous travaillons doivent également être sockets en compte.