在原始数据缺失信息时测量精度和召回

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]]你怎么样我很好你在办公室"说话"是的我是"是相关的,但是"是","否"也是相关的因为他们出现在类似的背景下.

尝试使用这个优秀的视频,作为一个起点

问:如果我所知道的(根据我的原始数据)只是一个真实的话语,我怎样才能衡量精确度和召回率?

sop*_*ros 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;浮点数:0.0

A——目标价:0.625;浮点数:1-0.625 = 0.375

在这种情况下,任何不是最好的答案都是部分错误的,但由于它仍然在正确的集合中,因此对 TP 的相关贡献不应小于 0.5(因为它的补集对 FP 有贡献,甚至边缘正确答案应该不被视为比“好”更“坏”)。

正如你在上面看到的,我正在线性地处理订单惩罚。如果第一个答案特别好于其他答案等,您当然可以在这里引入您认为合适的任何惩罚函数。