自然语言查询预处理

时间:2014-11-23 13:53:12

标签: nlp information-retrieval

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

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

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

1 个答案:

答案 0 :(得分:1)

tf-idf(它没有大写,fyi)是一个很好的重量选择。你的直觉在这里是正确的。但是,您不能仅在训练集上计算tf-idf。为什么?你需要真正理解tf和idf的含义:

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

另一方面,

idf(逆文档频率)测量术语在随机文档中出现的可能性。它通常被计算为日志(N /文档匹配数)。

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