2009-11-06 2 views

risposta

9

È possibile uscire dalla casella denominata entità chunking con il metodo nltk.ne_chunk(). Ci vuole un elenco di POS etichettato tuple:

nltk.ne_chunk([('Barack', 'NNP'), ('Obama', 'NNP'), ('lives', 'NNS'), ('in', 'IN'), ('Washington', 'NNP')])

risultati in:

Tree('S', [Tree('PERSON', [('Barack', 'NNP')]), Tree('ORGANIZATION', [('Obama', 'NNP')]), ('lives', 'NNS'), ('in', 'IN'), Tree('GPE', [('Washington', 'NNP')])])

Esso identifica Barack come persona, ma Obama come organizzazione. Quindi, non perfetto.

+1

E se non sono molto preoccupato per named_entities, ma in generale è un chunking. Ad esempio, "il cane giallo" è un chunk e "sta correndo" è un pezzo. – TIMEX

+0

Sì, per quello, non c'è difetto di conoscenza (anche se non so tutto su nltk, per essere sicuro). Potresti usare un RegexpChunkParser, anche se dovrai sviluppare da solo le regole. C'è un esempio qui: http://gnosis.cx/publish/programming/charming_python_b18.txt – ealdent

8

Non sono riuscito a trovare un chunker/parser superficiale predefinito. Sebbene il libro descriva come costruire e addestrare uno con caratteristiche di esempio. Fornire funzionalità aggiuntive per ottenere buone prestazioni non dovrebbe essere troppo difficile.

Vedere la sezione Capitolo 7 su Training Classifier-based Chunkers.