El reconocimiento de una entidad nombrada es un tipo específico de extracción de fragmentos que utiliza etiquetas de entidades junto con etiquetas de fragmentos.
Las etiquetas de entidad comunes incluyen PERSONA, UBICACIÓN y ORGANIZACIÓN. Las oraciones etiquetadas con POS se analizan en árboles de fragmentos con fragmentación normal, pero las etiquetas de los árboles pueden ser etiquetas de entidades en lugar de etiquetas de frases de fragmentos. NLTK ya tiene un fragmentador de entidades con nombre preentrenado que se puede usar usando ne_chunk()
el método en el módulo nltk.chunk. Este método fragmenta una sola oración en un árbol.
Código n. ° 1: uso de ne-chunk() en la oración etiquetada del corpus treebank_chunk
from nltk.corpus import treebank_chunk from nltk.chunk import ne_chunk ne_chunk(treebank_chunk.tagged_sents()[0])
Producción :
Tree('S', [Tree('PERSON', [('Pierre', 'NNP')]), Tree('ORGANIZATION', [('Vinken', 'NNP')]), (', ', ', '), ('61', 'CD'), ('years', 'NNS'), ('old', 'JJ'), (', ', ', '), ('will', 'MD'), ('join', 'VB'), ('the', 'DT'), ('board', 'NN'), ('as', 'IN'), ('a', 'DT'), ('nonexecutive', 'JJ'), ('director', 'NN'), ('Nov.', 'NNP'), ('29', 'CD'), ('.', '.')])
se encuentran dos etiquetas de entidad: PERSONA y ORGANIZACIÓN. Cada uno de estos subárboles contiene una lista de las palabras que se reconocen como PERSONA u ORGANIZACIÓN.
Código #2: Método para extraer entidades nombradas usando hojas de todos los subárboles
def sub_leaves(tree, label): return [t.leaves() for t in tree.subtrees( lambda s: label() == label)]
Código # 3: usar el método para obtener todas las hojas de PERSONA u ORGANIZACIÓN de un árbol
tree = ne_chunk(treebank_chunk.tagged_sents()[0]) from chunkers import sub_leaves print ("Named entities of PERSON : ", sub_leaves(tree, 'PERSON')) print ("\nNamed entites of ORGANIZATION : ", sub_leaves(tree, 'ORGANIZATION'))
Producción :
Named entities of PERSON : [[('Pierre', 'NNP')]] Named entites of ORGANIZATION : [[('Vinken', 'NNP')]]
Para procesar varias oraciones a la vez, chunk_ne_sents()
se utiliza. En el siguiente código, las primeras 10 oraciones de treebank_chunk.tagged_sents()
se procesan para obtener ORGANIZACIÓN sub_leaves()
.
Código #4: Entendamoschunk_ne_sents()
from nltk.chunk import chunk_ne_sents from nltk.corpus import treebank_chunk trees = chunk_ne_sents(treebank_chunk.tagged_sents()[:10]) [sub_leaves(t, 'ORGANIZATION') for t in trees]
Producción :
[[[('Vinken', 'NNP')]], [[('Elsevier', 'NNP')]], [[('Consolidated', 'NNP'), ('Gold', 'NNP'), ('Fields', 'NNP')]], [], [], [[('Inc.', 'NNP')], [('Micronite', 'NN')]], [[('New', 'NNP'), ('England', 'NNP'), ('Journal', 'NNP')]], [[('Lorillard', 'NNP')]], [], []]
Publicación traducida automáticamente
Artículo escrito por Mohit Gupta_OMG 🙂 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA