gpt4 book ai didi

algorithm - bool 搜索与非 bool 搜索

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

我在尝试理解什么是非 bool 搜索(如果有意义的话)时遇到了一些问题。据我所知, bool 搜索允许在查询中使用 AND、OR 和 NOT。但是非 bool 搜索呢?我在某处读到这意味着您可以搜索子字符串,而不仅仅是完整的单词,但我想确保我完全理解每个字符串的含义。另外,也许一个例子会有所帮助,例如,Google 是 bool 值还是非 bool 值? Oracle Text 或 Apahe Solr 怎么样?

最佳答案

非 bool 搜索包括不是纯 bool 模型技术的方法1

这种方法最常见的例子可能是 vector-space model .
在这个模型中,每个文档都是一个向量,由它包含的单词(或二元语法,...)表示。每个文档的维度是词汇表中的术语数。

此模型中的相似性是通过创建“假”文档(即查询)并将此假文档与语料库中的任何其他文档进行比较来完成的。文档与查询越相似 - 结果越好。

常见的相似性度量是 cosine-similarity .
这个模型很适合tf-idf model (td-idf 确定每个向量的每个条目中的值是什么)。

请注意,这不是 bool 模型。您不对“集合”进行操作,而是比较向量的相似性——这是完全不同的模型。
此外,该方法还有一个重要的优势——它返回与每个文档关联的分数,而不仅仅是“相关”或“不相关”的 bool 答案。

原样的向量空间不允许 AND、OR 运算,但是通过进行两阶段搜索可以很容易地解决这个问题。第一个是使用 bool 模型来获得候选,第二个是使用向量空间来获得每个文档的分数。


其他模型正在构建 language model从文档中提取 - 语言模型被描述为 P(word|M) = 模型 M 生成单词的概率

常见的语言模型是P(word|document) = #occurances(word,document)/|document|
为了避免概率为零——我们通常添加平滑技术。一种常见的技术是:

P(word|document) =  alpha*#occurances(word,document)/|document| + (1-alpha)*#occurances(word,corpus)/|corpus|

现在 - 当我们查询多个词时:q=t1 t2 ... tn,我们计算:

P(q|d) = P(t1|d)*P(t2|d)*...*P(tn|d)

请注意,此模型实际上通过设置 alpha=1 允许 AND 语义,通过 alpha!=1 允许 OR 语义。


(1) bool 搜索基本上是一组术语:

每个术语都与一个集合相关联,该集合包含包含该术语的所有文档。现在,您只需对一组集合进行集合操作。 AND 是交集,OR 是并集。

关于algorithm - bool 搜索与非 bool 搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22064506/

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