Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用nltk检测不在表单上工作的国家名称_Python_Machine Learning_Nlp_Nltk - Fatal编程技术网

Python 使用nltk检测不在表单上工作的国家名称

Python 使用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

我正在分析包含此文本的表单

'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: 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如何在这个(或任何)解析器上重新训练“我的数据”?找不到与此相关的任何内容