我第一次接触自然语言处理还是研一的时候,当时我读的是那本经典书籍《数学之美》,之后我就对NLP/文本挖掘/IR方向兴趣比较大,所以也一直想毕业后去搜索相关公司。但是考虑到自己的基础水平,迟迟没有深入研究,其实主要原因是我一直在补计算机类基础知识呢,因为我是比较看重基础的,现在还差编译原理了,时间不够用了,也得感叹下,要学的知识太多了。前几天双11买了本《统计自然语言处理》,打算深入的研究下,所以这2天我把北京大学的文本挖掘的课件快速的看了看,算法之类的公式推倒我没细看,主要是记录下一些知识点。
本人主要是给自己看的,所以比较乱,也没有逻辑可言。基本上都是关键知识点,比如一些专有名词等等。
一、分词
(1)分词基本方法
1.最大匹配法
基于其他匹配的分词方法:
1> 最大匹配法 (Maximum Matching method)
匹配的方法是从左向右
2> 逆向最大匹配法 (Reverse Maximum method)
匹配方向与MM法相反,是从右向左。
实验表明:对于汉语来说,逆向最大匹配法比最大匹配法更有效。
3> 双向匹配法(Bi-direction Matching method)
比较MM法与RMM法的分词结果,从而决定正确的分词。
4> 最佳匹配法(Optimum Matching method, OM法)
将词典中的单词按它们在文本中的出现频度的大小排列,高频度的单词排在前,频度低的单词排在后,从而提高匹配的速度。
5> 联想-回溯法(Association-Backtracking method)
采用联想和回溯的机制来进行匹配。
2.最大概率法分词
基本思想是:
(1)一个待切分的汉字串可能包含多种分词结果
(2)将其中概率最大的那个作为该字串的分词结果
3.最短路径分词方法
基本思想:
在词图上选择一条词数最少的路径
(2)词性标注
自动词性标注就是用计算机来自动地给文本中的词标注词性。
1.标注技术路线:
基于概率统计和基于规则
(3)文档模型
1.布尔模型
2.向量空间模型(VSM)
3.概率模型
Term Weights 、Term frequency (tf) 、Inverse document frequency (idf)
(4)文本间相似性计算
1.基于概率模型的相关度
2.基于VSM的相关度计算方法
基于向量空间模型的常用方法:
欧氏距离(很少使用)
向量内积
向量夹角余弦
1>余弦相似度
2>Jaccard相似度
(5)文本序列
序列比较可以分为四种基本情况:
(1)两条长度相近的序列相似找出序列的差别
(2)一条序列是否包含另一条序列(子序列)
(3)两条序列中是否有非常相同的子序列
(4)一条序列与另一条序列逆序相似
相似度:它是两个序列的函数,其值越大,表示两个序列越相似
距离:距离越大,则两个序列的相似度就越小
1>海明距离
2>编辑距离
通过点矩阵进行序列比较
(6)TextTiling
TextTiling (Hearst and Plaunt 1993)is one of the most famous system forTopic Segmentation.(对文档分段)
TextTiling method:
1>先把文档分成块(tile),每块k个句子。
2>计算相邻块之间的相似度,用标准的文档相似度计算公式。
3>用结果绘图。非常相似处会出现波峰,很不相似的地方出现波谷。选择波谷处作为分界线,把块组成段,这些段很可能是有关同一个Subtopic的。
(7)特征空间的变化
1>Latent Semantic Analysis (LSA)
LSI思想方法最初应用于文本信息检索领域有效地解决了同义词和多义词的问题,通过识别文本中的同义词, LSI将信息检索精度提高了10%–30%.(查询扩展)
Latent Semantic Indexing (LSI)
基本方法:
利用矩阵理论中的“奇异值分解(singular value decomposition,SVD)”技术,将词频矩阵转化为奇异矩阵(K×K)
基本步骤:
1.建立词频矩阵,frequency matrix
2.计算frequency matrix的奇异值分解分解frequency matrix成3个矩阵U,S,V。U和V是正交矩阵(UTU=I),S是奇异值的对角矩阵(K×K)
3.对于每一个文档 d,用排除了SVD中消除后的词的新的向量替换原有的向量
4.用转换后的文档索引和相似度计算
(8)词频矩阵
词频矩阵:矩阵表示一组文档
1>行对应关键词t,列对应文档d向量
2>将每一个文档视为空间的一个向量
3>向量值反映单词t与文档d的关联度
二、文本检索技术
1.基于分类的检索
2.基于主题词的检索
3.基于元数据的检索
1.信息检索模型:
IR模型可形式地表示为一个四元组< D, Q, F, R(qi,dj) >
其中:
D是一个文档集合,
Q是一个查询集合,用户任务的表达
F是一个框架,用以构建文档,查询以及它们之间关系的模型
R(qi,dj) 是一个排序函数,它给查询qi和文档 dj 之间的相关度赋予一个排序值
2.布尔检索模型
3.向量空间模型(VSM)
4.概率模型
5.语言模型
1>一元(Unigram)模型
假设词与词之间是相互独立的,一个词出现的概率与这个词前面的词没有存在必然联系。 P (W 1W 2 ..W n ) = P (W 1 ) P (W 2 )… P (W n )
2>N元(NGram)模型
假设词与词之间是相互关联的,一个词出现的概率与这个词前面的词存在一定的关联。
二元(Bigram)模型
P (W1W 2 ..W n ) = P (W1 ) P (W 2 | W1 )… P (W n | W n −1 )
N元(NGram)模型
P(WW2..Wn ) = P(W )P(W2 | W )… (Wn | Wn−1Wn−2..W1)
检索质量的评价:
文本检索的基本度量
1>查准率(precision):既相关又被检索到的实际文档与检索到的文档的百分比。
2>查全率(召回率recall):既相关又被检索到的实际文档与查询相关的文档的百分比
索引作用:
索引
1>提供从记录的特征快速查询到记录的数据结构(B树、散列表、位图索引等)
2>数据库,文档数据库,SE/IR系统
签名文件:
定义:是一个记录每一个文档的特征的文件
方法:每一个特征对应一个固定长度的位串,一个比特位对应一个词汇,若某一位对应的词出现在文档中则该位置1,否则置0。
按位操作进行匹配,确定文档的相似性
可以多词对应一个比特位,来减少位串的长度,但增加搜素开销,存在多对一映射的缺点。
倒排索引创建-算法优化
1>Term编码(词典组织)
每个term用整数编码,减小存储空间
英文-前缀编码
(liber,liberal,liberalist…)
散列表(MPH,无冲突散列)
2>减少磁盘的随机访问次数
<termid,docid>在内存中排序,排序结果分
批写入磁盘,最后合并。
两趟算法,在内存中直接倒排,小倒排文件
分批写入磁盘,最后多路合并。
3>数据压缩
倒排索引创建-两趟算法
索引创建–两趟算法
1.Parsing ,提取index term,统计df和tf,通过hash表转换为term id,生成词典文件(lexicon file)。
2.按统计得到的index term的tf,df属性,可以估计出对应posting list长度,预申请空间。再次parsing文档集,在内存中执行倒排。结果保存到临时文件。
3.对多次生成的临时倒排文件,多路合并,压缩输出,得到最终倒排文件。
倒排索引创建-整数压缩
三、文本自动分类技术
文本自动分类:
基本步骤
1>定义分类体系
2>将预先分类过的文档作为训练集
3>从训练集中得出分类模型(需要测试过程,不断细化)
4>用训练获得出的分类模型对其它文档加以分类
文本分类基本步骤:
1. 用户定义分类树
2. 用户为分类节点提供训练文档
3. 特征选择
4. 训练
5. 自动分类
评价指标:
「准确率」(P, precision)
「召回率」(R, recall)
特征抽取
特征抽取(feature extraction):
1>预处理
去掉html一些tag标记
禁用词(stop words)去除、词根还原(stemming)
(中文)分词、词性标注、短语识别、…
词频统计 (TF DF)
数据清洗:去掉噪声文档或文档内垃圾数据
2>文本表示
向量空间模型
3>降维技术
特征选择(Feature Selection)
特征重构(Re-parameterisation,如LSI)
特征选择:
目的
避免过拟合(over fitting),提高分类准确度
• 如果经过某种学习之后的分类模型,使得训练文档适应得很好(导致很高的自动分类精度),但对训练集之外的文档显得差许多,则称此时的学习模型有Over-fitting problem
• 希望模型的表现对训练集和未知文档基本一致。
通过降维,大大节省计算时间和空间
• 样例空间涉及的总词项数很大(N在10万量级),但每篇文档只涉及其中的一小部分(例如一篇网页通常只有几百个词)(到1/10 – 1/100,甚至更多)
特征选取的方法:
1>文档频率法(DF, document frequency)
2>信息增益法(information gain)
3>互信息法(mutual information)
4>The χ^2 test(chi-square,开方拟合检验)
特征选择–DF:
基于DF的启发式要点
1>太频繁的词项没有区分度
• Term的DF大于某个阈值去掉太稀有的词项独立表达的类别信息不强
• 稀有词项的全局影响力不大
• 在训练集中,某些文档如果有某个稀有词项,它们通常也会有一些常见词项(对那一类)和通常信息获取观念有些抵触:稀有的更有代表性(这是一种ad hoc方法,不依据什么理论)
2>最容易实现,可扩展性好
特征选择–RSJ:
特征选择–熵:
1>设信息出现(例如“硬币出现某一面”,“一篇文档属于某一类”)的概率空间p = {p1, p2, …, pm}
2>在引入某个词项t之前,系统的熵(即一个随机文档落入某个类的概率空间的熵)
3>在观察到t以后,文档落入某个类ci的概率就应该是条件概率P(ci|t)
对应于相关表中的A/A+C
注意,对不同的ci,每个分量不一定相同
4>term类别分布的熵
该值越大,说明分布越均匀,越有可能出现在较多的类别中;
该值越小,说明分布越倾斜,词可能出现在较少的类别中
特征选择–相对熵:
相对熵(not 交叉熵):也称为KL距离(Kullback-Leibler divergence)反映了文本类别的概率分布和在出现了某个特定词汇条件下的文本类别的概率分布之间的距离。
该值越大,词对文本类别分布的影响也大。
特征选择–信息增益IG
信息增益(Information Gain, IG):
该term为整个分类所能提供的信息量
t出现与否导致的熵的变化
不考虑任何特征的熵和考虑该特征后的熵的差值
特征选择–互信息MI:
1>统计语言学建模的一种方法,是评估两个随机变量X, Y相关程度的一种度量。
2>X, Y分别对应词项t的出现情况和类别的出现情况
3>关心的P(t), P(c), P(t,c)都可以通过统计训练集中的数据情况得到
特征选择–χ^2 (卡方):
1>源于统计学的卡方分布(chi-square)
2>从(类,词项)相关表出发
3>χ2 统计量:
度量两者(term和类别)独立性的缺乏程度χ2 越大,独立性越小,相关性越大若AD<BC,则类和词独立, N=A+B+C+D
特征选择–Term强度(TS):
term strength
一种新颖的角度,考察一个词项在“相似文档”中出现的可能性
假定我们已经有了一个相似文档的集合S,设x, y为其中任意两个文档,那么词项t对这个集合的术语强度为s(t) = Pr(tєy|tєx)
S中的文档要满足一定的“相似度”指标,S不一定就是训练集中的那些类。通常由聚类来确定S。
分类算法:
1>决策树(Decision Trees)
2>KNN算法(K-Nearest Neighbour)
3>贝叶斯网络(Bayes Network)
4>神经网络(Neural Networks)
5>Boosting
6>支持向量机(SVM)
四、文本自动聚类技术
什么是聚类?
聚类(簇Cluster): 数据对象的集合在同一个簇中,数据对象是相似的不同簇之间的对象是不相似的。
什么是聚类分析?
聚类分析就是按照一定的规律和要求对事物进行区分和分类的过程,在这一过程中没有任何关于类分的先验知识,没有指导,仅靠事物间的相似性作为类属划分的准则。
一个数据集合分组成几个簇
聚类分析是一种无监督分类:没有预定义的类
聚类分析(Clustering):给定一数据样本集X{X1,X2,…,Xn},根据数据点间的相似程度将数据集合分成k簇{C1,C2,…,Ck}的过程称为聚类分析。
文本聚类基本步骤:
1.用户指定用于聚类的数据集合
2.特征选取
3.聚合: 将每个文档分配到相应的类中
4.标注: 给每个聚类选择关键词
什么是一个好的聚类方法?
1>聚类方法的好坏:该方法是否能发现某些或所有的隐含模式;
一个好的聚类方法要能产生高质量的聚类结果——簇,这些簇要具备以下两个特点:
高的簇内相似性
低的簇间相似性
2>聚类结果的好坏取决于:
聚类方法采用的相似性评估方法
该方法的具体实现;
聚类算法:
1>划分方法
2>层次方法
3>密度方法
4>网格方法
5>在线聚类
五、话题检测跟踪技术 Topic Detection and Tracking (TDT)
六、文本过滤技术(IF)
信息过滤的定义:
从动态的信息流中将满足用户兴趣的信息挑选出来,用户的兴趣一般在较长一段时间内比较稳定不会改变(静态)
信息过滤系统的特点:
新信息的产生速度很快,相对来说,人的兴趣变化比较缓慢,可以看成相对静态的和稳定的。
信息过滤主要借用信息检索和用户建模(User modeling)两个领域的技术。
用户的需求或者兴趣通常采用User Profile建模来表示。
新信息到来的时候,根据用户的User Profile,有选择地挑出信息给用户。
基于内容的过滤与协同过滤
七、关联分析技术
关联规则挖掘:
简单的说,关联规则挖掘就是发现大量数据中项集之间有趣的关联在交易数据、关系数据或其他信息载体中,查找存在于项目集合或对象集合之间的频繁模式、关联、相关性或因果结构。
六和七结合起来,其实就是推荐系统,可以参考下面3篇文章。
探索推荐引擎内部的秘密,第 2 部分: 深入推荐引擎相关算法–协同过滤
探索推荐引擎内部的秘密,第 3 部分: 深入推荐引擎相关算法–聚类
八、文档自动摘要技术
1>提示字串法
2>频率统计法
3>文章框架法
4>信息提取法
5>理解分析法
6>仿人算法
九、信息抽取
1>实体提取
上下文无关实体的提取
• Context-Free Entity Extraction
2>基于规则的实体提取
关系提取(Relational Extraction)
文本信息抽取的方法
1>有限状态机
2>Wrapper
3>Hidden Markov Models
十、智能问答(QA)技术
主要方法
1>Pattern-based Approach
2>Knowledge-Based Approach
3>Web-based Approach
十一、本体(Ontology)
给出构成相关领域词汇的基本术语和关系,以及利用这些术语和关系构成的规定这些词汇外延的规则的定义。
之后再放几张当时的截图吧: