IBM Watson 检索和排名服务 - 布尔运算符

IBM Watson retrieve and rank service - boolean operator

我正在编写 csv 文件来训练 Watson Retrieve and Rank 服务中的排序器,其中有很多行 [query,"id_doc","relevance_score" ,...].
我对这个文件的结构有两个问题:

  1. 我必须根据查询是否包含单词 "not" 来区分两个文档。更具体:
    • 第一个文档的body和标题包含"manager"
    • 第二个文档的body和标题包含"not manager"

因此,如果查询类似于 "I'm a manager. How do I....?",那么第一个文档是正确的,但第二个文档不是。 如果查询类似于 "I'm not a manager..." 那么第二个文档是正确的,但不是第一个。
是否有任何特定的语法可用于以正确的方式编写查询?也许使用布尔运算符?这个文件是应用这种过滤器的正确位置吗?

2. 该服务还有一个用于训练排序器的网络界面。本网站使用的评分是:1-> 不正确的答案,2-> 与主题相关但没有回答问题,3-> 好,但可以改进,4-> 完美的答案。
此文件中使用的相关性分数与网络界面中使用的相关性分数相同吗?

谢谢!

Is there any particular syntax that can be used to write the query in a proper way? Maybe using boolean operator? Is this file the right place to apply this kind of filter?

正如您所暗示的,此文件不是使用过滤器的合适位置。训练数据将用于确定排序器在尝试优化 Solr 搜索结果的排序时应注意哪些类型的词汇重叠特征(有关更多信息,请参见此处的讨论:)。

也就是说,您当然可以像这样向训练数据中添加至少两行:

  • 第一个可以有问题文本 "I'm a manager. How do I do something" 以及相应的正确文档 ID 和正整数相关性标签。
  • 第二行可以包含问题文本 "I'm a not manager. How do I do something" 以及非经理的回答文档 ID 和正整数相关性标签。

有了足够数量的此类示例,希望排序器能够学会关注二元词汇重叠特征。如果这不起作用,您当然可以使用预检测 manager vs not manager 并应用适当的过滤器,但我相信这是通过单独的参数 (fq?)...因此您可能必须修改 train.py 以适当地传递过滤器查询(默认 train.py 接受完整查询并通过 q/fcselect 端点)。

Is the relevance score used in this file the same one of the web interface?

不完全是,Web 界面使用 1-4 星评级来改进 UI 用于数据收集,但随后在为排名器生成训练数据时将星级评级压缩到较小的相关标签范围.我 认为 压缩给出了 错误答案 (即星级 < 3)相关标签 0 并将较高的星级作为是这样的,实际上有 3 个级别的评级(尽管 UI 团队中的某个人可以在需要时添加对细节的澄清)。 对于基础排名算法很重要, 错误的答案 收到 0 的相关标签。