Python 训练斯帕西·斯帕纳学习印度名字
我正试图定制Spacy的NER来识别印度人的名字。 遵循本指南,这是我正在使用的数据集 根据规范,我应以以下格式提供培训数据:Python 训练斯帕西·斯帕纳学习印度名字,python,python-3.x,nlp,spacy,ner,Python,Python 3.x,Nlp,Spacy,Ner,我正试图定制Spacy的NER来识别印度人的名字。 遵循本指南,这是我正在使用的数据集 根据规范,我应以以下格式提供培训数据: TRAIN_DATA = [ ('Shivani', { 'entities': [(0, 6, 'PERSON')] }), ('Isha ', { 'entities': [(0,3 , 'PERSON')] }) ] 我如何向Spacy提供12000个名称的培训数据,因为手动指定每个实体将是一件繁琐
TRAIN_DATA = [
('Shivani', {
'entities': [(0, 6, 'PERSON')]
}),
('Isha ', {
'entities': [(0,3 , 'PERSON')]
})
]
我如何向Spacy提供12000个名称的培训数据,因为手动指定每个实体将是一件繁琐的工作?是否有其他工具可用于标记所有名称?如果您试图找出名称的索引,那么它非常简单
(0, len(name.split(sep=',')[0])-1)
您缺少为自定义名称培训NLP库的要点。培训数据必须是一个培训条目列表,每个条目都有一个句子文本,其中包含已识别名称的位置。请再次查看培训数据示例,了解您需要如何提供完整的句子,而不仅仅是名称 Spacy并不是一个匹配工具。你最好用其中的一些名字造出100个句子,然后在这些带注释的句子上训练空格。您可以根据需要添加更多完整的句子示例以提高准确性。Spacy的本地名称NER功能强大,不需要12000个示例
@AKU 35下面的答案提供了如何提供标有姓名位置的训练句子的示例。您当前提供训练数据的格式不会给您带来好的结果。Spacy需要如下所示格式的数据
TRAIN_DATA = [
('Shivani lives in chennai', {
'entities': [(0, 6, 'PERSON')]
}),
('Did you talk to Shivani yesterday', {
'entities': [(16, 22, 'PERSON')]
}),
('Isha bought a new phone', {
'entities': [(0,3 , 'PERSON')]
})
]
请参阅文档。关于自动注释12000个条目的问题,有一些工具可以帮助您快速注释数据。您可以使用(与spacy相同的开发人员),但这是一项付费服务。你可以在行动中看到它。
如果您放弃使用NER,那么模式匹配也可能对您很有用,如果您只需要在文档中查找名称,如果操作正确,也会更快更准确 如@ak_35所述,训练数据需要采用spaCy格式。
一种方法是使用,它提供了一个简单的UI来注释您感兴趣的实体(即个人): 注释相关名称后,可以通过执行以下操作查看输出:
# Output
dd['annotations'][0]
打开csv文件,使用
csv.reader
读取每一行,创建一个具有(名称,{'entities':[(x,y,'PERSON')]}
的元组,或者无论值是什么,都将其附加到训练数据中。这里没有什么特别复杂的东西,但是如果你尝试了它,却在某个地方卡住了,你可以向我们展示你的代码,以及它在哪里出错。这不是问题所在。
# Output
dd['annotations'][0]