• 班课2


    1. galloping search

    搜索的时候在找到目标之前成倍数的加快搜索进度,如指针所指的第一个不是目标,就往后跳一位,依然不是跳两位,然后四位,依此类推,直到比目标数更大时停止,使用binary search在现在所指的数与前一位数之间寻找目标值

    目标值所在的位置称为n,所需跳的步数为log2n,二分法查找复杂度也为log2n,所以总时间复杂度为log2n

    但是上面的操作针对的是只有一行数据的时候,若存在两条数据,根据下面的公式对复杂度继续进行化简

    复杂度化简后得到2|K1|*log2(|K2|/|K1|), 可以得到当K1与K2相近时,搜索的复杂度接近于线性搜索

    2. Multiple term conjunctive queries

    多个query做and操作,若某一个数据行的第一个数很大,其他的数据行上的指针就以log2n的复杂度向后skip,速度很慢。可以的解决方式是以最短的数据行作为基准。针对最短数据第一个值x对应查找下一列可不可以skip到相同的数y,若是skip到了比x大的停下来,看x后面的数是不是与y相同,相同则输出,若依然小于y则第一行数据skip到y。若是比y大了则正常往后走,称为max algorithm

    3. pre-progress

    a) 获取文件后首先转为一段段统一形式的文件,document unit。若文件过大,如将一本书划分为一个unit,可以得到我们想要的信息但是不需要的信息过多;若是划分的很细则增加了查找困难,如划分成每句话为一个unit,所以划分要小心

    b) tokenization即去掉标点符号等无用的信息,提取逐个单词,删除的时候以及什么时候两个单词被划分为一个整体这些问题都要进行考虑

    c) 将数字作为meta data

    stop words为停顿词,即the a and to be等

     d) normalization

    意思相同的词统一成一个形式,包括将大写全改为小写

    方法可以手动去定义,且可以根据发音自动纠错

    lemmatization指am are is转化为be等

    stemming可以将词性进行统一

    #document与query所进行的操作必须一样

    e) 将用到的语言进行标注

    4. 

  • 相关阅读:
    Easyui datagrid 修改分页组件的分页提示信息为中文
    Easyui datagrid 实现表格记录拖拽
    Java:内部类
    算法导论:Trie字典树
    算法导论:找零钱问题
    lintcode:组成最大的数
    lintcode:验证二叉查找树
    lintcode:将二叉查找树转换成双链表
    lintcode:二叉树的路径和
    lintcode:字符串置换
  • 原文地址:https://www.cnblogs.com/eleni/p/13754071.html
Copyright © 2020-2023  润新知