Nlp 如何改进空间模型以完全识别坐标?
我使用Wonder prodigy训练了一个自定义命名实体识别模型,但它无法识别以下坐标: “但是太阳是7°长,距离火星51'24” 如你所见,它给了我: [7°长51'24”] 但应该是这样的 [7°51'24”长] 有人能帮我解释一下为什么会这样吗 更多详情: 我用正则表达式为标签做了如下注释:日期、时间、坐标,然后我用Prodigy训练了自定义命名实体识别 我首先对每个标签执行此步骤 1-通过此命令编辑注释(例如,经度) 通过正则表达式编辑(由注释器)我的每注释数据。然后我合并了我的数据集。下一步是通过 2-bulid a模型(适用于所有合并数据) 问题: 我怎样才能有更好的注释关于长 现在我有一个模型,它有这样的结果:Nlp 如何改进空间模型以完全识别坐标?,nlp,annotations,spacy,named-entity-recognition,ner,Nlp,Annotations,Spacy,Named Entity Recognition,Ner,我使用Wonder prodigy训练了一个自定义命名实体识别模型,但它无法识别以下坐标: “但是太阳是7°长,距离火星51'24” 如你所见,它给了我: [7°长51'24”] 但应该是这样的 [7°51'24”长] 有人能帮我解释一下为什么会这样吗 更多详情: 我用正则表达式为标签做了如下注释:日期、时间、坐标,然后我用Prodigy训练了自定义命名实体识别 我首先对每个标签执行此步骤 1-通过此命令编辑注释(例如,经度) 通过正则表达式编辑(由注释器)我的每注释数据。然后我合并了我的数据
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的结果对句子进行分类?既然您试图识别的命名实体非常具体,一个坐标,它的形状定义得很好,为什么不使用模式/规则,例如正则表达式?在这里,您可以看到正则表达式可以完美地注释长字符串(我在regex101.com中测试) 但我不知道为什么训练后会出现一些错误(错误这不是问题,但我想知道为什么它会给我一部分跨度) 正如你在这里所说: 像 在第三行:[837是注释,但------->837双子座]是正确的 第四行中[7已注释,但------->7 51 21]是正确的
另一个注释是可以的,即使是时间,但是我们有10h 50m,看起来像是长的结构(不止一个单词)但这是正确的,我真的不知道问题出在哪里!非常感谢David的回答,实际上计划是首先用正则表达式提供规则方法,然后我们基本上注释所有数据,以便有一个空间模型,并可能改进注释(因为在prodigy中训练模型后,可以由annotor重新注释),我们将数据导入Prodigy(spaCY的产品)但是,即使s oRegex给了我们正确的坐标,在试验了mdoel之后,也有一些错误。但是正则表达式已经给了你正确的坐标,为什么不依赖正则表达式来找到这些LAT/LON和其他命名实体的统计模型呢?你可以同时使用这两个,只需使用一点soft.eng。你可以让你的管道同时使用这两个。我不知道我不知道如何使用这两种方法,因为我使用了“prodigy”来训练regex基于模型的预注释标签。从您的主代码中,您可以调用基于prodigy的模型,也可以应用regex,最后合并结果。您是说我应该使用除“LONG”之外的所有标签制作模型然后保存了数据,并将regex中的注释数据与结果合并为“LONG”。可能吗?请给我发送一个示例或链接,我不知道在prodigy中创建模式后如何保存数据
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
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.]+")
]