Analyser le sens du texte
Je me rends compte c'est un vaste sujet, mais je suis à la recherche d'un bon primer sur l'analyse de la signification du texte, idéalement en Python. Comme un exemple de ce que je cherche à faire, si un utilisateur fait un post de blog comme:
"Manny Ramirez fait son retour pour la Dodgers aujourd'hui contre les Astros de Houston",
ce qui est un poids léger/moyen facile d'obtenir les noms d'une peine? Pour commencer, je pense que je ferais limite pour les noms propres, mais je ne voudrais pas être limitée à ce qui (et je ne veux pas compter sur une simple regex qui n'assume rien de ce Titre Plafonné est un nom propre).
À faire de cette question encore pire, ce sont les choses que je ne demande pas que je devrais être? Ai-je besoin d'un corpus de mots existants pour commencer? Ce que l'analyse lexicale choses que j'ai besoin de savoir pour faire ce travail? Je l'ai fait venir à travers une autre question sur le sujet et je suis creuser par le biais de ces ressources.
source d'informationauteur Tom | 2009-07-17
Vous devez vous connecter pour publier un commentaire.
Utiliser le NLTKen particulier chapitre 7 sur l'Extraction d'Information.
Vous dites que vous voulez extraire le sens, et il existe des modules pour l'analyse sémantique, mais je pense que IE est tout ce dont vous avez besoin, et honnêtement un des seuls domaines de la PNL les ordinateurs peuvent gérer maintenant.
Voir les sections 7.5 et 7.6 sur les sous-thèmes de la Reconnaissance des entités Nommées (à regrouper et de classer les Manny Ramerez en tant que personne, Dodgers comme une organisation sportive, et les Astros de Houston comme une autre organisation sportive, ou tout ce qui convient à votre nom de domaine) et de la Relation à l'Extraction. Il y a un TNS chunker que vous pouvez plugin une fois que vous avez la NLTK installé. À partir de ces exemples, l'extraction d'une géo-politique de l'entité (GPE) et une personne:
Remarque: vous aurez toujours besoin de savoir la segmentation et l'étiquetage, tel que discuté dans les chapitres précédents, pour obtenir votre texte dans le bon format pour IE ces tâches.
Vous avez besoin de regarder le Natural Language Toolkitce qui est exactement pour ce genre de chose.
Cette section du manuel semble très pertinente: La catégorisation et l'Étiquetage des Mots - voici un extrait:
Ici, nous voyons que et est CC, une conjonction de coordination; maintenant et complètement sont RB, ou des adverbes; pour est DANS, une préposition; quelque chose est NN, un substantif; et différents est JJ, d'un adjectif.
Traitement du Langage naturel (NLP) est le nom pour l'analyse, bien, en langage naturel. De nombreux algorithmes et heuristiques existent, et c'est un champ de recherche actif. Quel que soit l'algorithme vous code, il aura besoin d'être formé sur un corpus. Tout comme un humain: nous apprendre une langue par la lecture de textes écrits par d'autres personnes (et/ou en écoutant des phrases prononcées par d'autres personnes).
Dans la pratique, ont un coup d'oeil à la Natural Language Toolkit. Pour un fondement théorique de ce que vous allez code, vous voudrez peut-être vérifier Fondements de la Statistique, Traitement du Langage Naturel par Chris Manning et Hinrich Schütze.
le texte d'alt http://nlp.stanford.edu/fsnlp/fsnlp-bigger.jpg
Voici le livre que je suis tombé récemment: Traitement de la Langue naturelle avec Python
Ce que vous voulez est appelé NP (phrase nominale) de segmentation, ou l'extraction.
Quelques liens ici
Comme l'a souligné, ce problème est très spécifique au domaine des choses. Le plus vous pouvez le réduire, le plus il sera efficace. Et vous allez devoir former votre programme sur votre domaine spécifique.
C'est vraiment sujet compliqué. Généralement, ce genre de chose relève de la rubrique de Traitement de la Langue Naturelle, et a tendance à être difficile, au mieux. La difficulté de ce genre de choses est précisément la raison pour laquelle il n'existe toujours pas de système entièrement automatisé pour la manipulation de service à la clientèle et la comme.
Généralement, l'approche de ce genre de choses VRAIMENT dépend précisément ce que votre problème de domaine est. Si vous êtes en mesure de crible le problème de domaine, vous pouvez gagner de très sérieux avantages; d'utiliser votre exemple, si vous êtes en mesure de déterminer que votre problème de domaine est le baseball, alors que vous donne vraiment une longueur d'avance. Même alors, c'est BEAUCOUP de travail pour obtenir quelque chose de particulièrement utile pour aller de l'.
Pour ce que ça vaut, oui, un corpus de mots va être utile. Plus important encore, la détermination de la complexité fonctionnelle attendue du système de critique; avez-vous besoin d'analyser des phrases simples, ou est-il nécessaire pour l'analyse d'un comportement complexe? Pouvez-vous limiter les entrées d'un ensemble relativement simple?
Des expressions régulières peut aider dans certains scénario. Voici un exemple détaillé: Quel est le Plus Mentionné Scanner sur CNET Forumqui a utilisé une expression régulière pour trouver tous les scanners dans CNET messages du forum.
Dans le post, une expression régulière en tant que tel a été utilisée:
afin de correspondre à l'une des opérations suivantes:
tout-en-un)
En conséquence, le texte extrait de la poste,
Cette expression régulière solution travaillé en une sorte.