Frage

Ich möchte Namenerkennung verwenden (NER) angemessene Tags für Texte in einer Datenbank zu finden.

Ich weiß, dass es ein Wikipedia-Artikel über diese und viele andere Seiten NER beschreiben, würde ich vorzugsweise etwas zu diesem Thema hören von Ihnen:

  • Welche Erfahrungen haben Sie mit den verschiedenen Algorithmen machen?
  • Welcher Algorithmus würden Sie empfehlen?
  • Welche Algorithmus die einfachste ist (PHP / Python) zu implementieren?
  • Wie kommt man zum Algorithmen funktionieren? Ist manuelles Training erforderlich?

Beispiel:

"Letztes Jahr war ich in London, wo ich Barack Obama gesehen." => Tags: London, Barack Obama

Ich hoffe, dass Sie mir helfen können. Vielen Dank im Voraus!

War es hilfreich?

Lösung

mit Check-out starten http://www.nltk.org/ , wenn Sie mit Python-Arbeitsplan obwohl, soweit ich den Code weiß nicht, „industrielle Stärke“ ist, aber es wird Ihnen den Einstieg.

Sehen Sie sich Abschnitt 7.5 von http://nltk.googlecode.com /svn/trunk/doc/book/ch07.html aber die Algorithmen zu verstehen, dass Sie wahrscheinlich durch eine Menge von dem Buch zu lesen.

Auch diese Besuche http://nlp.stanford.edu/software/CRF- NER.shtml . Es ist geschafft mit Java,

NER ist kein einfaches Thema und wahrscheinlich niemand wird Ihnen sagen, „das ist der beste Algorithmus“, die meisten von ihnen haben ihre Vor- / Nachteile.

Mein 0,05 von einem Dollar.

Cheers,

Andere Tipps

Es hängt davon ab, ob Sie:

Um zu erfahren, NER : Ein guter Anfang ist mit NLTK und die damit verbundenen Buch .

, um die beste Lösung zu implementieren: Hier wirst du für den Stand der Technik zu suchen. Hier finden Sie aktuelle Publikationen in TREC . Eine speziellere Treffen ist Biocreative (ein gutes Beispiel für NER auf ein schmales Feld angelegt) .

die einfachste Lösung zu implementieren : In diesem Fall, dass Sie im Grunde nur einfaches Tagging tun wollen, und die Worte, wie Substantive getaggt herausziehen. Sie könnten einen Tagger von nltk verwenden, oder auch nur jedes Wort nachschlagen in PyWordnet und markieren es mit dem am häufigsten wordsense.


Die meisten Algorithmen benötigt eine Art von Training und beste Leistung, wenn sie auf Inhalt geschult sind, das repräsentiert, was du gehst, es zu fragen, zu markieren.

Es gibt ein paar Tools und APIs gibt.

Es ist ein Werkzeug auf der DBPedia gebaut genannt DBPedia Spotlight ( https: // GitHub. com / dbpedia-Scheinwerfer / dbpedia-Scheinwerfer / wiki ). Sie können ihre REST-Schnittstelle oder laden Sie verwenden und einen eigenen Server installieren. Die große Sache ist es abbildet Entitäten ihre DBPedia Präsenz, die bedeutet, dass Sie interessant verknüpften Daten extrahieren können.

AlchemyAPI (www.alchemyapi.com) hat eine API, die dies auch über REST tun, und sie verwenden, um ein Freemium-Modell.

ich denke, die meisten Techniken stützen sich auf einem wenig NLP Einheiten zu finden, die dann eine darunter liegende Datenbank wie Wikipedia verwendet, DBPedia, Freebase, etc Begriffsklärung und Relevanz zu tun (so zum Beispiel, versuchen zu entscheiden, ob ein Artikel, der von Apple erwähnt ist über die Frucht oder das Unternehmen ... würden wir das Unternehmen, wenn der Artikel enthält andere Einheiten wählen, die das Unternehmen).

Apple verbunden sind

Sie mögen Yahoo Research neuestes schnelle Einheit Linking-System versuchen - das Papier auch Hinweise auf neue Ansätze zur NER aktualisiert neuronalen Netzwerk basierende Einbettungen mit:

https://research.yahoo.com / Publikationen / 8810 / Leichtbau-mehrsprachiger-Entity-Extraktion-und-Verknüpfung

Eine künstliche neuronale Netze verwenden können Named-Entity Recognition auszuführen.

Hier ist eine Implementierung eines bidirektionalen LSTM + CRF-Netzwerk in TensorFlow (Python) Named-Entity Recognition auszuführen: https://github.com/Franck-Dernoncourt/NeuroNER (funktioniert unter Linux / Mac / Windows).

Es gibt state-of-the-art-Ergebnisse (oder nahe daran) auf mehrere Named-Entity Recognition Datensätze. Wie Ale erwähnt, jede Anerkennung Named-Entity-Algorithmus seine eigenen Nachteile und upsides hat.

ANN Architektur:

Wie in TensorBoard angesehen:

Ich weiß nicht wirklich über NER, aber von diesem Beispiel zu urteilen, könnten Sie einen Algorithmus machen, die für die Großbuchstaben in den Worten oder so etwas gesucht. Dafür würde ich empfehlen, regex als die einfachste Lösung zu implementieren, wenn Sie klein denken.

Eine andere Möglichkeit ist, die Texte mit einer Datenbank, wich Yould Matchstring Vorermittelte als Stichworte von Interesse zu vergleichen.

mein 5 Cent.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top