Domanda

Vorrei usare il riconoscimento di entità denominata (NER) per trovare tag adeguati per i testi in un database.

So che c'è un articolo di Wikipedia su questo e molte altre pagine che descrivono NER, preferirei sentire qualcosa su questo argomento da te:

  • Quali esperienze hai fatto con i vari algoritmi?
  • Quale algoritmo consiglieresti?
  • Quale algoritmo è il più semplice da implementare (PHP / Python)?
  • Come funzionano gli algoritmi? È necessaria una formazione manuale?

Esempio:

" L'anno scorso ero a Londra dove ho visto Barack Obama. " = & Gt; Tag: Londra, Barack Obama

Spero che tu mi possa aiutare. Grazie mille in anticipo!

È stato utile?

Soluzione

Per iniziare, consulta http://www.nltk.org/ se prevedi di lavorare con Python anche se per quanto ne so il codice non è "forza industriale" ma ti farà iniziare.

Consulta la sezione 7.5 da http://nltk.googlecode.com /svn/trunk/doc/book/ch07.html ma per capire gli algoritmi probabilmente dovrai leggere molto del libro.

Dai un'occhiata anche a http://nlp.stanford.edu/software/CRF- NER.shtml . È fatto con Java,

NER non è un argomento facile e probabilmente nessuno ti dirà "questo è il miglior algoritmo", la maggior parte di loro ha i suoi pro / contro.

I miei 0,05 dollari.

Saluti,

Altri suggerimenti

Dipende se vuoi:

Per conoscere NER : un ottimo punto di partenza è con NLTK e il libro associato .

Per implementare la soluzione migliore : Qui dovrai cercare lo stato dell'arte. Dai un'occhiata alle pubblicazioni in TREC . Un incontro più specializzato è Biocreative (un buon esempio di NER applicato a un campo ristretto) .

Per implementare la soluzione più semplice : in questo caso, in pratica, si desidera semplicemente eseguire la codifica semplice ed estrarre le parole contrassegnate come nomi. Puoi usare un tagger di nltk o anche solo cercare ogni parola in PyWordnet e taggarlo con il più comune wordsense.


La maggior parte degli algoritmi ha richiesto una sorta di addestramento e ha prestazioni migliori quando è addestrato su contenuti che rappresentano ciò che verrà richiesto di taggare.

Esistono alcuni strumenti e API disponibili.

Esiste uno strumento basato su DBPedia chiamato DBPedia Spotlight ( https: // github. com / DBpedia-riflettore / dbpedia-riflettore / wiki ). È possibile utilizzare la loro interfaccia REST o scaricare e installare il proprio server. Il bello è che associa le entità alla loro presenza DBPedia, il che significa che puoi estrarre interessanti dati collegati.

AlchemyAPI (www.alchemyapi.com) ha un'API che lo farà anche tramite REST e usano un modello freemium.

Penso che la maggior parte delle tecniche faccia affidamento su un po 'di PNL per trovare entità, quindi utilizzare un database sottostante come Wikipedia, DBPedia, Freebase, ecc. per fare chiarezza e pertinenza (quindi, ad esempio, provare a decidere se un articolo che menziona Apple è sulla frutta o sulla società ... sceglieremmo la società se l'articolo includesse altre entità collegate ad Apple la società).

Potresti provare il più recente sistema di collegamento rapido di entità di Yahoo Research - il documento ha anche riferimenti aggiornati ai nuovi approcci a NER utilizzando incorporamenti basati su reti neurali:

https://research.yahoo.com / pubblicazioni / 8810 / leggero-multilingue-entità-estrazione-e-linking

È possibile utilizzare reti neurali artificiali per eseguire il riconoscimento di entità nominate.

Ecco un'implementazione di una rete LSTM + CRF bidirezionale in TensorFlow (python) per eseguire il riconoscimento di entità nominate: https://github.com/Franck-Dernoncourt/NeuroNER (funziona su Linux / Mac / Windows).

Fornisce risultati all'avanguardia (o vicini ad esso) su diversi set di dati di riconoscimento di entità denominate. Come menziona Ale, ogni algoritmo di riconoscimento delle entità nominate ha i suoi lati negativi e positivi.

Architettura ANN:

 inserisci qui la descrizione dell'immagine

Visto in TensorBoard:

 inserisci qui la descrizione dell'immagine

Non so davvero di NER, ma a giudicare da quell'esempio, potresti creare un algoritmo che cerca le lettere maiuscole nelle parole o qualcosa del genere. Per questo, consiglierei regex come la soluzione più facile da implementare se stai pensando in piccolo.

Un'altra opzione è quella di confrontare i testi con un database, che è possibile abbinare stringa pre-identificata come Tag di interesse.

i miei 5 centesimi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top