尝试改善我的聊天应用:
使用我域中之前(预处理)的聊天交互,我构建了一个工具,为用户提供了5种可能的话语,例如:
原始:"嗨约翰。"
上下文:hi [[USER_NAME]]
话语:[嗨,你好,你好,你好,再次问好你好]
当然,结果并不总是相关的,例如:
原始:"嗨约翰。你好吗?我很好,你在办公室吗?"
上下文:嗨[[USER_NAME]]你好我在办公室你好吗 话语:[是,否, 您好 ,是的, 你好吗
我使用Elasticsearch与TF / IDF相似性模型和索引结构如下:
{
"_index": "engagements",
"_type": "context",
"_id": "48",
"_score": 1,
"_source": {
"context": "hi [[USER_NAME]] how are you i am fine are you in the office",
"utterance": "Yes I am"
}
}
问题:我肯定知道上下文" hi [[USER_NAME]]你好我在办公室你好吗?#34;话语"是的我"是相关的,然而"是" ,"否"也是相关的,因为它们出现在类似的背景下。
尝试使用此excellent video作为起点
问:如果我所知道的(从我的原始数据中)只是一个真正的话语,我如何衡量精确度和回忆?
答案 0 :(得分:1)
我认为主要的问题是是否有任何可接受的答案更好? (是否有相关的顺序?)如果没有,那么可接受答案列表中的任何答案都是 TP。如果存在某种相关性顺序,您可以将其合并为 TP 度和 FP 度:
答案:A < B < C < D
D - 最好的; A - 最差但还可以接受
分配给 TP 的贡献:
A - 0.5 + 1/4*(1-0.5) = 0.625
D - TP:1.0; FP:0.0
A - 目标价:0.625; FP:1-0.625 = 0.375
在这种情况下,任何不是最好的答案都是部分错误的,但由于它仍然在正确的集合中,对 TP 的相关贡献不应小于 0.5(因为它的补充对 FP 和偶数边界有贡献)正确答案不应被视为比“好”更“坏”)。
正如你在上面看到的,我正在线性地处理订单惩罚。如果第一个答案特别好于其他答案等,您当然可以在此处引入任何您认为合适的惩罚函数。