• Paul Shan
    2019-10-15
    倒排索引是通过词找出现这个词的文档集合。有了倒排索引,我们就可以快速找出包含用户输入的关键词序列的所有文档,这里用到了归并排序的思想加速求出包含所有关键字的文档集合。有了结果集合,下面找到结果集合的内部顺序,用的是向量夹角余弦从大到小排序。这里的两个向量分别是输入关键词序列对应的向量和文档对应的向量,每个分量是每个词的tf-idf值。向量夹角余弦可以看作两个单位向量的乘积,文档单位向量可以离线计算好,查询关键词向量维度少,容易计算。这样就能通过倒排索引快速找出相关程度从大到小的文档集合。
    
     1
  • leslie
    2019-07-16
    其实觉得搜索这块真的没有答案:自己把数据库索引的性能几乎用到了极限。
             搜索引擎觉得也如此:追求的是有效率,然后调整排序,适当调整各种顺序。。。
            觉得这是一条没有终点的路:老师的课程中推荐的计算机的原理的书大多买了,看了多遍还是。。。
    
    
  • qinggeouye
    2019-04-15
    23节中基于自然语言预处理方法(分词/取词干和归一化/停用词/同义词和扩展词等)、35节把文档和查询转换为向量形式,为了减小计算查询向量和所有文档向量间的夹角余弦的时间复杂度,利用17节的倒排索引可先过滤掉与查询关键词无关的文档。

    作者回复: 是的,结合这多个技术来实现

    
    
  • 拉欧
    2019-04-04
    “如果文档中词条的平均数量是 n,查询中词条的平均数量是 m,那么计算某个查询和某个文档之间的夹角余弦,时间复杂度是 O(n×m)。”
    这里两个向量的维度不同,怎么计算余弦夹角?

    作者回复: 其实是相同的,假设K是字典里所有词条的总数,那么两个向量的维度都是K,对于没有出现的词条,分量的值都是0,所以通常文档和查询向量都是稀疏向量,很多0分量。在计算夹角余弦的时候,0的分量都忽略不算了,所以时间复杂度会降低。这里再补充说明一下,如果向量存储使用哈希表,时间复杂度也可以降低到O(m),假设m<<n

    
    
我们在线,来聊聊吧