Ayant beaucoup de documents texte (en langage naturel, non structurés), quelles sont les façons possibles de les annoter avec des métadonnées sémantiques? Par exemple, considérons un court document:
I saw the company's manager last day.
Pour pouvoir en extraire des informations, celles-ci doivent être annotées avec des données supplémentaires pour être moins ambiguës. Le processus de recherche de telles métadonnées n'est pas en cause, alors supposez que cela se fasse manuellement. La question est de savoir comment stocker ces données de manière à ce qu'une analyse plus approfondie puisse être effectuée de manière plus pratique / efficace?
Une approche possible consiste à utiliser des balises XML (voir ci-dessous), mais cela semble trop verbeux, et il existe peut-être de meilleures approches / directives pour stocker ces métadonnées sur des documents texte.
<Person name="John">I</Person> saw the <Organization name="ACME">company</Organization>'s
manager <Time value="2014-5-29">last day</Time>.
la source
Réponses:
Personnellement, je recommanderais d'utiliser quelque chose qui n'est pas spécifique au domaine de la PNL, et quelque chose qui est suffisamment général pour qu'il puisse toujours être utilisé comme un outil même lorsque vous avez commencé à dépasser ce niveau de métadonnées. Je choisirais en particulier un format qui peut être utilisé indépendamment de l'environnement de développement et qui peut conserver une structure de base si cela devient pertinent (comme la tokenisation)
Cela peut sembler étrange, mais je dirais honnêtement
JSON
. Il est extrêmement bien pris en charge, prend en charge beaucoup de structure et est suffisamment flexible pour que vous ne deviez pas en sortir pour ne pas être assez puissant. Pour votre exemple, quelque chose comme ceci:Le seul gros avantage que vous avez sur tous les formats spécifiques à la PNL ici est qu'il
JSON
peut être analysé dans n'importe quel environnement, et puisque vous devrez probablement modifier votre format de toute façon, JSON se prête à des modifications très simples qui vous donnent une courte distance vers d'autres formats.Vous pouvez également stocker implicitement des informations de tokenisation si vous le souhaitez:
EDIT: Pour clarifier le mappage des métadonnées est assez ouvert, mais voici un exemple:
J'espère que cela vous aidera, faites-moi savoir si vous avez d'autres questions.
la source
En général, vous ne voulez pas utiliser de balises XML pour baliser des documents de cette manière car les balises peuvent se chevaucher.
UIMA , GATE et les cadres NLP similaires désignent les balises distinctes du texte. Chaque étiquette, par exemple
Person
,ACME
,John
etc. sont stockées comme position que l'étiquette commence et la position qu'elle se termine. Ainsi, pour la baliseACME
, elle serait stockée comme commençant une position 11 et se terminant à la position 17.la source
L' outil d'annotation de morveux pourrait vous être utile selon mon commentaire. J'en ai essayé beaucoup et c'est le meilleur que j'ai trouvé. Il a une interface utilisateur agréable et peut prendre en charge un certain nombre de types d'annotations différents. Les annotations sont stockées dans un fichier .annot distinct qui contient chaque annotation ainsi que son emplacement dans le document d'origine. Un mot d'avertissement cependant, si vous voulez finalement alimenter les annotations dans un classificateur comme l'outil Stanford NER, vous devrez faire quelques manipulations pour obtenir les données dans un format qu'il acceptera.
la source
Pour décrire toutes les données existantes, c'est une tâche si difficile, mais nous pouvons utiliser un modèle de données: http://schema.org/ , où sont les types structurels de l'information. L'exécution précédente visait à implémenter la technologie MarkUp, donc, cela peut être utile pour votre tâche.
la source