返回列表

3rd Place Solution

618. USPTO - Explainable AI for Patent Professionals | uspto-explainable-ai

开始: 2024-04-24 结束: 2024-07-24 法律检索 数据算法赛
第三名解决方案 - c-number

第三名解决方案

作者: c-number (Grandmaster)
发布时间: 2024 年 7 月 27 日
竞赛排名: 第 3 名

我想向组织者表示诚挚的感谢,感谢他们创造了这个迷人的优化挑战,同时也感谢 dedicated 的竞争对手们不知疲倦地修复了 Whoosh,确保了一场有效的竞赛。

查询优化

正如许多参与者指出的那样,令牌可以使用以下方法进行 AND 连接,而不会增加由 whoosh_utils.count_query_tokens 测量的“令牌数量”:
ti:token1-token2

最终查询由这些子查询 OR 连接组成,例如:
(ti:token1-token2) OR (ab:token3-token4-token5) OR …

遗憾的是,我未能发现将不同字段的令牌合并到单个子查询中的更强魔法。

子查询搜索

对于每个样本,生成多达数千个子查询候选。对于专利的每个小子集(通常 subset 大小 ≤ 3),选择并采用该子集中所有专利共有的令牌。

子查询选择

采用混合整数规划 (MIP) 求解器来确定最佳查询。在此上下文中,“最佳”指的是使用随机 test_index 最大化找到的目标专利数量,该 test_index 覆盖与 train_index 相同数量的专利。更多细节可以在共享 notebook 中找到。

关键策略

  1. 在 C++ 中实现子查询搜索,采用多线程和积极的算法优化以提高搜索速度。
  2. 考虑标题、权利要求和 CPC 字段中的所有令牌,而仅使用摘要和描述字段中频率最低的 100,000 个令牌以降低计算复杂度。

改进空间

  1. 利用更强的魔法。
  2. 使用 CUDA 实现更密集的搜索。
同比赛其他方案