shr*_*hal 2 python nlp python-3.x spacy ner
我正在尝试自定义Spacy的NER来识别印度名字。遵循本指南https://spacy.io/usage/training,这是我使用的数据集https://gist.githubusercontent.com/mbejda/9b93c7545c9dd93060bd/raw/b582593330765df3ccaae6f641f8cddc16f1e879/Indian-Female-Names.csv
根据代码,我应该以以下格式提供训练数据:
TRAIN_DATA = [
('Shivani', {
'entities': [(0, 6, 'PERSON')]
}),
('Isha ', {
'entities': [(0,3 , 'PERSON')]
})
]
Run Code Online (Sandbox Code Playgroud)
如何为Spacy提供约12000个名称的培训数据,因为手动指定每个实体都是一件繁琐的事情?是否有其他工具可以标记所有名称?
您错过了为自定义名称训练NLP库的要点。训练数据必须是训练条目的列表,每个训练条目都有一个句子文本,并带有所标识名称的位置。请再次查看培训数据示例,以了解您需要如何提供完整的句子而不仅仅是名称。
Spacy并非要成为宪报的匹配工具。您最好生成100个使用其中某些名称的句子,然后对带注释的句子进行Spacy训练。您可以根据需要添加更多完整的例句示例,以提高准确性。Spacy的本地NER名称功能很强大,不需要12000个示例。
@ ak_35在下面的答案提供了一些示例,这些示例如何提供带有标记名称位置的训练句子。
小智 5
您当前用于提供TRAIN_DATA的格式不会为您带来良好的效果。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')]
})
]
Run Code Online (Sandbox Code Playgroud)
请参阅此处的文档。谈到有关自动执行注释12000条目任务的问题,有一些工具可以帮助您快速注释数据。您可以使用神童(与spacy相同的开发人员),但这是一项付费服务。您可以在此处查看它的运行情况。万一您放弃NER,如果您只需要在文档中查找名称,则模式匹配也可能对您很有效,如果操作正确,它也会更快,更准确。
Suj*_*DSa -3
如果您想找出名称的索引那么这很简单
(0, len(name.split(sep=',')[0])-1)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2856 次 |
| 最近记录: |