35 | 文本检索:如何让计算机处理自然语言?
该思维导图由 AI 生成,仅供参考
什么是信息检索?
- 深入了解
- 翻译
- 解释
- 总结
本文介绍了如何使用向量空间模型进行自然语言处理。向量空间模型是信息检索领域的重要模型,通过将文档和查询转换为向量形式,并计算它们之间的相似度来实现相关性匹配。文章首先介绍了信息检索的基本概念和布尔模型,然后详细讲解了向量空间模型的应用步骤。在文档转为特征向量的过程中,作者提到了预处理步骤,包括词包、分词、词干处理等,以及如何使用词频和逆文档频率来赋予词的权重。通过这些步骤,读者可以了解到向量空间模型在自然语言处理中的重要性和应用方法。 在计算查询和文档的相似度之前,需要将查询转换成向量。由于查询的特殊性,需要注意查询和文档长度不一致、查询中出现了文档集合里没有的词以及查询词条的idf计算等问题。完成了查询向量和文档向量的计算后,可以对所有文档进行相似度排序,找出向量空间模型认为“最相关”的文章。文章还提到了排序和评估的步骤,以及对时间复杂度的简单分析。 最后,文章提出了思考题,引发读者思考和讨论。总的来说,本文通过介绍向量空间模型的基本原理和应用步骤,为读者提供了对自然语言处理中向量空间模型的全面了解和应用指导。
《程序员的数学基础课》,新⼈⾸单¥68
全部留言(15)
- 最新
- 精选
- 娄江国新增文档后,N肯定会发生变化,有很多的 df也会发生变化。 但当数据量大到一定程度时,少量的新增文档而导致的idf变化不大。实际处理时,应该不会每新增一个文档,就重新构建原文档的向量,而是在一定条件下触发原文档向量的构建,如:多长时间重新构建一次;或新增了多少文档重新构建一次;或手工触发重新构建。
作者回复: 结合实际工程,从不同的场景出发,很好的思考👍
2019-03-08224 - qinggeouye整个文档集合的词典的单词和词组的个数假设为 M ,文档数量假设为 N ,每个文档向量的维度是一致的吧,那么文档向量的维度应该也是 M 吧;所有文档向量就可以构成一个 M*N 的矩阵; 这样看来,假设文档集合新增了文档之后,要看从新增文档中提取出来的单词或词组,是否已经在包含在已有的词典当中,如果不是,那么就需要将这些单词或词组添加进词典,原有的文档向量就可能需要进行调整。 不知是否应该这样理解?
作者回复: 是的,完全正确,如果使用了idf可能还需要更新idf的值
2019-03-207 - 李二木这就是elasticesearch 查询原理吧
作者回复: Solr,es默认都会用这种,或者是变体
2019-03-0625 - 渣渣辉文本检索跟trie树有什么关联吗?
作者回复: 我想你这里说的文本检索应该是指的基于文本的信息检索或者搜索,如果是这样,涉及的内容很广,包括倒排索引、相关性模型、搜索自动完成和推荐,个性化排序等等。而Trie的结构比较具体,主要是用于实现基于前缀的查询,例如搜索自动完成。
2020-04-0623 - gaoch我想到这个向量的夹角可以描述不同文本的相似度,这里介绍了原理,就是不知道有没有哪个包可以实现向量构建?
作者回复: 很多nlp的包都支持,例如Python里的nltk,sklearn等等
2019-10-243 - CC9098第二,查询里出现了文档集合里没有的词。简单的做法是直接去除这维分量,也可以使用相对于其他维度来说极小的一个数值,这和分类中的平滑技术类似。 这里的去除这维分量,是说构建查询词的向量时,直接忽略词典没有的维度,保持和文档向量维度一致吗? 如果需要保持维度一致,那么选择极小值如何理解,这个是已经查询词向量已经比文档向量多了一个维度了吧?向量空间模型不需要保持两边维度一致吗?多出来的一些维度采用极小值就可以了吗?不会影响相似度计算效果吗?
作者回复: 好问题,这个时候可以在原有文档中增加一个维度,取值为0
2019-05-113 - Geek_7bc035老师,我觉得查询 用户输入和文档相似度的时候,时间复杂度应该以文档的维数为基准,而不是以用户输入的单词长度为准,因为用户输入里面没出现的维度,就用零来代替
作者回复: 这里说的时间复杂度,是没有进行任何优化的时候(比如,没有倒排索引)这个时候我们需要对每一个查询里的单词(共m个),和每篇文档中的每个词(平均m个),进行两两对比,所以是O(m*n)
2022-02-081 - A君信息检索领域的应用向量空间模型,只需要把文档和查询转成向量,再计算这些向量间夹角,找出相关性最强的文档。向量的维度数就是所有文档唯一词条的数量,向量的分量自然是与文档、查询的词条有关。如果向量分量是布尔值,就损失掉了词条的权重信息;如果用词频代替布尔值,词条信息就会被众多高频词冲掉,因此还要加上词条在整个集合中出现的逆词频信息,即tf-idf。 向量空间模型有一个很大的缺点,即向量维度过大。在推断时,假设字典大小是n,而查询字符串的长度是m,那要构建一个查询向量的时间复杂度就是O(n*m)
作者回复: 是的
2020-12-091 - 建强思考题: 文档集合中新增文档后,如果用tf-idf来构建文档向量,除了构建新增文档的向量,也需要更新其它文档的向量,因为idf的计算公式中,需要用文档总数和词条在所有文档中出现的频率来计算,因此,文档总数发生变化,idf也需要随之变化。
作者回复: 没错������
2020-08-301 - J.Smile“假设查询的平均长度(或词条数量)远远小于文档的平均长度,我们把查询的平均长度记做 m,那么对于每次计算查询向量和文档向量的相似度,时间复杂度都是 O(m)“ --------------------------------------------------------------------------------- 老师,这个时间复杂度O(m)中的m指的是平均的查询的分词个数吧?比如我爱北京天安门,如果分词为[我,爱,北京,天安门]这四个词,构建出的查询向量也只有这四个有效的维度,因此时间复杂度就是O(4),是这样理解的吗?
作者回复: 是的
2020-02-281