Shl*_*rtz 6 chat classification tf-idf elasticsearch precision-recall
试图改善我的聊天应用程序:
使用我的域中的先前(预处理)聊天交互,我构建了一个工具,为用户提供给定聊天上下文的5种可能的话语,例如:
Raw:"嗨,约翰."
上下文:嗨[[USER_NAME]]
话语:[嗨,你好,你好,你好,再次问好你好]
当然,结果并不总是相关的,例如:
Raw:"嗨,约翰.你好吗?我很好,你在办公室吗?"
背景:嗨[[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"
}
}
Run Code Online (Sandbox Code Playgroud)
问题:我肯定知道,对于上下文"hi [[USER_NAME]]你怎么样我很好你在办公室"说话"是的我是"是相关的,但是"是","否"也是相关的因为他们出现在类似的背景下.
尝试使用这个优秀的视频,作为一个起点
问:如果我所知道的(根据我的原始数据)只是一个真实的话语,我怎样才能衡量精确度和召回率?
我认为主要问题是是否有任何可接受的答案比其他答案更好?(是否存在相关性顺序?)如果没有,则可接受答案列表中的任何答案都是 TP。如果存在某种相关性顺序,您可以将其合并为 TP 程度和 FP 程度:
答案:A < B < C < D
D——最好;A - 最差但仍然可以接受
分配给 TP 的贡献:
A - 0.5 + 1/4*(1-0.5) = 0.625
D-TP:1.0;浮点数:0.0
A——目标价:0.625;浮点数:1-0.625 = 0.375
在这种情况下,任何不是最好的答案都是部分错误的,但由于它仍然在正确的集合中,因此对 TP 的相关贡献不应小于 0.5(因为它的补集对 FP 有贡献,甚至边缘正确答案应该不被视为比“好”更“坏”)。
正如你在上面看到的,我正在线性地处理订单惩罚。如果第一个答案特别好于其他答案等,您当然可以在这里引入您认为合适的任何惩罚函数。