签名文件(Signature File)、
是逐项反转法和全面扫描的结合
它也需要索引空间,相当于是取二者的折中。
和算法“词嵌入”的概念是很类似的。
“签名文件”利用重叠编码的方式将文件转化成一个固定长度的签名(signature)来加速字符串比对。(一会有案例)
每个词都会有一个定长的数字编码。文件签名就是文章中所有词的重叠编码。可能比较抽象:
案例:
比如文件中出现“信息”和“检索”这两个关键词,若“信息”的编码是10100011,“检索”的编码是“10101111”则重叠后的编码文件为“10101111”
(也就是把对应位置or(有一个是1那就是1了)起来)这就是这篇文件的文件编码。
查询过程:我现在查两个关键词,就会把两个关键词重叠,然后进行搜索,然后1的位置都有,那就说明文件里有这两个关键词。
缺点就是,有时,1的位置对到了,也不一定有这个关键词。比如“文件”的编码是10001000,那就很容易被搜索到没有这个关键词的文件
所以签名文件这个阶段只能用于过滤,搜索有时不够准确
但是签名文件还有二阶段,也就是类似全面扫描的功能,相当于利用第一阶段过滤掉大部分文件,注意因为这些文件也不一定有该关键词,所以需要用全文扫描的方法,在进行and比对搜索。
第一阶段不一定有该词,但是没检索到的一定没有。
第二阶段就是运用全面扫描进行搜寻。
注意,第一阶段检索之后要求得到的文件是极少量的,否则就要修改编码规则。
因为签名文件的编码比较简单,所以内存比逐项扫描需要的储存空间少,比全面扫描多一些。
扫描速度是逐项反转最快,签名文件次之,全面扫描最慢,
虽然签名文件有二者折中的优越性,但是有一个致命的缺点,它很难有扩充性,尤其是对数据的删除和修改情况。虽然一度引起学界高度的兴趣,但是西文系统很少使用签名文件的方法
但是就中文而言,此法恰好可以适用。因为我们可以以字为单位,中文有5000个常用字:比如文章经常出现哪些字。我们就规则出现这个字的位置就是1.比如信息。信就规定第3个位置为1,息就规定第4个位置为1。因为中文的常用字很多,所以中文使用这个5000个字除以8,也就占500,600个bit,储存空间很小。
注意一下这个和之后词签名的内容很相似。
关键词索引逐字比对法:
2.进阶信息检索技术
(目前的搜索引擎在使用的技术。):
向量空间技术*(Vector Space Model)(目前的搜索引擎在使用的技术。)
Gerard salton(信息检索之父)提出。并根据这个模型得到smart System
该技术将每个文件(document)和查询(query)看成N维空间坐标上的一个点,每一个维度代表一个关键词。每个文件(document)和查询(query)的值是通过TF*IDF的值来得到的。(TF是文章出现次数,IDF是信息量)
通过计算点和点的距离(相似度计算:similarity computation)来寻找出和此查询相近似的文件(距离越短说明越相似)。然后按距离排序输出(document ranking)
案例:
K1-K11是我们对关键词的编号。于是我们向量空间的维度就是11.
IDF标准是以2为底,但是以10为底也可以Lg(文章总数/出现在几篇文章)。越大说明出现越少,信息越重要。越小越无用
***一定要在文章数够大的时候再用iDF,这里只是举例。
DF就是在几篇文章出现(document Frequency)
TF是这个关键词在具体的一批文章(或者查询)里出现的次数(term Frequency)
将查询Q1,Q2和4篇文章写作11个维度下的坐标点。(weight=TF*IDF)
整体会形成矩阵。
数值越大说明重要性越好。
|D1|代表向量的长度。类似欧式距离。
前面的新世航和新世航一号,就比较
我们选择用向量之间的cos0代表他们的相似程度。
公式就是每个点的各个位置指标相乘的累加求和除以距离乘积。(similarity computation)
也就是两个向量做内积。
正规划就是将向量除以各自的长度。那么它的欧式距离就是一了
都变成单位向量之后,做内积。对于位置相乘相加。
范围是0~1.
D1>D1=D2=D4
其实就是词袋模型。不过这个用于信息检索,词袋模型用于算法各类内容。
概率式检索模型(Probabilistic Retrieval Model)
神经网络模型(Neural Network Model)
-
-
- 文本挖掘的处理流程(步骤)
-
1.与数据挖掘处理不同之处。
数据挖掘:
先进行数据收集,
然后汇总到数据仓库。
然后按数据库选择筛选指令,得到数据超市(项目可能要使用的数据)
然后就可以按数据挖掘(结构化数据预处理,数据挖掘的建模)
文本挖掘:(自然语言处理+数据挖掘)
把你需要的文本数据爬进来,或者向报社等社团收集
放入文本数据库
进行信息检索(也就是我们的信息检索技术提取出来)
得到目标文本数据
然后进行文本挖掘
(之前说的)
自然语言处理
非结构化数据的预处理,
非结构转结构化,比如词袋模型
进行模型建立(和数据挖掘一样的算法了)
总结!!
自然语言处理,也就是文本分析单元的提取,分词和词性标注
文本特征提取,和文本有关的关键词出来,(非结构转结构:词袋模型(为什么要叫词袋因为文字原本是有先后顺序,但是放入向量(关键词)维度坐标了,它就没有先后顺序了),Word2vec,Glove(后二者是有顺序的。比较热门))