我的个人博客:逐步前行STEP
搜索引擎结构
文本预处理
分词
文本分词一般是先将文本分成独立的单词,然后取出标点符号,去除停止词,停止词就是一些使用频率高但是没有实际意义的词,比如:a、an、the、are等等
语言处理
对于英文来说,先是统一大小写,再对单词进行缩减,缩减过程主要有两种,一种是词干提取,即抽取词的词干或者词根,如:tional 缩减为 tion (去除形容词后缀)二是词形还原,即把词汇还原成一般形式,如:books 缩减为 book。
建立索引
经过文本预处理之后,得到的结果为词(Term),将得到的词创建成字典,然后对字典按字母顺序排序,最后合并相同的词,形成文档倒排表(Posting List),因为这个表中,是根据词来查找文档的,所以称为文档倒排表或者倒排索引。
搜索
根据用户的输入,进行词法分析、语法分析、语言处理然后从文档倒排表中获取结果,为了将最相关的结果显示在最前面,需要对搜索结果做相关性排序。
相关性排序
把查询语句也视为一个文档,查询语句与文档的相关性就转变成了文档之间的相关性问你题,而一个文档中的每个词对于表达一个主题的重要性不一样,不同权重的词共同表达了这个主题。
有两个元素会影响一个词在文档中的重要性:一是词频率(Term Frequency,tf),表示一个词在此文档中出现的次数,它的值越大说明这个词越重要;二是文档频率(Document Frequency,df),表示多少文档中包含这个词,它的值越大,说明这个词越不重要。
以下公式用于计算一个词的权重:
而衡量两个文档相似度可以将两个文档当成向量,向量夹角越小越靠近,也就是说文档向量夹角越小,相似度越高,即相关性可以用以下公式来描述: