gpt4 book ai didi

在一个搜索框的所有模型查询中识别关键字类别的算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:14:41 24 4
gpt4 key购买 nike

我的目标是在搜索引擎项目(如 LinkedIn)中提供一个搜索框的所有模型。

我试着用一个类比来表达我的问题。

假设每个结果都是一篇文章,并且具有多个维度,例如作者、主题、 session (如果是出版物)、托管网站等。

一些示例查询:

  • “authorXYZ 在 IEEE 的信息检索论文”:三个维度{topic、conf-name、authorname}

  • “authoABC 关于设计模式的 ACM 论文”:三个维度{conf-name、作者、主题}

  • “javaranch 的多线程编程”:二维{主题、网站}

在从数据库中检索最终结果之前,我必须在大型查询中识别这些维度和相应的关键字。

积分

  • 我可以访问所有维度的所有可能值。例如,我有所有的 session 名称、作者姓名等。
  • 跨维度的术语几乎没有重叠。

我的方法(幼稚)

  • 使用 Lucene,使用名为“维度”的专用字段和另一个具有实际值的字段为每个维度中的所有关键字编制索引。 例如:

    1) {name:IEEE, dimension:conference}等

    2) {name:ooad, dimension:topic}等

    3) {name:xyz, dimension:author}等

  • 按原样使用查询搜索索引。
  • 在一定程度上迭代结果并识别具有新维度的第一个文档。

问题

  • 不确定何时停止识别结果集中的维度。例如,查询可能只包含两个维度,但结果可能匹配 3 个维度。
  • 如果我还想包括拼写检查,它会变得更加复杂,而且结果往往不太准确。

引用论文、文章或指出描述我的问题领域的正确术语等肯定会有所帮助。

非常感谢任何指导。

最佳答案

解决方案 1:如何使用自然语言处理命名实体识别 (NER) 来解决您的问题。现在 NER 可以使用简单的正则表达式来完成(以防数据过于静态),或者您可以使用一些机器学习技术,如隐马尔可夫模型来实际找出序列数据集中的命名实体。与其他机器学习监督算法相比,我强调 HMM 的原因是因为你有顺序数据,每个状态都依赖于前一个或下一个状态。 NER 会为您输出维度以及相应的名称。之后,您的搜索就变成了垂直搜索问题,您只需在不同的 Solr/Lucene 字段中搜索已识别的词,并相应地设置您的提升。

现在进入实现部分,我假设您在使用 Lucene 时了解 Java,因此 Mahout 是一个不错的选择。 Mahout 内置了一个 HMM,您可以在您的数据集上训练和测试模型。我还假设您有大数据集。

解决方案 2:尝试将此问题建模为属性图问题。查看 Neo4j 之类的东西。我建议这样做,因为您的问题属于无模式域。您的架构不固定,问题可以很好地建模为图形,其中每个节点都是一组键值对。

解决方案 3:正如您所说,您拥有所有可能的维度值,为什么不使用正则表达式将所有非结构化数据从文本简单地转换为结构化数据,然后再次使用没有固定模式,因此将数据存储在任何 NoSQL 键值数据库中。他们中的大多数都提供了用于全文搜索的 Lucene 集成,然后只需在这些数据库上进行搜索即可。

关于在一个搜索框的所有模型查询中识别关键字类别的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19175328/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com