0

我正在编写 csv 文件来训练Watson Retrieve and Rank服务中的排名器,其中包含许多行 [query,"id_doc","re​​levance_score",...]。
关于这个文件的结构,我有两个问题:

  1. 我必须区分两个文档,具体取决于查询是否包含“不”一词。更详细:
    • 第一个文档的正文和标题包含“经理”
    • 第二份文件的正文和标题包含“非经理”

因此,如果查询类似于“我是经理。我该如何......?” 那么第一个文件是正确的,但不是第二个。如果查询类似于“我不是经理……”,那么第二个文档是正确的,但不是第一个。
是否有任何特定的语法可用于以正确的方式编写查询?也许使用布尔运算符?这个文件是应用这种过滤器的正确位置吗?

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

谢谢!

4

1 回答 1

1

是否有任何特定的语法可用于以正确的方式编写查询?也许使用布尔运算符?这个文件是应用这种过滤器的正确位置吗?

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

也就是说,您当然可以向训练数据中添加至少两行,如下所示:

  • 第一个可以有问题文本“我是经理。我该怎么做”以及相应的正确文档 ID 和正整数相关性标签。
  • 第二行可以包含问题文本“我不是经理。我该怎么做”以及非经理的回答文档 ID 和正整数相关性标签。

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

此文件中使用的相关性分数是否与 Web 界面相同?

不完全是,Web 界面使用 1-4 星评级来改进数据收集的 UI,但随后在生成排名器的训练数据时将星级评级压缩到较小的相关标签规模。我认为压缩给出了不好的答案(即星级< 3)的相关性标签0并通过了更高的星级,因此有效地有3个级别的评级(尽管UI团队中的某个人可能会在细节上添加说明,如果需要)。对于底层的排名算法来说,糟糕的答案获得相关标签很重要的。0

于 2017-04-27T22:30:22.730 回答