1. 自然语言处理
1.1 词法分析
PKU 自然语言处理主页 自然语言处理导论课程讲义 中文文本的自动分词] 绪论 导论 语义分析
分词
功能与定义
- 中文分词(Chinese Word Segmentation)
- 最短路分词
- N-最短路分词(NSP):该分词算法将分词转化为图的最短路径问题,NSP分词算法是句子粗分的基本算法。该算法的形象解释以及伪代码可以参见该文
- CRF分词: 条件随机场(参见CSDN),一种机器学习技术。CRF由John Lafferty于2001年最大熵模型和隐马尔科夫模型的基础上,提出的一种判别式概率无向图学习模型,是一种用于标注和切分有序数据的条件概率模型。
- 随机场可以看成是一组随机变量的集合(这组随机变量对应同一个样本空间)。当给每一个位置按照某种分布随机赋予一个值之后,其全体就叫做随机场。
- 马尔科夫随机场(MRF)对应一个无向图,这个无向图上的每一个节点对应一个随机变量,节点之间的边表示节点对应的随机变量之间有概率依赖关系。因此,MRF的结构本质上反应了先验知识——哪些变量之间有依赖关系需要考虑,而哪些可以忽略。
- CRF本质上是给定了观察值(observations)集合的MRF。
- 索引分词: 索引分词就是面向索引的分词。适合于类似于Lucene等文本检索中用到的分词,该分词算法主要考虑召回率和准确率。
- 极速词典分词:[没有找到专门的定义]
- 用户自定义词典:[没有找到专门的定义]
相关工具
- Stanford Word Segmenter采用CRF(条件随机场)算法进行分词,基于Java 开发
词性标注(Part-of Speech Tagging)
功能与定义
相关工具
命名实体识别(Named Entity Recognition)
- 中国人名识别
- 音译人名识别
- 日本人名识别
- 地名识别
- 实体机构名识别
命名实体识别(NER)系统的目标是识别所有文字提及的命名实体。可以分为两个子任务: 确定NE的边界和确定其类型。 命名实体经常是信息提取中关系识别的前奏。
命名实体识别是一个非常适合用基于分类器
类型的方法来处理的任务,这些方法类似于名词短语分块中的方法。
当完成命名实体识别之后, 一旦文本中的命名实体已经被识别,就可以开始提取它们之间的关系了。 通常,先寻找指定类型的命名实体之间的关系。进行这一个任务的方法之一是首先寻找所有的(X,alpha,Y)形式的三元组, 其中X和Y是指定类型的命名实体,alpha是表示X和Y之间的关系的字符串。
信息提取系统的典型结构从断句开始,然后是分词和词性标注,接下来在产生的数据中搜索特定类型的实体。信息提取系统着眼于文本中相互邻近的实体,并尝试确定实体之间是否有指定关系。
相关工具
Stanford Named Entity Recognizer
关键词抽取
- TextRank关键词提取: TextRank算法基于PageRank,用于为文本生成关键字和摘要. 其相关论文为Mihalcea R, Tarau P. TextRank: Bringing order into texts[C]. Association for Computational Linguistics, 2004.
1.2 句法分析
- 兴趣短语检测(Interseting Phrase Detection): 对短语进行检测.[没有定义,这些术语更像是相关工具比如lingpipe中自己的说法,当然字面意思也可以理解]
- 短语提取
- 基于互信息和左右信息熵的短语提取
- 依存句法分析:短语结构和依存结构是目前句法分析中研究最广泛的两类文法体系。依存语法通过分析语言单位内成分之间的依存关系揭示其句法结构,主张句子中核心动词是支配其它成分的中心成分,而它本身却不受其它任何成分的支配,所有受支配成分都以某种依存关系从属于支配者。
- 基于神经网络的高性能依存句法分析器
- MaxEnt依存句法分析
- CRF依存句法分析
- 句题检测(Sentence Detection)
- 查询拼写检查(Query Spell Checking)
在分析句法结构的过程中,可能要建立一些描述句子特征的文法。 同时句法分析中还涉及分块,从而从句子中提取出信息,例如建立实体与实体之间的关系,这其中可能需要制作分块器。
例如:用正则表达式分块
要找到一个给定句子的块结构,RegexpParser分块器以一个没有标识符被分块的平面结构开始,轮流应用分块规则,依次更新块结构。所有规则都被调用后,返回块结构。再比如:训练基于分类器的分块器
??无论是基于正则表达式的分块器还是基于n-gram分块器,决定创建什么完全基于词性标记。 可是有些时候词性标记不能确定一个句子如何分块。 为了最大性能的提高分块的性能,还要使用词的信息内容作为词性标注的补充。 为了提供分块器的性能,还可以通过为特征提取函数增加不同的特征。
对于分块器的简单的评估与度量指标 评估指标主要是准确率以及召回率,度量 其实还是类似于机器学习中要求一个训练集合和测试集合)
相关工具
Stanford Parser进行语法分析的工具,支持英文、阿拉伯文和法语。具体使用可以参考采用Stanford Parser 进行中文语法解析
1.3 语义分析
语义分析 课件
Q:最近想看看基于语义的句子/段落/文章的相似度研究,请大牛们指点迷津? A:anster
语义分析的过程中涉及语义消歧。很多词语都具有几个意思或语义,如果把这样的词从上下文中独立来考虑,就会产生语义歧义,语义歧义就是为了解决这样的歧义问题。
语义消歧的任务就是确定一个歧义词的哪一种含义在一个特殊的使用环境中被调用。通过考虑词汇使用的上下文环境可以其具体含义。
在语义消歧中经常会提及几类重要的方法。它们通常是和自然语言处理相关的,也是我们在这里讨论的重点内容。 这些方法包括:有监督和无监督学习,语义消歧中被称为伪词
有监督消歧(Supervised Disbiguation)中,一个已经消岐的语料库被用来训练。 在这个样本训练集中,歧义词$$w$$ 每一次出现都被标注上了一个语义标签 通常是符合上下文的语义$$s{k}$$ 。这样就可以为有监督消岐提供一个统计分类的实例。统计分类的任务就是构建一个分类器,根据上下文$$c{i}$$ 对新的歧义词进行分类。在众多的有监督学习算法中,我们选择了两个已经应用到语义消岐中的算法,它们代表了统计自然语言处理中的两个重要理论方法:贝叶斯分类和信息论。第一种方法把上下文看作是一个无结构词集,整合了上下文窗口中众多的词汇信息。第二种方法仅仅考虑了上下文中的一个信息特征,这个信息特征可以很灵敏的反映上下文结构。但是这个特征要谨慎的从大量的潜在信息中选取。
- 贝叶斯分类: 语义贝叶斯分类器的原理是,它在一个大的上下文窗口中考虑了歧义词周围的词信息。每个实词都含有潜在的有用信息,暗示歧义词的哪个语义被使用。这个分类器不是进行特征选择,而是组合了所有特征。分类器的有监督训练要求语料库中歧义词都事先被正确的语义标注。
- K近邻有监督消歧学习算法(又称为基于记忆的学习法(learning-based learing)):Degan et al. 1994,1997,论文中使用了k近邻法的优点来解决数据稀疏问题。
- 线性模型法:一种可分解的线性模型可以看成是单纯贝叶斯分类器。它不再认为所有特征都是独立的,而是把特征划分到若干子集中。在这些子集中特征是依赖的,而不同子集的特征之间是独立的,这与单纯贝叶斯分类器有所不同,在单纯贝叶斯分类器中假设所有特征之间都是独立的。Bruce and Wiebe 1994使用可分解线性模型进行消岐,得到了很好的结果。
基于字典消岐:lesk算法
- 无监督消岐: 以上两种方法都需要一些基本的词典资源,小训练集或者一些搭配种子集。虽然这些方法需要的信息量似乎很少 ,但是我们仍然会遇到一些情况,在这些情况中这些小的信息需求也是无法满足的。特别是当我们需要处理特殊领域信息的时候,会经常遇到这样的情况,在这些特殊的领域中可能没有我们需要的词汇资源信息。例如,信息检索系统需要处理各种主题领域的文本。一般的普通词典不太适用于领域特殊的文本。化学文摘数据库就主要包括化学范畴内的文档。因此,基于类义词典的消岐算法的效果就会大打折扣。我们不能期望信息检索系统的用户来定义这些歧义词的语义,或者是对新文本集提供一个训练集。随着近年来在线资源的迅速增加,给消岐带来了大量的难题,外部的信息源对于消岐的可用性并不大。 严格的来说,如果我们想要得到语义标注,完全无监督的消岐是不可能的,这里说的语义标注是一个可以标注词汇的具体语义算法。语义标注需要提供语义的一些特征描述。但是,语义辨别(sense discrimination)可以在完全无监督的形式下实现。我们可以在完全无监督的形式下实现。 无监督消岐的一个优点是,它更加适合区分有细微差别的语义用法,这些语义的细微差别在词典中找不到。此外,信息检索也可以应用无监督消岐。
指代消解
功能与定义
广义上说,指代消解就是在篇章中确定代词指向哪个名词短语的问题。按照指向,可以分为回指和预指。回指就是代词的先行语在代词前面,预指就是代词的先行语在代词后面。
情感分析(Sentiment Analysis)
定义
文本情感分析(也称为意见挖掘)是指用自然语言处理、文本挖掘以及计算机语言学等方法来识别和提取原素材中的主观信息.
维基百科上的定义
通常来说,情感分析的目的是为了找出说话者/作者在某些话题上或者针对一个文本两极
??的观点的态度。这个态度或许是他或她的个人判断或是评估,也许是他当时的情感状态(就是说,作者在做出这个言论时的情绪状态),或是作者有意向的情感交流(就是作者想要读者所体验的情绪)。
相关资料
- 2008 Survey Article - Opinion mining and sentiment analysis
- 2011 Survey Article - Comprehensive Review Of Opinion Summarization (Kim et al)
- 2013 Survey Article - New Avenues in Opinion Mining and Sentiment Analysis (Cambria et al)
语言辨别(Language Identification)
百度百科定义
能把语言和语声转换成可进行处理的信息的过程。广泛应用在语音邮件、语声开锁以及未来计算机输入等方面。
1.4 数据挖掘
数据挖掘 从大量的、不完全的、有噪声的、模糊的、随机的实际应用数据中,提取隐含在其中的、人们事先未知的,但又是潜在有用的信息和知识的过程。
分类 (Classification)
按照分析对象的属性、特征,建立不同的组类来描述事物。
- 决策树: 决策树是一个预测模型;他代表的是对象属性与对象值之间的一种映射关系。树中每个节点表示某个对象,而每个分叉路径则代表的某个可能的属性值,而每个叶结点则对应从根节点到该叶节点所经历的路径所表示的对象的值。决策树仅有单一输出,若欲有复数输出,可以建立独立的决策树以处理不同输出。 数据挖掘中决策树是一种经常要用到的技术,可以用于分析数据,同样也可以用来作预测。常用的决策树算法包括:
- ID3 算法
- C4.5 算法
- C5.0 算法
- 回归算法:回归分析是研究自变量和因变量之间关系的一种预测模型技术。这些技术应用于预测时间序列模型和找到变量之间关系。回归分析也是一种常用的统计学方法,经由统计机器学习融入机器学习领域。“回归”既可以指算法也可以指问题,因此在指代的时候容易混淆。实际上,回归就是一个过程而已。常用的回归算法包括:
- 最小二乘回归(OLSR)
- 线性回归
- 逻辑回归
- 逐步回归
- 多元自适应回归样条法(MARS)
- 局部估计平滑散点图(LOESS)
- 聚类: 聚类跟回归一样,既可以用来形容一类问题,也可以指代一组方法。聚类方法通常涉及质心(centroid-based)或层次(hierarchal)等建模方式,所有的方法都与数据固有的结构有关,目标是将数据按照它们之间共性最大的组织方式分成几组。换句话说,算法将输入样本聚成围绕一些中心的数据团,通过这样的方式发现数据分布结构中的规律。常用的聚类算法:
- K-均值
- K-中位数
- EM 算法
- 分层聚类算法
- 关联规则学习
语料库及相关工具
- 分词语料预处理
- 词频词性词典制作
- BiGram统计: BiGram是一个二元模型。该方法的提出主要是为了解决传统N-gram统计语言模型中参数空间过大的问题。该统计方法引入了马尔科夫假设:任意一个词的出现的概率仅仅与它前面出现的有限的一个或者几个词有关。如果一个词的出现的概率仅于它前面出现的一个词有关。该方法的相关介绍可以参见该链接
- 词共现统计
- CoNLL语料预处理: 针对CoNLL格式的语料进行预处理。CoNLL格式的语料以.conll结尾.(没有找到具体定义,只有相关网页提到)
- CoNLL UA/LA/DA评测工具: (没有找到具体定义,同上)
一般而言,语料库包含的块类型是不同的,表示的格式都是不同,有的采用多行表示一个句子,有的则不然。 例如:CoNLL2000分块语料库中包含了27w词的华尔街日报文本,分为训练和测试两部分,标注有 词性标记 和 IOB格式分块标记。 该语料库含有3中块类型,NP,VP,PP
Research Group in NLP Field
Berkeley NLP Group:Probably one of the best places for doing work at the intersection of NLP and Machine Learning. Dan has produced prolific students like Aria Haghighi, John DeNero and Percy Liang.
NLP/CL at Carnegie Mellon:Another multi-faceted school. Lots of work on different NLP areas: machine translation, summarization, interactive dialog systems, speech, information retrieval and, most importantly, machine learning. Chris works at the intersection of machine learning and machine translation and does fantastic work. Though he is in the Machine Learning Department and not LTI, Tom Mitchell is worth a mention for his work with CMU's Never Ending Language Learner. CMU - Language Technologies Institute
算法(This section will be modified)
Chinese NLP Research Field Paper
自然语言处理相关会以比较少,关于汉语自然语言处理的文章基本上都在这里.
-基于词典的方法:分词上最简单粗暴的算法是MM(最大匹配)方法,需要一个字典和几十行代码即可。 -基于字标注的的分词方法:分词还有一种非常有效且相对简单的算法:character-based tagging(基于字标注的的分词方法). 第一篇由字构词的汉语分词方法的论文发表在2002年第一届国际计算语言学学会ACL汉语特别兴趣小组SIGHAN 组织的汉语分词评测(Bakeoff)研讨会上。该方法在2005和2006年的两次bakeoff评测中取得好成绩。基本思想:将分词过程看做是字的分类问题。该方法认为,每个字在构造一个特定词语时都占据者一个确定的构词位置(B:begin,M:middle,E:end,S:single(单独成词),也就是词位),这里所说的字包括汉字以及标点符号,阿拉伯数字等
名词符合短语与句法分析关系
政府机关或国企中存在大量的名词复合短语,这些名词复合短语会对句法分析影响很大. 具体有何影响可以参见这篇文章3.2.3小节.
汉语树构建-标注规范
语料库是统计自然语言处理的基础,基于语料库的方法对自然语言处理领域的各个方向产生了重大的影响. 在各类语料库资源中, 影响最大的要算是标注了语法信息的数据,因为标注后的句子作为一个树形结构,所以也称这样的语料为树库.
由于标注树库时需要制定复杂的语法规范,需要投入大量的人力,同时树库又是开展句法分析工作所必须的数据资源,因此树库建设就成为了句法分析中最重要的内容了.
树库建设的第一个内容就是制定标准规范.合理的标注规范应该尽量简洁清晰,便于标注者理解,这对于保证树库的一致性非常重要. 另外,标注体系应该有很好的语法覆盖性,这对于句法分析的效果以及基于句法分析的应用有着很大的影响.
树库的标注规范主要有以下两部分:标注方式以及标记集. 标注方式代表语法树的组织形式,即遵循什么原则组织句子中词与词之间的关系. 一般来说,标注规范都遵循某一已有的语言的理论.目前中文树库遵循的语法体系主要由: -短语结构语法: -宾夕法尼亚大学的中文树库Penn Chinese Treebank(PCT) -清华大学的汉语树库(TCT973)(多种用途) -依存语法: -清华的语义依存树库Semantic Dependency Net(SDN)(用于知识抽取) -自定义语法: -香港理工大学的汉语浅层树库PolyU Treebank(PolyU)(用于搭配抽取,浅层分析) -台湾中央研究研的sinica(多种用途)
以下内容相对比较年久了,取至Tsinghua Unv相关小组的国家自然科学基金 Published paper list 在这里. e.g.: -在Chinese Patent Texts上通过条件随机场识别介词短语:A CRF Method of Identifying Prepositional Phrases in Chinese Patent Texts -基于主题的中文信息极性分类综述:Overview of Topic-based Chinese Message Polarity Classification -利用联合模型对微博进行情感分析 -对于sighan-8组合情感分类系统An combined sentiment classification system for SIGHAN-8 -基于图的半监督学习的中文命名实体识别:Chinese Named Entity Recognition with Graph-based Semi-supervised Learning Model -自动中文混淆词提取:Automatic Chinese Confusion Words Extraction Using Conditional Random Fields and the Web -基于半监督的中文分词:Semi-supervised Chinese Word Segmentation for CLP2012
再此必须声明:根据我在学校网络课上宗成庆老师的介绍,很多算法其实建立在复杂数学模型基础上的,往往并不实用,虽然可以发个好的会议,由于时间复杂度太高。所以这些published paper中的方法,未必凑效!
对汉语语料库的多级加工处理,主要分为一下几个阶段:切词,词类标注,语块标注,分析树标注,语义信息标注.本规范主要涉及汉语句子的句法树标注问题. 规范详细细节可以参见这篇文章. 两个具体标注实例: -新闻类 -文学类
面向句法分析的句子片段识别
主题为政治类和经济类的文本中,句子的平均长度普遍较长. 随着长度的增加,句法分析的时空复杂度会急剧的上升,更严重的是,随着句子的长度的增加,产生的语法歧义就越多,严重影响句法分析的准确度.
在句法分析中,缓解句子过于复杂的方法是采用分治策略,对句子中的连接词进行消歧义处理,然后根据这些连接词功能的不同,将句子分为不同的部分,再对没个部分分别进行处理.
尽管国外已有很多相关研究,但是在NLP领域,由于不同语言在结构上存在巨大的差异,使得很多研究方法难以做到移植. 汉语是一种意合语言,句子的生成侧重语义的表达,在语法规范上的限制不是很严格,没有明确的从句概念,这一点同英语有着很大的差异,英语的语法结构相对严格,有着很明确的主从(句)结构,所以识别从句可以作为对复杂句子分析的第一步,也有相关研究达到一定的准确度.
聚类算法
聚类算法的目标是将一组内部对象划分成若干组或类别,简单来说,就是将相似元素划分同组,相异元素不同组的划分过程。
在统计自然语言处理中,聚类算法有两个重要的用途,第一个重要的用途是——用于试探性树分析(exploratory data analysis,EDA)。
对于任何处理“量化”数据的应用来说,试探性数据分析(EDA)是一个非常重要的方法。当我们面临一个新的问题,并且希望建立一个概率模型或者是为了理解现象的基本特征时,这是一个首要步骤。如果我们盲目的开始操作数据,而不对数据对象做任何事先的理解分析,最终结果常常会不如人意。
聚类算法的第二个重要用途就是概念的一般化(generalization)。
全联通聚类的缺点在于其算法复杂度为$$O(n^3)$$。因为聚类中共有n个合并步骤,而对于每个合并步骤步骤都需要$$O(n^2)$$ ,以比较每个聚类对象对,寻找最相似的聚类对象对(n为聚类对象的数目)。
平均联通聚类(group-average agglomerative clustering)是上述两种方法中的一个折中方案。与两种方法相比,它几步计算聚类中样本之间的最大相似度(单连通),也不计算最小相似度(全联通),而是将平均相似度作为聚类准则。 平均联通聚类可以代替全联通聚类,同时复杂度仅为$$O(n^2)$$
聚类在改进语言模型上的应用
前面介绍了几种典型的层级聚类方法,本节将着重介绍聚类算法的具体应用,例如利用聚类算法建立一个更准确的语言模型(language model)。聚类算法在改进语言模型质量上可以起到重要的作用,因为在构建语言模型时我们面临的一个困境是语料数据稀疏问题,很多小概率事件在模型上体现不出来。
非层级聚类方法: -k平均:k平均算法可能是最简单的聚类算法,虽然有其局限性,但却因为适用面广,效率高而得到广泛的应用。 -EM算法:EM算法是一种算法的基本框架,可以解决很多问题。EM算法在统计自然语言处理中有很广泛的应用,例如向内-向外算法(inside-outside algorithm)和前向-后向算法(forward-backward algorithm).
EM算法
EM算法是一种软聚类算法,它并不是一个具体可以操作的算法,实际上只是提供了解决问题的框架。 EM算法假定样本可能属于每个类别,但是属于各个类别的概率有别。EM算法只有经过多次迭代后才能达到一个稳定的状态。
在很多机器学习算法问题中,除了一部分可以观察到实例数据之外,还有一些隐含变量没有包含在观察数据中,例如HMM模型中其内部的状态变化对于外部来说是无法直接观测到的。那么又该如何用这些观测到的数据去预测隐含变量呢?
此外还有一种情况,我们知道在模型的参数估计中,如果有足够的定义良好的训练特征,完全可以使用简单的极大似然估计法来估计模型参数。 举例来说,如果变量$$X$$ 是可以观测的,并且概率模型p已知,$$P(X|p(\Theta))$$ 表示概率模型中数据$$X$$ 的出现概率,
$$\Theta$$ 为参数空间,我们的目标是利用maximum likelihook估计寻找参数空间$$\Theta$$ 中的一组参数,使得该概率最大。 假设概率空间连续平滑,对于模型中的每个参数$$\theta{i}$$, 可以通过一阶导数的方法求解,即$$\frac{\partial}{\partial \theta{i}}logP(...)=0$$ ,但是得到的往往是一组不易求解的非线性等式,而且有时还缺乏某些必要特征或者存在“脏”特征。而EM算法正是一种解决这类问题的有效学习方法。
下面介绍一个利用EM算法求解高斯混合分布(Gaussion mixture distribution)参数的实例,假设高斯混合分布是由k个不同的高斯分布混合生成的;随后引入EM算法的一般表述形式,并将其应用于诸如向内-想歪算法,向后-向前算法的参数估计问题。
如果我们知道每个聚类的分布情况(或生成原因),就可以是用EM算法来聚类。在估计高斯混合分布时,假设每个聚类都是高斯分布。EM算法于是可以确定混合分布的最有可能的参数(每个高斯分布的均值和方差)以及每个分布的先验概率(相对重要性或权重)。 假设聚类的数据包含由k个Gaussion distribution$$(n_1 ... n_k)$$ 生成的n个m维的个体$$X = {\overrightarrow{x_1}, \ldots , \overrightarrow{x_n} | \overrightarrow{x_i} \in \mathbb{R}^{m} } $$ .
我们将高斯混合分布看成是聚类的结果,其中每个高斯分布相当于一个聚类,那么对于每个个体$$\overrightarrow{x_i}$$ , 我们可以计算概率$$P(w_j | \overrightarrow{x_i})$$ ,它表示第j个高斯分布生成$$\overrightarrow{x_i}$$的概率。一个 个体可以按照不同的置信度同时属于几个聚类。
隐马尔科夫(HMM)算法
HMM在标注方面的应用。
词性标注
基于概率CFG方面的研究最先开始于20世纪60年代末70年代初,当时它是一个研究的热点。 20世纪70年代,随机形式语言的工作大部分都停止了,只有语音领域中还有一些相关的PCFG研究,也只是作为一个偶尔尝试的替代模型。Baker于1979年引入了内部-外部算法,并且证明了其收敛性。
PCFG在生物信息学中 也有用到,不过远没有HMM用的广泛。
Q:考虑给定部分句子结构的部分语法分析树的概率,一般来说,随着(子树)的增大,我们无法从任何现有的训练集和精确的估计这些树的概率(数据稀疏问题)。正如我们所见到的,PCFG从局部子树的联合概率中估计树的概率。
预处理-关联词组
词向量
在处理所有NLP任务的时候,我们首先需要解决非常重要的一个问题(可能是最重要的):用什么方式将词组输入到模型中去。简单的NLP问题可能并不需要将词组作为独立个体对待(atomic symbols),$但现在的问题绝大多数需要这样一个预处理,来体现词组之间关联/相似性和区别$。所以我们引入词向量的概念,如果把词编码成词向量,我们很容易从向量的角度去衡量不同的词之间的关联与差异(常用的距离测度法,包括Jaccard, Cosine, Euclidean等等,注:距离测度法,即用一个可观测度量的量来描述一个不能直接观测度量的量)。
以英文举例如下: 英语中大约有1300万个词组(token,自定义字符串,译作词组),不过他们全部是独立的吗?并不是哦,比如有一些词组,“Feline猫科动物”和“Cat猫”,“Hotel宾馆“和”Motel汽车旅馆”,其实有一定的关联或者相似性在。因此,我们希望用词向量编码词组,使它代表在词组的N维空间中的一个点(而点与点之间有距离的远近等关系,可以体现深层一点的信息)。每一个词向量的维度都可能会表征一些意义(物理含义),这些意义我们用“声明speech”来定义。例如,语义维度可以用来表明时态(过去与现在与未来),计数(单数与复数),和性别(男性与女性)。 说起来,词向量的编码方式其实挺有讲究的。咱们从最简单的看起,最简单的编码方式叫做one-hot vector:假设我们的词库总共有n个词,那我们开一个1* n的高维向量,而每个词都会在某个索引index下取到1,其余位置全部都取值为0
这种词向量编码方式简单粗暴,我们将每一个词作为一个完全独立的个体来表达。遗憾的是,这种方式下,我们的词向量没办法给我们任何形式的词组相似性权衡。
究其根本你会发现,是你开了一个极高维度的空间,然后每个词语都会占据一个维度,因此没有办法在空间中关联起来。因此我们可能可以把词向量的维度降低一些,在这样一个子空间中,可能原本没有关联的词就关联起来了。
基于SVD的方法
这是一种构造词嵌入(即词向量)的方法,我们首先会遍历所有的文本数据集,然后统计词出现的次数,接着用一个矩阵X来表示所有的次数情况,紧接着对X进行奇异值分解得到一个$USV'$的分解。然后用$U$的行(rows)作为所有词表中词的词向量。对于矩阵$X$,我们有几种选择: -词-文档矩阵:最初的想法是,我们猜测相互关联的词组同时出现在相同的文件中的概率很高。例如,“银行”、“债券”、“股票”、“钱”等都可能出现在一起。但是,“银行”、“章鱼”、“香蕉”和“曲棍球”可能不会一直一起出现。
- 基于窗口的共现矩阵X
基于迭代的方法
有种模型是以{“The”, “cat”, ’over”, “the’, “puddle”}为上下文,能够预测或产生它们中心的词语”jumped”,叫做连续词袋模型。
n-gram语法模型
通常,构建模型的第一步是——处理语料。
n元语法模型结合主要谓词
概率句法分析
从一个语料库中归纳出某些形式的结构也不是很困难。
在句法分析器上至少有三种不同的途径可以使用概率: -利用概率来确定句子 -利用概率来加速语法分析 -利用概率选择句法分析结果 找到一个树结构可以看成是实现消歧目标的关键。
treebank对于统计句法分析器是很重要的。 汉语树库
句法分析的思想:根据某种语法G给出要给句子s的句法分析树t。在概率句法分析中,我们以概率的形式表示每个分析结果的可能性,或者仅仅返回概率最大的结果。那么,最自然的想法就是定义一个概率句法分析模型,该模型对一个句子s给出分析树t的概率:
$$P(t|s,G)$$ 其自己$$\underset{t}{\sum}P(t|s,G) = 1$$
句法分析的目的
-使用句法结构作为语义解释的第一步 -识别短语语法,为信息检索系统的索引服务 -构建一个概率句法分析器作为一个由于n-gram的语言模型。 这些目的都需要构建一个句法分析器。
词性标注
-马尔科夫模型标注器 -概率模型:在马尔科夫模型标注中,我们把文本中的标记序列看成是一条马尔科夫链。
基于SVD的方法
这是一种构造词嵌入(即词向量)的方法,我们首先会遍历所有的文本数据集,然后统计词出现的次数,接着用一个矩阵$X$来表示所有的次数情况,紧接着对X进行奇异值分解得到一个$USV'$
文本处理软件
中文处理
相似度判定与匹配
相似度判定的方法
文本相似度的概念非常复杂,涉及到语言、语法结构、语句结构等多种因素,目前还没有一个统一的定义。
全文的相似度
传统思路
- 方法1:利用hash进行判定,考虑为每个文档通过hash的方式生成一个指纹(finger print)。
方法2:先将两篇文章进行分词,得到一系列特征向量,然后计算特征向量之间的距离(例如欧式距离,海明距离或余弦夹角), 从而判断两篇文章的相似度。
第一种传统方法对于海量数据需要计算两两文章之间的相似度,性能不足。而第二种方法中利用了传统加密方式md5,其设计目的是为了让整个分布尽可能地均匀,但如果输入内容一旦出现哪怕轻微的变化,hash值就会发生很大的变化。
- Simhash算法: 来自于Google Moses Charikar在WWW2007发表的一篇论文detecting near-duplicates for web crawling中提出了simhash算法,专门用来解决亿万级别的网页的去重任务。simhash作为locality sensitive hash(局部敏感哈希)的一种,其主要思想是降维,将高维的特征向量映射成低维的特征向量,通过两个向量的Hamming Distance来确定文章是否重复或者高度近似。simhash算法分为5个步骤:分词、hash、加权、合并、降维。
段落的相似度: 其中一种办法是根据组成段落的句子的相似度计算段落相似度。
文档分级模板库
可能的模式