Word2Vec原理之负采样算法

这篇主要根据前人的文章内容,整理了一遍skip-gram模型下negative-sampling的基本推导思路,只作学习之用,并不完整。公式也都是来自于已有论文。

分布式假设

Word2Vec虽然一直火热,也引发了各种词嵌入,但实际上不可否认依然是缺乏严谨的可解释性。所谓的分布式假设,就是处于相似上下文中的词具有相似的含义,一般认为这种相似包含了语义层面的相似,但却很难使用自然语言的词法、句法或语义的层面的现有知识来充分地解释。这可能也是词向量的一个缺陷,不过另一方面,这种分布式假设的概念可以应用到很多其他的领域的数据分析,比如广告分析、app点击数据分析等,毕竟只要能替代词和语料的关系,并且有上下文和中心词的类比关系,就可以一试,所以应用的广度可以说无法估计。

继续阅读Word2Vec原理之负采样算法

Word2Vec原理之层次Softmax算法

在这个人工智能半边天,主流话题一天一变的现代世界里,不乏进步,也不乏泡沫,但Word2Vec依然是很富极客精神的典型代表,作者思路很巧妙,工程层面又很实用主义。

词嵌入的假设,是通过一个词所在的上下文可以获得词的语义甚至语法结构,有相似上下文的词在向量空间中是邻近的点。

1 背景概念

Word2Vec要解决的根本问题,说到底是自然语言处理的问题。一般认为自然语言处理模型氛围两大派系,分别是形式文法和统计语言模型。

1.1 统计语言模型

统计语言模型在分词、词性标注、语义理解等NLP基本任务,以及语音识别、机器翻译等领域有广泛应用。关于统计语言模型,文献资料非常多,这篇博客也讲的很详细。简单地说,可以用统一地形式化表示:

\[p(S)=p(w_1,w_2,…,w_n)=\prod_{i=1}^{n} p(w_i|w_1,w_2,…,w_{i-1})\]

上述表示可以看做是用来计算词构成一个句子的概率模型,这就是统计语言模型的本质。但是概率的计算是个大问题,数据稀疏、参数过多,很难实际运用。前辈们研究了各种模型。例如n-gram、n-pos、决策树模型、最大熵模型等。

继续阅读Word2Vec原理之层次Softmax算法

中文维基百科文本数据分析之一(数据获取与预处理)

照例,先讲下环境,Mac OSX 10.11.2 ,Python 3.4.3。

下载数据

方法1:使用官方dump的xml数据

最新打包的中文文档下载地址是:https://dumps.wikimedia.org/zhwiki/latest/zhwiki-latest-pages-articles.xml.bz2 。

方法2:也是官方,结构化数据(json)

下载地址是:https://dumps.wikimedia.org/wikidatawiki/entities/ 。目前尚未测试使用此数据,不多作介绍。但数据模型和已有的工具都可以在wikidata的站点上找到。

继续阅读中文维基百科文本数据分析之一(数据获取与预处理)

隐马尔可夫模型的基本概念

自然语言处理领域,隐马尔可夫模型在语音识别、词性标注、分词等方面都有不少研究和应用。

对于一个典型的HMM示意图(图来自维基百科:隐马尔可夫模型)如下:

Hmm

在正常的马尔可夫模型中,状态对于观察者是直接可见的,因此状态的转换概率即是参数。而在HMM中,状态(x)不是直接可见的,但每个状态下输出的某些输出(y)是可见的。每个状态在可能输出的符号上都有一个概率分布(b),即(符号)输出概率-(symbol)emission probabilities。另外,少不了隐含状态间的转换概率(a),即transition probabilities。由此可见5大要素:

X — 隐含状态集合
Y — 可观察的输出集合
A — 转换概率
b — 输出概率
π — 初试状态的概率分布

其中,π和A决定了状态序列,且这里用到马尔可夫假设,即当前隐含状态只取决于前一个隐含状态。而B决定了观测序列。所以一般认为隐马尔可夫模型λ可以用三元符号表示:

 lambda =left( A,B,pi right)

关于如何理解隐含变量以及HMM的大致原理,好的文章太多了,其中简单易懂的,我觉得这条知乎上Yang Eninala的回答写的很有耐心。

统计自然语言处理的基本概念

NLP的几个层次

以下是学习宗成庆著作中相关内容整理,详细内容可参考其著作《统计自然语言处理》。自然语言的处理包含语音、形态、语法、语义、语用几个层面,若暂不考虑语音和语用,以下三个概念非常重要:

形态学(Morphology)

词汇形态学(或词法)研究词的内部结构。

语法学(Syntax)

研究句子结构元素之间的关系与规则。主要关注一句话该怎么讲。

语义学(Semantics)

研究语言各级单位(词素、词、词组、句子、句子群、整段整篇、甚至整个著作)的意义,重点是研究符号与符号所指对象之间的关系。

NLP的基本方法

自然语言处理真的很困难,词汇形态歧义消解并不容易。有研究结论称,歧义结构分析结果的数量随介词短语数目的增加呈指数上升的,其歧义组合的复杂程度随着介词短语个数的增加而不断加深,这个歧义结构的组合数目称为开塔兰数(Catalan numbers),下式中,n为介词短语个数:

c_{n}=left( begin{matrix} 2n\ nend{matrix} right) dfrac {1} {n+1}

上面讲的是英文情况,中文自然语言里,各种歧义、指代等,也是相当的复杂。对于这些复杂问题的理解,存在两种不同的“主义”,即理性主义方法和经验主义方法。

理性主义方法

理性主义方法的代表是著名的乔姆斯基理论,认为人的语言能力是与生俱来的。因此对于NLP的难题,需要首先由词法分析器按照人工编写的词法规则对输入的句子的单词进行词法分析,然后根据人工设计的语法规则对输入的句子进行句法结构分析,最后再根据一套变换规则将语法结构映射到语义符号(如逻辑表达式、语义网络、中间语言等)。

经验主义方法

经验主义认为,人(孩子)的大脑一开始具有一些基本的处理能力(联想、模式识别、通用化),因此可以在后期通过感官输入来不断学习和掌握自然语言的结构。因此在实践层面,经验主义方法主张通过建立数学模型来学习语言结构,然后利用统计学、模式识别和机器学习等方法来训练模型的参数,以扩大语言使用的规模。从方法上看,经验主义的思路是很明确的统计自然语言处理(SNLP)方法。

统计方法中的基本概念

统计方法中,概率论和信息论是最基本的部分,必须掌握地相当靠谱才行:

  1. 概率论基本概念:概率、条件概率、贝叶斯法则、贝叶斯决策理论、随机变量、参数估计方法、二项式分布、联合概率分布和条件概率分布、期望和方差等。
  2. 信息论基本概念:熵、联合熵、条件熵、相对熵、交叉熵、互信息、困惑度、噪声信道模型等。