【发布时间】:2014-08-04 20:44:39
【问题描述】:
我是自然语言处理的初学者,我有一个关于计算词性标注器准确性的基本问题(标注器使用语料库):
(不要将下面的“集合”一词与集合的数学定义混淆。我只是用它作为一个普通的英语单词来传达一些“组”或“映射”)
有不同的准确度指标,例如 Precision/Recall 和 Confusion 矩阵。这两者都需要以下两件事作为输入参数:
1. 预测结果集:在 POS Tagger 在输入上运行之后,我们对输入词的标签进行了预测。这个参数我理解;它基本上是标注器使用语料库和一些统计技术生成的。这个集合是我们的预测
2. 实际结果集合:这个集合代表什么每个单词的实际标签应该是。这个集合是现实。
我的问题是关于第二个参数:这个集合应该如何“构造”。我是否应该手动构建一个将每个输入单词映射到 正确 标签的集合?手动,我的意思是阅读语料库,然后找到每个输入单词对应的标签。
所以我的问题基本上是:如果有一些代码可以计算 POS-Tagger 的准确度,那么计算出的准确度是多少?该代码如何知道单词到标签的正确映射是什么?如果它确实知道单词到标签的正确映射,那么为什么不使用 this 代码来进行标签本身呢? (我希望读者能理解我在这里的困惑)。
我将举这个例子:
输入句子:我是男孩。
预测标签:I_Pronoun am_Noun a_Article boy_Verb。 (标签的简化名称,显然是标签做错了)
实际标注应该是:I_Pronoun am_Verb a_Article boy_Noun
我知道标注应该是什么,但是准确度计算器如何代码知道实际的标记应该是什么?我是否应该为每个输入句子手动准备正确标签的映射,然后将其作为参数传递?
请注意,我知道 Precision/Recall 的计算方式。我只是在问:我如何告诉它正确的标记集是什么?
【问题讨论】:
-
你是对的:你需要“手动”准备词标签映射。这通常是通过将语料库的一部分(至少 20%)分离为测试数据而不将其用于训练来完成的。另请注意,在 POS 标记的情况下,准确率和召回率是相同的,所以您可以只说准确率。
-
感谢@VsevolodDyomkin
-
@VsevolodDyomkin 为什么精确率和召回率相同?我不明白..我认为每个标签都会有不同的精度/召回率(精度和召回率不同)。就像所有其他分类一样,它们会有不同的真阳性、假阳性、假阴性……对吗?我要做 TAGWISE 精确召回..
-
如果你计算每个标签,那么是的,精度/召回率会有所不同,但如果你计算一个聚合指标,它会是一样的,因为你有
N点你需要预测和如果你得到M正确,那么你的精确度是M/N- 并且回想一下,你有N建议并且你得到相同的M正确,所以它也是M/N
标签: machine-learning nlp scikit-learn pos-tagger