Question

J'aimerais utiliser la reconnaissance d'entité nommée (NER) pour trouver les balises adéquates pour les textes d'une base de données.

Je sais qu'il existe un article dans Wikipedia sur ce sujet et de nombreuses autres pages décrivant le TNS. J'entendrais de préférence parler de ce sujet à votre sujet:

  • Quelles expériences avez-vous faites avec les différents algorithmes?
  • Quel algorithme recommanderiez-vous?
  • Quel algorithme est le plus facile à implémenter (PHP / Python)?
  • Comment fonctionnent les algorithmes? Une formation manuelle est-elle nécessaire?

Exemple:

"L'année dernière, j'étais à Londres où j'ai vu Barack Obama." = > Tags: Londres, Barack Obama

J'espère que vous pourrez m'aider. Merci beaucoup d'avance!

Était-ce utile?

La solution

Commencez par vérifier http://www.nltk.org/ si vous envisagez de travailler avec python Bien que, à ma connaissance, le code ne soit pas une "force industrielle". mais cela vous aidera à commencer.

Consultez la section 7.5 de http://nltk.googlecode.com /svn/trunk/doc/book/ch07.html , mais pour comprendre les algorithmes, vous devrez probablement lire une grande partie du livre.

Vérifiez également cette http://nlp.stanford.edu/software/CRF- NER.shtml . C'est fait avec Java,

Le NER n’est pas un sujet facile et personne ne vous dira "c’est le meilleur algorithme", la plupart d’entre eux ont leurs avantages / inconvénients.

Mon 0,05 dollar.

A bientôt,

Autres conseils

Cela dépend si vous voulez ou non:

Pour en savoir plus sur le NER : NLTK est un excellent endroit pour commencer. et le livre associé.

Pour mettre en œuvre la meilleure solution : Ici, vous allez avoir besoin de rechercher l'état de l'art. Consultez les publications dans TREC . Une réunion plus spécialisée est la Biocreative (un bon exemple de NER appliqué à un champ étroit). .

Pour implémenter la solution la plus simple : Dans ce cas, vous souhaitez simplement effectuer un balisage simple et extraire les mots étiquetés en tant que noms. Vous pouvez utiliser un tagueur de nltk, ou même simplement rechercher chaque mot dans PyWordnet et le baliser avec le plus commun Wordsense.

La plupart des algorithmes nécessitaient une formation quelconque et donnaient de meilleurs résultats lorsqu'ils étaient formés à du contenu représentant ce que vous allez demander à baliser.

Il y a quelques outils et API sur le marché.

Il existe un outil basé sur DBPedia appelé DBPedia Spotlight ( https: // github. com / dbpedia-spotlight / dbpedia-spotlight / wiki ). Vous pouvez utiliser leur interface REST ou télécharger et installer votre propre serveur. L’avantage est de faire correspondre les entités à leur présence DBPedia, ce qui signifie que vous pouvez extraire des données liées intéressantes.

AlchemyAPI (www.alchemyapi.com) possède une API qui le fera également via REST, et utilise un modèle freemium.

Je pense que la plupart des techniques s'appuient sur un peu de PNL pour trouver des entités, puis utilisent une base de données sous-jacente telle que Wikipedia, DBPedia, Freebase, etc. concernant le fruit ou la société… nous choisirions la société si l'article incluait d'autres entités liées à la société Apple).

Vous voudrez peut-être essayer le dernier système de liaison d'entités rapide de Yahoo Research - le document contient également des références mises à jour vers de nouvelles approches du NER utilisant des intégrations basées sur des réseaux de neurones:

https://research.yahoo.com / publications / 8810 / légères-multilingues-extraction-de-liens

On peut utiliser des réseaux de neurones artificiels pour effectuer la reconnaissance d'entité nommée.

Voici une implémentation d'un réseau bidirectionnel LSTM + CRF dans TensorFlow (python) pour effectuer la reconnaissance d'entité nommée: https://github.com/Franck-Dernoncourt/NeuroNER (fonctionne sous Linux / Mac / Windows).

Il fournit des résultats à la pointe de la technologie (ou proches de ceux-ci) sur plusieurs jeux de données de reconnaissance d'entités nommées. Comme Ale l'a mentionné, chaque algorithme de reconnaissance d'entité nommée a ses propres inconvénients et inconvénients.

Architecture ANN:

 entrer la description de l'image ici

Comme vu dans TensorBoard:

 entrer la description de l'image ici

Je ne connais pas vraiment le TNS, mais à en juger par cet exemple, vous pouvez créer un algorithme qui recherche les majuscules dans les mots ou quelque chose du genre. Pour cela, je recommanderais regex comme la solution la plus facile à mettre en œuvre si vous envisagez de petites choses.

Une autre option consiste à comparer les textes avec une base de données, ce qui vous permet de faire correspondre une chaîne pré-identifiée en tant que balises d’intérêt.

mes 5 cents.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top