请不要害怕与任务相关的细节,简单地说,我使用了出色的神童训练了一种用于自定义命名实体识别的模型,但是在此无法识别坐标
“但是太阳距离反对火星的距离是7°LONG 51’24”。
如您所见,它给了我
[7°长51’24”]
但是应该是这样
[7°51’24“长] 谁能帮助我,为什么会这样?
更多细节:
我已经用正则表达式对标签进行了标注,如下所示:日期,时间,坐标...然后我使用Prodigy训练了自定义命名实体识别
我首先对每个标签执行此步骤
通过此命令进行1-edit注释(例如,用于经度)
python -m prodigy ner.manual an_ner_date_time_02 en_core_web_sm AN_NER_DATE_TIME_01.jsonl --label LONG
(由注释者)通过正则表达式编辑我的每注释数据。然后,我合并了我的数据集。下一步是通过
建立模型2-建立模型(用于所有合并的数据)
python -m prodigy ner.batch-train data_merged_v06 en_core_web_sm --output Model_12 --n-iter 10 --eval-split 0.2 --dropout 0.2 --no-missing
问题: 关于长,我该如何更好地注释
所以现在我有一个具有以下结果的模型:
BEFORE 0.008
Correct 36
Incorrect 4438
Entities 2802
Unknown 0
# LOSS RIGHT WRONG ENTS SKIP ACCURACY
01 110.744 1614 163 1683 0 0.908
02 98.563 1660 107 1719 0 0.939
03 98.472 1668 96 1724 0 0.946
04 96.250 1673 93 1731 0 0.947
05 96.192 1679 80 1730 0 0.955
06 96.108 1678 71 1719 0 0.959
07 94.347 1681 67 1721 0 0.962
08 96.472 1679 66 1716 0 0.962
09 98.936 1681 57 1711 0 0.967
10 96.175 1681 57 1711 0 0.967
Correct 1681
Incorrect 57
Baseline 0.008
Accuracy 0.967
它可以为您在此处看到的数据添加注释(单击链接)
![注释文字]
![注释文字]
问题是您无法看到模型无法完美地学习坐标 7°长51’24”应该是 7°51’24”长
被错误地注释(但是在训练集中由正则表达式正确注释,但在测试集中没有由模型注释!)
您是否知道如何改善这一点?
第二个问题,如何使用ner的结果对句子进行分类?
答案 0 :(得分:1)
由于您要识别的命名实体非常具体,因此坐标,形状的定义都很好,为什么不使用模式/规则(例如正则表达式)呢?
答案 1 :(得分:0)
在这里您可以看到regex可以完美注释LONG(我在regex101.com中对其进行了测试)
regex_patterns = [
re.compile(r"\d{1,3}\s?°\s?\d{1,2}\s?[\'|’]\s?\d{1,2}\s?[\"|”|“]\s?[A-Z][a-z.]+" #LONG in format
"|\d{1,3}\s?°\s?\d{1,2}\s?[\'|’]\s?\s?[A-Z][a-z.]+"
"|\d{1,3}\s?°\s?\d{1,2}\s?[\'|’]\s?\d{1,2}\s?[\"|”|“]"
"|\d{1,3}\s?°\s?\d{1,2}\s?[\'|’]"
"|\d{1,3}\s?°\s?[A-Z][a-z.]+")
]
但是我不知道为什么在训练后会出现一些错误(错误不是问题,但是我想知道为什么它给了我一部分跨度)
喜欢 第三行:[带注释的是8 37,但是--------> 8 37双子座]是正确的 第四行中的[7带注释,但----------> 7 51 21]是正确的
另一个注释是可以的,即使对于TIME,我们也有10h 50m,看起来像长的结构(一个字以上),但这是正确的,我真的不知道出了什么问题!