训练 spacy 模型不起作用:运行 train_ner 脚本无效

Training spacy model not working: running the train_ner script has no effect

我正在编写一个使用 spacy 模型 en_core_web_md 进行命名实体识别的程序。它没有正确识别我的所有实体:例如,有些人和组织的名字没有被识别出来。

我查找了如何训练模型并找到了这个脚本:https://github.com/explosion/spaCy/blob/master/examples/training/train_ner.py

我下载了脚本,将其放在与我的程序相同的文件夹中,将他们的训练数据替换为我自己的(包含我希望它识别的名称)和运行它,model="en_core_web_md"output_dir="model" 而不是 None.

我的项目涉及电子游戏角色,所以我的训练数据是:

TRAIN_DATA = [
    ("Who is Cave Johnson?", {"entities": [(7, 19, "PERSON")]}),
    ("I work for Aperture Science.", {"entities":[(11, 27, "ORG")]}),
    ("Wallace Breen is CEO of Black Mesa.", {"entities":[(0, 13, "PERSON"), (25, 35, "ORG")]}),

]

train_ner 脚本输出预期的结果。但是,当我 运行 我的其他程序时,它仍然无法将 "Cave Johnson" 识别为 PERSON 或将 "Black Mesa" 识别为 ORG。为什么脚本不起作用?

更新:仍然没有成功。我又运行脚本了,效果不明显。

更详细地查看 Github "issues",事实证明即使示例脚本只给它几个句子来训练它,当你 运行您应该实际使用数百个示例的脚本。

对于阅读文档没有 NLP 经验的人来说,这是不清楚的。 希望现在这个问题和答案会在人们搜索时出现,这样其他人就不必花数周时间思考他们做错了什么。

基本上,我只是需要更多的句子。