Python 使用nltk检测不在表单上工作的国家名称
我正在分析包含此文本的表单 '1a。美国的 未将其检测为GPEPython 使用nltk检测不在表单上工作的国家名称,python,machine-learning,nlp,nltk,Python,Machine Learning,Nlp,Nltk,我正在分析包含此文本的表单 '1a。美国的 未将其检测为GPE from nltk import pos_tag, ne_chunk from nltk.tokenize import SpaceTokenizer tokenizer = SpaceTokenizer() toks = tokenizer.tokenize(cioms_) pos = pos_tag(toks) chunked_nes = ne_chunk(pos) nes = [' '.join(map(lambda x
from nltk import pos_tag, ne_chunk
from nltk.tokenize import SpaceTokenizer
tokenizer = SpaceTokenizer()
toks = tokenizer.tokenize(cioms_)
pos = pos_tag(toks)
chunked_nes = ne_chunk(pos)
nes = [' '.join(map(lambda x: x[0], ne.leaves())) for ne in chunked_nes if isinstance(ne, nltk.tree.Tree)]
chunked_nes
Out[83]: Tree('S', [(u'1a.', 'CD'), Tree('ORGANIZATION', [(u'Country', 'NNP'), (u'United', 'NNP'), (u'States', 'NNPS')])])
但当我把它改成“美国国家”时,它就被发现了
Out[81]: Tree('S', [Tree('PERSON', [(u'Country', 'NNP')]), Tree('GPE', [(u'United', 'NNP'), (u'States', 'NNPS')])])
为什么会这样?与
1a有关。
并没有预料到或引起问题。为什么不使用正则表达式删除意外项?这样分类就可以正常工作了。@NathanMcCoy我正在尝试从表单中提取信息。虽然regex适用于1种形式,但它不适用于其他4种形式,即“居住地”或“公民身份”而不是“国家”。我找不到任何东西能以如此普遍的方式满足所有这些情况。请让我知道你对此的想法。感谢您的回复,默认区块解析器是NEChunkParser
,它是NEChunkParserTagger
的一种,使用nltk.classify.MaxentClassifier
分类器。这意味着数据不能代表您的数据集。要么重新训练、预处理文本,要么使用不同的NE Chunker。@NathanMcCoy如何在这个(或任何)解析器上重新训练“我的数据”?找不到与此相关的任何内容