Estrazione entità / riconoscimento con strumenti gratuiti durante l'alimentazione Lucene Index


Attualmente sto studiando le opzioni per estrarre nomi di persona, posizioni, parole tecniche e categorie dal testo (molti articoli dal web) che verranno poi inseriti in un indice Lucene/ElasticSearch. Le informazioni aggiuntive vengono quindi aggiunte come metadati e dovrebbero aumentare la precisione della ricerca.

Ad esempio quando qualcuno interroga 'wicket' dovrebbe essere in grado di decidere se intende lo sport del cricket o il progetto Apache. Ho cercato di implementarlo da solo con un successo minore quindi lontano. Ora ho trovato molti strumenti, ma non sono sicuro se sono adatti per questo compito e quali di essi si integrano bene con Lucene o se la precisione dell'estrazione di entità è abbastanza alta.

Il mio traccia smal:

  • Qualcuno ha esperienza con alcuni degli strumenti elencati sopra e la sua precisione / richiamo? O se ci sono dati di allenamento richiesti + disponibili .
  • Ci sono articoli o tutorial in cui posso iniziare con entity extraction(NER) per ogni strumento?
  • Come possono essere integrati con Lucene?

Ecco alcune domande relative a tale argomento:

Author: Community, 2011-09-17

4 answers

Il problema che stai affrontando nell'esempio 'wicket' si chiama entità disambiguazione, non entità estrazione/riconoscimento (NER). NER può essere utile ma solo quando le categorie sono abbastanza specifiche. La maggior parte dei sistemi NER non ha una granularità sufficiente per distinguere tra uno sport e un progetto software (entrambi i tipi esulerebbero dai tipi tipicamente riconosciuti: persona, organizzazione, posizione).

Per la disambiguazione, hai bisogno di una knowledge base rispetto alle entità disambigua. DBpedia è una scelta tipica grazie alla sua ampia copertura. Vedi la mia risposta per Come usare DBpedia per estrarre tag/Parole chiave dal contenuto?{[6] } dove fornisco ulteriori spiegazioni e menziono diversi strumenti per la disambiguazione tra cui:

Questi strumenti usano spesso un'API indipendente dalla lingua come REST, e io no sappi che forniscono direttamente supporto Lucene, ma spero che la mia risposta sia stata utile per il problema che stai cercando di risolvere.

 16
Author: John Lehmann, 2017-05-23 12:33:59

È possibile utilizzare OpenNLP per estrarre i nomi di persone, luoghi, organizzazioni senza formazione. Basta usare modelli pre-esistenti che possono essere scaricati da qui: http://opennlp.sourceforge.net/models-1.5 /

Per un esempio su come utilizzare uno di questi modelli vedere: http://opennlp.apache.org/documentation/1.5.3/manual/opennlp.html#tools.namefind

 2
Author: Abul Fayes, 2014-07-08 13:16:01

Rosoka è un prodotto commerciale che fornisce un calcolo di "Salienza" che misura l'importanza del termine o entità al documento. La salienza si basa sull'uso linguistico e non sulla frequenza. Utilizzando i valori di salienza è possibile determinare l'argomento principale del documento nel suo complesso. L'output è nella tua scelta di XML o JSON che lo rende molto facile da usare con Lucene. È scritto in java. C'è una versione di Amazon Cloud disponibile all'indirizzo https://aws.amazon.com/marketplace/pp/B00E6FGJZ0. Il costo per provarlo è 0 0,99/ora. La versione di Rosoka Cloud non ha tutte le funzionalità API Java disponibili che il Rosoka completo. Sì, entrambe le versioni eseguono l'entità e il termine disambiguazione in base all'uso linguistico.

La disambiguazione, umana o software, richiede che ci siano abbastanza informazioni contestuali per essere in grado di determinare la differenza. Il contesto può essere contenuto all'interno del documento, all'interno di un vincolo corpus, o nel contesto degli utenti. Il primo è più specifico e il secondo ha la maggiore ambiguità potenziale. Cioè digitando la parola chiave "wicket" in una ricerca su Google, potrebbe riferirsi a cricket, Apache software o al personaggio Ewok di Star Wars (cioè un'Entità). Il generale La frase "Il wicket è custodito dal battitore" ha indizi contestuali all'interno della frase per interpretarlo come un oggetto. "Wicket Wystri Warrick era un maschio Ewok scout" dovrebbe enterpret " Wicket "come il nome dato dell'entità persona"Wicket Wystri Warrick". "Welcome to Apache Wicket" ha gli indizi contestuali che "Wicket" fa parte di un nome di luogo, ecc.

 0
Author: mike, 2013-10-28 13:42:58

Ultimamente ho armeggiato con Stanford crf ner. Hanno rilasciato un bel paio di versioni http://nlp.stanford.edu/software/CRF-NER.shtml

La cosa buona è che puoi addestrare il tuo classificatore. Si dovrebbe seguire il link che ha le linee guida su come addestrare il proprio NER. http://nlp.stanford.edu/software/crf-faq.shtml#a Sfortunatamente, nel mio caso, le entità nominate non vengono estratte in modo efficiente dal documento. La maggior parte delle entità passa inosservata.

Nel caso in cui lo trovi utile.

 0
Author: Abhro, 2015-09-26 06:25:22