2010-02-15 8 views
17

Beaucoup d'algorithmes et de bibliothèques de traitement du langage naturel (NLP) ont du mal à travailler avec des textes aléatoires du web, généralement parce qu'ils supposent une écriture claire et articulée. Je peux comprendre pourquoi cela serait plus facile que d'analyser les commentaires YouTube.Comment déterminer automatiquement la qualité du texte?

Ma question est la suivante: étant donné un morceau de texte aléatoire, y a-t-il un processus pour déterminer si ce texte est bien écrit, et est un bon candidat pour une utilisation en PNL? Quel est le nom général de ces algorithmes? J'apprécierais des liens vers des articles, des algorithmes ou des bibliothèques de code, mais je me contenterais de bons termes de recherche.

Répondre

12

'Bien écrit' et 'bon pour la PNL' peuvent aller ensemble mais ne le doivent pas. Pour qu'un texte soit «bon pour la PNL», il devrait peut-être contenir des phrases entières avec un verbe et un point à la fin, et cela devrait peut-être donner un sens. Pour qu'un texte soit bien écrit, il doit également être bien structuré, cohérent, cohérent, correctement substituer les noms pour les pronoms, etc. Ce dont vous avez besoin dépend de votre application.

Les chances qu'une phrase soit correctement traitée par un outil PNL peuvent souvent être estimées par quelques heuristiques simples: est-elle trop longue (> 20 ou 30 mots, selon la langue)? Trop court? Est-ce qu'il contient beaucoup de caractères étranges? Contient-il des URL ou des adresses e-mail? A-t-il un verbe principal? Est-ce juste une liste de quelque chose? À ma connaissance, il n'y a pas de nom général pour cela, ni d'algorithme particulier pour ce genre de filtrage - c'est ce qu'on appelle le «prétraitement». En ce qui concerne une phrase qui est bien écrite: un certain travail a été fait sur l'évaluation automatique de la lisibilité, de la cohésion et de la cohérence, p. Ex. les articles de Miltsakaki (Evaluation of text coherence for electronic essay scoring systems et Real-time web text classification and analysis of reading difficulty) ou Higgins (Evaluating multiple aspects of coherence in student essays). Ces approches sont toutes basées sur l'une ou l'autre théorie de la structure du discours, telle que Centering Theory. Les articles sont plutôt théoriques-lourds et supposent la connaissance de la théorie de centrage aussi bien que de l'apprentissage automatique.Néanmoins, certaines de ces techniques ont été appliquées avec succès par ETS de marquer automatiquement les essais des étudiants et je pense que cela est tout à fait semblable à ce que vous essayez de faire, ou du moins, vous pourriez être en mesure d'adapter quelques idées. Cela étant dit, je crois que dans les prochaines années, la PNL devra développer des techniques pour traiter le langage qui est et non bien formé par rapport aux normes actuelles. Il y a énormément de données extrêmement précieuses sur le web, composées exactement du type de texte que vous avez mentionné: commentaires youtube, messages de chat, messages d'état Twitter et facebook, etc. Tous contiennent potentiellement des informations très intéressantes. Alors, qui devrait s'adapter - les gens qui agissent ainsi ou la PNL?

4

Je n'ai pas utilisé d'outils, mais j'ai une idée.

Une stratégie simple serait de prendre propre texte anglais et découvrir l'histogramme de différentes parties de balises vocales, comme substantifs, adjectifs, verbes, articles, etc.

maintenant pour le texte exemple, trouver similaire histogramme.

Si cet histogramme est suffisamment proche du repère, la qualité du texte d'exemple est aussi bonne que celle du texte original. Vous devrez peut-être définir le paramètre "proximité".

L'identification de langage utilise typiquement une technique similaire. Pour une langue, un profil n-gram est créé. Un profil similaire est créé pour un exemple de texte et deux profils sont comparés pour déterminer la probabilité que le texte d'exemple soit cette langue.

3

Je ne suis pas familier avec un logiciel qui le fait en soi. Cela ressemble à un problème de classification que vous pourriez essayer d'aborder en étiquetant quelques centaines de documents qui sont bons et mauvais et en tirant des caractéristiques du texte (pourcentage de mots correctement orthographiés, meilleures probabilités d'analyse de phrases, qui sait). À partir de ces données étiquetées, vous pourriez construire un classificateur bon/mauvais qui pourrait faire quelque chose d'utile. Là encore, ça pourrait ne pas être le cas.

Vous pouvez également essayer d'utiliser des mesures de lisibilité. Typiquement, ils sont utilisés pour dire des choses comme "ce texte est sur un niveau de lecture de quatrième année", mais ils pourraient fournir un signal pour ce que vous avez l'intention. Quelques exemples incluent Flesch-Kincaid ou Gunning fog.

7

Une chose facile d'essayer serait de classer le texte bien écrit ou non en utilisant un modèle de langage n-gramme. Pour ce faire, vous devez d'abord former un modèle de langue sur une collection de texte bien écrit. Avec un nouveau texte, vous pouvez ensuite exécuter le modèle sur celui-ci et le transmettre uniquement à d'autres outils PNL en aval si la perplexité par mot est suffisamment faible (par exemple, si elle semble suffisamment similaire au texte d'apprentissage bien écrit). Pour obtenir les meilleurs résultats, vous devez probablement former votre modèle de langage n-gram sur du texte similaire à celui utilisé pour former les autres outils PNL que vous utilisez. C'est-à-dire, si vous utilisez un phrase structure parser formé sur newswire, alors vous devriez également former votre modèle de langue n-gram sur newswire.

En termes de kits d'outils logiciels que vous pourriez utiliser pour quelque chose comme ceci, SRILM serait un bon point de départ. Toutefois, une solution alternative consisterait à essayer d'adapter les outils PNL que vous utilisez au texte que vous souhaitez traiter. Une approche pour quelque chose comme ceci serait auto-formation, dans laquelle vous exécutez vos outils PNL sur le type de données que vous souhaitez traiter et ensuite les recycler sur leur propre sortie. Par exemple, McClosky et al 2006 a utilisé cette technique pour prendre un analyseur à l'origine formé sur le Wall Street Journal et l'adapter à l'analyse du texte biomédical.

1

Comme d'autres personnes ont noté, « bien écrit » est un bon point de vue subjectif. La meilleure chose que vous puissiez faire est de construire un corpus de textes "bien écrits" et "pas bien écrits" (selon vos standards). Vous obtiendriez un bonus si vous étiez capable de créer une méthode pour les classer en termes numériques (0.1 pour les commentaires Youtube, 0.9 pour les commentaires Stack Overflow;). Une fois que vous aurez fait cela, il y aura beaucoup d'alternatives, mais je recommanderais les statistiques dans ce cas. N-grammes pourrait probablement faire le travail avec une fréquence relative simple, mais je vous suggère d'étudier dans les modèles markov et en particulier les outils de classification de texte bayésien.

En fait, la meilleure réponse, une fois que vous avez une collection de "bons" et de "mauvais" textes, est d'utiliser les nombreux systèmes de classification disponibles (pensez aux outils anti-spam). Le meilleur dépend de vos besoins et du langage de programmation avec lequel vous êtes le plus à l'aise.

Questions connexes