2009-03-03 13 views
11

Sono interessato a saperne di più su Natural Language Processing (NLP) e sono curioso di sapere se attualmente esistono strategie per riconoscere nomi propri in un testo che non si basano sul riconoscimento del dizionario? Inoltre, qualcuno potrebbe spiegare o collegare risorse che spiegano gli attuali metodi basati sul dizionario? Chi sono gli autorevoli esperti di PNL o quali sono le risorse definitive in materia?Strategie per il riconoscimento di nomi propri in NLP

risposta

11

il compito di determinare la parte corretta del discorso per una parola in un testo si chiama Part of Speech Tagging. Il Brill tagger, ad esempio, utilizza una combinazione di parole del dizionario (vocabolario) e regole contestuali. Credo che alcune delle parole importanti del dizionario iniziale per questo compito siano le parole di stop. Una volta che hai (per lo più corretto) parti del discorso per le tue parole, puoi iniziare a costruire strutture più grandi. This industry-oriented book distingue tra riconoscimento di frasi nominali (NP) e riconoscimento di entità nominate. Sui libri di testo: Allen's Natural Language Understanding è un buon libro, ma un po 'datato. Foundations of Statistical Natural Language Processing è una bella introduzione alla PNL statistica. Speech and Language Processing è un po 'più rigoroso e forse più autorevole. The Association for Computational Linguistics è una comunità scientifica leader nella linguistica computazionale.

+0

Grazie per le risorse. – VirtuosiMedia

6

Oltre l'approccio basato su dizionario, gli altri due mi vengono in mente:

  • approcci basati su pattern (in una forma semplice: tutto ciò che viene capitalizzata è un nome proprio)
  • approcci di apprendimento automatico (segnare nomi propri in un corpus di formazione e formare un classificatore)

Il campo è per lo più chiamato estrazione nome-entità e spesso considerato un sottocampo di informatio n estrazione. Un buon punto di partenza per i diversi campi della PNL è di solito il capitolo secondo nel Oxford Handbook of Computational Linguistics:

Oxford Handbook of Computational Linguistics http://ukcatalogue.oup.com/images/en_US/covers/medium/9780198238829_140.jpg

+0

Ah, grazie per il termine "estrazione di entità nominata". A volte capire i termini corretti è la parte più difficile quando stai appena iniziando a conoscere qualcosa. – VirtuosiMedia

2

Dipende da cosa si intende per dizionario-based.

Ad esempio, una strategia consiste nel prendere le cose che non sono in un dizionario e provare a procedere supponendo che siano nomi propri. Se ciò conduce a un'analisi ragionevole, considera l'ipotesi provvisoriamente convalidata e continua, altrimenti concludi che non lo sono.

Altre idee:

  • In posizione del soggetto, qualsiasi argomento semplice, senza un determinante è un buon candidato.
  • Idem in frasi preposizionali
  • in qualsiasi posizione, in base ad un aggettivo possessivo (ad esempio Bob in "La sorella di Bob") è un buon candidato

- MarkusQ

+0

Interessante idea di cose che non sono nel dizionario. – VirtuosiMedia

4

Prova a cercare "riconoscimento entità con nome" - questo è il termine utilizzato nella letteratura PNL per questo genere di cose.

0

alcuni toolkit suggeriti: 1. Opennlp: esiste un componente di riconoscimento di entità con nome per l'attività 2.LingPipe: anche un componente NER per questo 3. Pacchetto PNL di Stanford: pacchetto eccellente per uso accademico, forse non commerciale. 4. nltk: un pacchetto NLP Python

0

se si dispone di una frase come "chi è Bill Gates" E se si applica parte del tagger vocale ad esso. Darà risposta come

"chi/WP è/VBZ fattura/NN cancelli/NNS? /".

U può provare questo on-line sul http://cst.dk/online/pos_tagger/uk/

Quindi hai trovato quello che sono tutti i nomi in questa frase. Ora puoi facilmente estrarre questi nomi con qualche algoritmo. Ti suggerisco di usare Python se stai usando l'elaborazione del linguaggio naturale. Ha NLTK (Natural language toolkit) con cui puoi lavorare.

0

Se siete interessati alla realizzazione di elaborazione del linguaggio naturale e Python è il linguaggio di programmazione, allora questo può essere una risorsa molto istruttiva: http://www.youtube.com/watch?v=kKe4M4iSclc

Problemi correlati