【问题标题】:Natural language query preprocessing自然语言查询预处理
【发布时间】:2018-04-14 02:22:03
【问题描述】:

我正在尝试实现一个自然语言查询预处理模块,该模块将在给定以自然语言制定的查询的情况下,从该查询中提取关键字并将其提交给信息检索 (IR) 系统。

起初,我考虑使用一些训练集来计算术语的 tf-idf 值,并使用这些值来估计单个单词的重要性。但再想一想,这在这种情况下没有任何意义——我只有一个训练集合,但我无权访问 IR 数据的索引。仅使用 idf 值进行此类估计是否合理?或者也许是另一种加权方法?

您能建议如何解决这个问题吗?通常,我阅读的有关 NLP 处理的文章都针对训练和测试数据集。但是如果我只有查询和训练数据呢?

【问题讨论】:

  • “关键字”和“提交到 IR 系统”到底是什么意思?
  • 有一个信息检索系统(如谷歌),给定一个查询返回结果...我想从用自然语言编写的查询中提取最重要的词并将这些词用作新的查询此检索系统以获得更好的结果...

标签: nlp information-retrieval


【解决方案1】:

tf-idf(它不是大写的,仅供参考)是一个不错的重量选择。你的直觉在这里是正确的。但是,您不会单独在训练集上计算 tf-idf。为什么?您需要真正了解 tf 和 idf 的含义:

tf(词频)是一个统计数据,指示词是否出现在正在评估的文档中。计算它的最简单方法就是一个布尔值,即如果术语在文档中,则为 1。

idf(逆文档频率)另一方面,衡量一个词在随机文档中出现的可能性。它最常被计算为(N/文档匹配数)的对数。

现在,将为您的 IR 系统将索引的每个文档计算 tf(如果您无权执行此操作,那么您将面临一个更大且无法克服的问题,因为没有来源的 IR真相是矛盾的)。理想情况下,idf 是在您的整个数据集(即您正在索引的所有文档)上计算的,但如果这非常昂贵,那么您可以随机抽样您的人口以创建一个较小的数据集,或者使用训练集,例如 Brown语料库。

【讨论】:

  • 感谢您的回复。我了解 tf-idf 的工作原理,但问题是,我只有训练集和要预处理的查询集。所以问题是 - tf-idf(或只是 idf)是识别查询中关键字的正确方法吗?我无权访问 IR 系统,也无法为其数据编制索引(它们已编制索引,但我无法获取这些值……)
  • 如果您无权访问数据集(我猜这是一个班级作业?),那么您可以根据您的训练集计算 idf。但是,必须根据您正在评分的真实文档计算 tf,因为它特定于该文档。
  • 如果这不是一个任务,即你永远不会看到真正的文件,那么它会变得有点棘手。根据您的数据的索引方式,您仍然可以根据索引中的信息(关键字、标签等)计算 tf。然而,在这种情况下,tf-idf 加权失去了很多用处,因为索引数据可能已经与文档相关。如果是这种情况,我建议将 PageRank 作为一个很好的下一步。
  • 这是一种任务,但它旨在为现有的 IR 系统提供一些反馈和可能的改进。他们有他们的集合索引(我想),我可以向这个系统发送查询并检索结果(但是,我不能使用整个集合)。我工作的目的是开发一个系统,将 NLP 查询重新表述为标准查询,仅使用其中的一些关键字,否则很长,NLP 查询......
  • 仅根据 idf 选择关键字(并完全忽略 tf 部分)在这种情况下是否有意义?
猜你喜欢
  • 1970-01-01
  • 2016-07-19
  • 2019-06-28
  • 2013-03-06
  • 1970-01-01
  • 1970-01-01
  • 2015-07-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多