Reconhecimento de entidade nomeada com expressão regular: NLTK
Eu tenho jogado com o kit de ferramentas NLTK. Me deparei muito com esse problema e procurei a solução on-line, mas em nenhum lugar obtive uma resposta satisfatória. Então, eu estou colocando minha consulta aqui.
Muitas vezes, o NER não identifica NNPs consecutivos como um NE. Eu acho que editar o NER para usar o RegexpTagger também pode melhorar o NER.
Exemplo:
Entrada:
Barack Obama é uma ótima pessoa.
Resultado:
Árvore ('S', [Árvore ('PESSOA', [('Barack', 'NNP')]), Árvore ('ORGANIZAÇÃO', [('Obama', 'NNP')]), ('é', 'VBZ'), ('a', 'DT'), ('ótimo', 'JJ'), ('pessoa', 'NN'), ('.', '.')])
enquanto que
entrada:
O ex-vice-presidente Dick Cheney disse à apresentadora de rádio conservadora Laura Ingraham que "estava honrado" por ser comparado a Darth Vader enquanto estava no cargo.
Resultado:
Árvore ('S', [('Anterior', 'JJ'), ('Vice', 'NNP'), ('Presidente', 'NNP'), Árvore ('NE', [('Dick', ' NNP '), (' Cheney ',' NNP ')]), (' informado ',' VBD '), (' conservador ',' JJ '), (' rádio ',' NN '), (' host ' , 'NN'), Árvore ('NE', [('Laura', 'NNP'), ('Ingraham', 'NNP')]), ('that', 'IN'), ('he', «PRP»), ('', '
'), (' was ',' VBD '), (' honrado ',' VBN '), ("' '", "' '"), (' para ',' TO '), (' ser ', 'VB'), ('comparado', 'VBN'), ('para', 'TO'), Árvore ('NE', [('Darth', 'NNP'), ('Vader', 'NNP' )]), ('while', 'IN'), ('in', 'IN'), ('escritório', 'NN'), ('.', '.')])
Aqui o Vice / PNN, Presidente / PNN, (Dick / PNN, Cheney / PNN), é extraído corretamente.
Portanto, acho que se o nltk.ne_chunk for usado primeiro e, se duas árvores consecutivas forem NNP, haverá grandes chances de que ambas se refiram a uma entidade.
Qualquer sugestão será realmente apreciada. Estou procurando falhas na minha abordagem.
Obrigado.