网络信息检索(三)文本处理与索引
文章目录
一、文本特性
1:文本的统计特性-zipf定律
不同词的频率是如何分布的?
当文档集增大时,词汇表的大小如何变化?
以上这些因素影响信息检索的性能,包括词的权重,以及检索系统的其他方面
Zipf定律经常可以用来预测词频,因为词频*rank=k,那么只要知道k和词频就可以计算该词的rank。
D是词汇表长度,N是文档集的大小,对末尾的单词(rank为D的词大概率只会出现一次),他的rank如果等于D,词频等于1,那么有。把代入上面的,,即几乎有一半的单词只出现过一次。而大量的文档形成的文档库中只出现一次的词是罕有词,对我们的索引帮助不大,同样的出现频率非常高的词(the,a)这些也帮助不大。
好消息: 停用词占文本中的很大一部分,因此删除停用词可以大量减少索引文档的存储空间
坏消息: 对大多数词来说,进行词汇之间的相关分析并不容易,因为它们出现的次数比较少
2:词汇表的变化规律-Heaps定律
随着语料库的增长,词汇量是以平方根的速度扩展的,是可以扩展和预测的。
二、文本操作
1:文本预处理
在索引之前对文档集合进行预处理
在检索之前对查询进行预处理
(1)文本预处理的时机
(2)文本预处理的步骤
(i)网页噪声去除
- 网页中的内容除了主题内容外,还通常包含广告、版权声明、导航条等噪音信息,这些噪音内容会对基于网页内容的应用造成影响
- 网页噪声:主题内容无关的导航条、广告信息、版权信息以及调查问卷等内容,被称为“噪音”内容,或噪声网页
- 网页噪声干扰了网页原本的内容表现,影响了检索性能,必须去除
- 网页去噪过程就是保留网页中包含主题内容的内容块而去掉包含噪音内容的内容块
那么最重要的步骤就是确定内容块
标签密度(标签数与总文本数的比):非正文区域的标签密度较稠密(广告地区的超链接一个接一个,肯定多)
token既包含tag也包含我们需要的content,在主内容区域只有word没有tag,也就是说超链接比较少,都是核心内容。
2:词汇分析
(1)英文词法分析
(2)中文分词技术
一般都会将双子词先找出来
(i)统计方法
重点是分割中文双字词
(ii)基于规则的方法
对这个例子,我们设一个最大匹配长度,先拿出来五个字,“搜索引擎是”,如果匹配上就ok,如果每匹配上就减小字串长度(从最后面去掉一个字“是”),然后再到字典匹配就匹配上了。然后拿到“是上网工具”五个字,没找到,依次减去“具” “工”,“网”,“上”,剩下“是”没匹配到,我们再拿出最后四个字“上网工具”,然后就匹配到了上网和工具。
但是汉字博大精深啊,正向逆向的结果很可能差别非常之大
(iii)混合方法
3:排除停用词
4:词干提取
把各种时态的词语转化为单一的形式,我们不care时态问题。对英文来说很重要。
三、文本索引
1:索引在IR系统的位置
(1)为什么需要索引
之所以要半静态更新,是因为每次建立索引的代价还是蛮大的。
(2)什么样的数据结构是合适的?前向索引?
文档数目超多,要遍历所有的文档,每个词要在每个链表中进行顺序查询,效率也是极低的。
2:倒排索引的思想
- 都不在查询和文档中出现的词一般不影响cosine相似度
- 通常查询很短,因此查询矢量是非常稀疏(sparse)的
- 利用倒排索引来发现包含至少一个查询词的有限文档
既然我们需要的词很少,不如从词构建索引,而不是从文档构建索引。
每个词构建一个链表,输入一个查询词我们就可以找到所有出现的文档。从前向索引到倒排索引是一个性能上的飞跃。
(1)词汇表结构
(2)事件表的内容
时间表存储的信息决定了IR系统的功能强弱,
至于为什么支持短语查询,比如中国两个字,在一个文档中,我们查询了词出现的位置,那么只要这两个字是相邻出现的,那么就成功组成了一个短语。