标签归档:最大熵模型

哥伦比亚大学经典自然语言处理公开课,数学之美中盛赞的柯林斯(Michael Collins)教授授课

AINLP

在我读书的时候,最早是从谷歌黑板报中吴军老师的《数学之美》里了解到 Michael Collins 教授的,在“数学之美 系列十五 繁与简 自然语言处理的几位精英”,是这样描述他的:

​柯林斯:追求完美

柯林斯从师于自然语言处理大师马库斯 (Mitch Marcus)(我们以后还会多次提到马库斯),从宾夕法利亚大学获得博士学位,现任麻省理工学院 (MIT) 副教授(别看他是副教授,他的水平在当今自然语言处理领域是数一数二的),在作博士期间,柯林斯写了一个后来以他名字命名的自然语言文法分析器 (sentence parser),可以将书面语的每一句话准确地进行文法分析。文法分析是很多自然语言应用的基础。虽然柯林斯的师兄布莱尔 (Eric Brill) 和 Ratnaparkhi 以及师弟 Eisnar 都完成了相当不错的语言文法分析器,但是柯林斯却将它做到了极致,使它在相当长一段时间内成为世界上最好的文法分析器。柯林斯成功的关键在于将文法分析的每一个细节都研究得很仔细。柯林斯用的数学模型也很漂亮,整个工作可以用完美来形容。我曾因为研究的需要,找柯林斯要过他文法分析器的源程序,他很爽快地给了我。我试图将他的程序修改一下来满足我特定应用的要求,但后来发现,他的程序细节太多以至于很难进一步优化。柯林斯的博士论文堪称是自然语言处理领域的范文。它像一本优秀的小说,把所有事情的来龙去脉介绍的清清楚楚,对于任何有一点计算机和自然语言处理知识的人,都可以轻而易举地读懂他复杂的方法。

柯林斯毕业后,在 AT&T 实验室度过了三年快乐的时光。在那里柯林斯完成了许多世界一流的研究工作诸如隐含马尔科夫模型的区别性训练方法,卷积核在自然语言处理中的应用等等。三年后,AT&T 停止了自然语言处理方面的研究,柯林斯幸运地在 MIT 找到了教职。在 MIT 的短短几年间,柯林斯多次在国际会议上获得最佳论文奖。相比其他同行,这种成就是独一无二的。柯林斯的特点就是把事情做到极致。如果说有人喜欢“繁琐哲学”,柯林斯就是一个。

Michael Collins 教授目前在哥伦比亚大学任教,不仅技术水平高,人也很帅,是公认的男神,这门自然语言处理公开课(Natural Language Processing)大约录制于2013年,课程主页包括了课件及其他相关资料,感兴趣的同学可以参考:

http://www.cs.columbia.edu/~cs4705/

这门课程大致录制于2013年左右,也是深度学习NLP的史前经典NLP课程,适合修完斯坦福NLP入门课程之后继续学习。我们建立了一个NLP入门学习群,感兴趣的同学可以添加微信AINLPer(id: ainlper) ,备注“NLP入门”进群一起交流学习。

关于这门课程,早期有一些同学在课程图谱里留言评价过,以下选择几条供大家参考:

“非常好的一门课,不像其他课程那么水,完完整整的哥伦比亚课程,如果认真学完肯定收获很多,花的时间绝对物有所值。科林斯的讲解非常清晰,内容涵盖了语言建模,解码算法,学习算法几个方面。

语言及翻译模型:n元模型,HMM模型,log-linear模型,GLM模型,IBM 1模型,IBM2 模型,phrase-based翻译模型,PCFG语法,LPCFG语法

解码算法:Viterbi算法,CKY算法,GLM Viterbi算法

学习算法:Brown聚类算法,Perceptron算法,EM算法

应用举例:词性标注/实体识别(HMM, GLM, log-linear),语法树标注(PCFG, dependecny-based),机器翻译”

=========================================================================================

“Proferssor Collins讲课十分清晰,课程大体覆盖到了NLP的比较基础的内容,编程作业十分具有针对性,由于不是特别熟悉python,我做起来特别费劲,基本上每个PA我都做了10小时以上。课程难度中上,建议有一定python和machine learning基础的同学学习。”

=========================================================================================

“跟斯坦福那门nlp比起来,这门的理论性更强,学起来也稍为枯燥一点,但是各种模型讲得很简单明了,推荐看了斯坦福的nlp后再来学这个”

我把这门课程整理了一下按章节放在了B站,感兴趣的同学可以关注,如果你需要视频课件字幕之类的打包文件,可以关注我们的公众号,回复“Collins"获取百度网盘链接:

哥伦比亚大学自然语言处理公开课-第一讲课程介绍

https://www.bilibili.com/video/BV1v7411d7hj/

哥伦比亚大学自然语言处理公开课-第二讲语言模型

https://www.bilibili.com/video/BV1b7411R7Dk/

哥伦比亚大学自然语言处理公开课-第三讲语言模型参数估计第四讲总结

https://www.bilibili.com/video/BV1s7411R7G3/

哥伦比亚大学自然语言处理公开课-第五讲词性标注和隐马尔可夫模型

https://www.bilibili.com/video/BV1nE411P7LS/

哥伦比亚大学自然语言处理公开课-第六讲句法分析和上下文无关文法

https://www.bilibili.com/video/BV1JE411P7fL/

哥伦比亚大学自然语言处理公开课-第七讲概率上下文无关文法

https://www.bilibili.com/video/BV1aE411P7Et/

哥伦比亚大学自然语言处理公开课-第八讲第九讲概率上下文无关文法的弱点以及词法化

https://www.bilibili.com/video/BV1aE411P7Kh/

哥伦比亚大学自然语言处理公开课-第十讲机器翻译介绍

https://www.bilibili.com/video/BV1dE411P7cT/

哥伦比亚大学自然语言处理公开课-第十一讲IBM翻译模型

https://www.bilibili.com/video/BV1mE411P7ng/

哥伦比亚大学自然语言处理公开课-第十二讲基于短语的机器翻译模型

https://www.bilibili.com/video/BV12E411P7RT/

哥伦比亚大学自然语言处理公开课-第十三讲机器翻译解码算法

注:视频一直在B站审核,审核通过后更新链接,或者通过网盘链接获取

哥伦比亚大学自然语言处理公开课-第十四讲对数线性模型

https://www.bilibili.com/video/BV1oE411c7Zd/

哥伦比亚大学自然语言处理公开课-第十五讲基于对数线性模型的词性标注

https://www.bilibili.com/video/BV1oE411c7hd/

哥伦比亚大学自然语言处理公开课-第十六讲基于对数线性模型的句法分析

https://www.bilibili.com/video/BV1oE411c7Sg/

哥伦比亚大学自然语言处理公开课-第十七讲无监督学习

https://www.bilibili.com/video/BV1ZE411c7zT/

哥伦比亚大学自然语言处理公开课-第十八讲广义线性模型

https://www.bilibili.com/video/BV1ZE411c7ER/

哥伦比亚大学自然语言处理公开课-第十九讲基于广义线性模型的词性标注

https://www.bilibili.com/video/BV1FE411w75M/

哥伦比亚大学自然语言处理公开课-第二十讲基于广义线性模型的依存句法分析

https://www.bilibili.com/video/BV1fE411c7pj/

最后附上百度百科中关于柯林斯教授的介绍:

自然语言处理专家,哥伦比亚大学教授,开发了著名的句法分析器Collins Parser。

工作经历:

1999年1月至2002年11月,AT&T实验室,研究人员;

2003年1月至2010年12月,美国麻省理工学院(MIT),助理教授/副教授;

2011年1月至今,美国哥伦比亚大学,Vikram Pandit教席教授。

主要成就:

获EMNLP 2002, EMNLP 2004, UAI 2004, UAI 2005, CoNLL 2008, EMNLP 2010最佳论文奖。

人物评价:

有些学者将一个问题研究到极致,执著追求完善甚至可以说达到完美的程度。他们的工作对同行有很大的参考价值,因此在科研中很需要这样的学者。在自然语言处理方面新一代的顶级人物迈克尔·柯林斯就是这样的人。——吴军《数学之美》

斯坦福大学自然语言处理经典入门课程-Dan Jurafsky 和 Chris Manning 教授授课

AINLP

这门课程录制于深度学习爆发前夕,授课是斯坦福教授 Dan JurafskyChristopher Manning 教授,两位都是自然语言处理领域的神牛:前者写了《Speech and Language Processing》(中文译名:自然语言处理综论),目前第三版SLP3还在更新中;后者写了《Foundations of Statistical Natural Language Processing》(中文译名:统计自然语言处理)和《Introduction to Information Retrieval》(中文译名:信息检索导论),这几本书几乎是NLPer的必读书。这门课程适合NLP入门学习,可以了解基本的自然语言处理任务和早期经典的处理方法,以及和信息检索相关的一些方法。我把这门课程整理了一下按章节放在了B站,感兴趣的同学可以关注。

斯坦福自然语言处理经典入门课程-第一讲课程介绍及第二讲正则表达式

https://www.bilibili.com/video/av95374756/

斯坦福自然语言处理经典入门课程-第三讲编辑距离

https://www.bilibili.com/video/av95620839/

斯坦福自然语言处理经典入门课程-第四讲语言模型

https://www.bilibili.com/video/av95688853/

斯坦福自然语言处理经典入门课程-第五讲拼写纠错

https://www.bilibili.com/video/av95689471/

斯坦福自然语言处理经典入门课程-第六讲文本分类

https://www.bilibili.com/video/av95944973/

斯坦福自然语言处理经典入门课程-第七讲情感分析

https://www.bilibili.com/video/av95951080/

斯坦福自然语言处理经典入门课程-第八讲生成模型判别模型最大熵模型分类器

https://www.bilibili.com/video/av95953429/

斯坦福自然语言处理经典入门课程-第九讲命名实体识别NER

https://www.bilibili.com/video/av96298777/

斯坦福自然语言处理经典入门课程-第十讲关系抽取

https://www.bilibili.com/video/av96299315/

斯坦福自然语言处理经典入门课程-第十一讲最大熵模型进阶

https://www.bilibili.com/video/av96314351/

斯坦福自然语言处理经典入门课程-第十二讲词性标注

https://www.bilibili.com/video/av96316377/

斯坦福自然语言处理经典入门课程-第十三讲句法分析

https://www.bilibili.com/video/av96675221/

斯坦福自然语言处理经典入门课程-第十四、十五讲概率句法分析

https://www.bilibili.com/video/av96675891/

斯坦福自然语言处理经典入门课程-第十六讲词法分析

https://www.bilibili.com/video/av96676532/

斯坦福自然语言处理经典入门课程-第十七讲依存句法分析

https://www.bilibili.com/video/av96676976/

斯坦福自然语言处理经典入门课程-第十八讲信息检索

https://www.bilibili.com/video/av96736911/

斯坦福自然语言处理经典入门课程-第十九讲信息检索进阶

https://www.bilibili.com/video/av96738129/

斯坦福自然语言处理经典入门课程-第二十讲语义学

https://www.bilibili.com/video/av96738928/

斯坦福自然语言处理经典入门课程-第二十一讲问答系统

https://www.bilibili.com/video/av96739766/

斯坦福自然语言处理经典入门课程-第二十二讲文本摘要二十三讲完结篇

https://www.bilibili.com/video/av96740680/

中文分词文章索引和分词数据资源分享

AINLP

昨天在AINLP公众号上分享了乐雨泉同学的投稿文章:《分词那些事儿》,有同学留言表示"不过瘾",我想了想,其实我爱自然语言处理博客上已经积攒了不少中文分词的文章,除了基于深度学习的分词方法还没有探讨外,“古典”机器学习时代的中文分词方法都有涉及,从基于词典的中文分词(最大匹配法),到基于统计的分词方法(HMM、最大熵模型、条件随机场模型CRF),再到Mecab、NLTK中文分词,都有所涉及。回头看,这些文章最早的大概有10年了,现在看有些稚嫩,可能不适宜再放到公众号上推了,但是这里做个索引,感兴趣的同学可以在博客上阅读,基本上都是有代码可以参考的。

中文分词入门系列

rickjin老大的两篇日文翻译文档,很有帮助

其他同学在52nlp博客上分享的中文分词相关文章,感谢大家

最后关于中文分词的数据资源,多说两句,中文分词的研究时间比较长,方法比较多,从实际经验看,好的词库资源可能更重要一些,最后提供一份中文分词的相关资源,包括中文分词字标注法全文pdf文档,以及web上其他同学分享的词库资源,感兴趣的同学可以关注AINLP,回复“fenci"获取:

注:原创文章,转载请注明出处及保留链接“我爱自然语言处理”:http://www.52nlp.cn

本文链接地址:中文分词文章索引和分词数据资源分享 http://www.52nlp.cn/?p=11408

中文分词入门之字标注法3

AINLP

最近要整理一下课程图谱里的中文课程,需要处理中文,首当其冲的便是中文分词的问题。目前有一些开源的或者商用的中文分词器可供选择,但是出于探索或者好奇心的目的,想亲手打造一套实用的中文分词器,满足实际的需求。这些年无论是学习的时候还是工作的时候,林林总总的接触了很多实用的中文分词器,甚至在这里也写过一些Toy级别的中文分词相关文章,但是没有亲手打造过自己的分词器,甚为遗憾。目前自己处于能自由安排工作的阶段,所以第一步就是想从中文信息处理的桥头堡“中文分词”入手,打造一个实用的中文分词器,当然,首先面向的对象是课程图谱所在的教育领域。

大概4年前,这里写了两篇关于字标注中文分词的文章:中文分词入门之字标注法,文中用2-tag(B,I)进行说明并套用开源的HMM词性标注工具Citar(A simple Trigram HMM part-of-speech tagger)做了演示,虽然分词效果不太理想,但是能抛砖引玉,也算是有点用处。这次捡起中文分词,首先想到的依然是字标注分词方法,在回顾了一遍黄昌宁老师和赵海博士在07年第3期《中文信息学报》上发表的《中文分词十年回顾》后,决定这次从4-tag入手,并且探索一下最大熵模型和条件随机场(CRF)在中文分词字标注方法上的威力。这方面的文献大家可参考张开旭博士维护的“中文分词文献列表”。这里主要基于已有文献的思路和现成的开源工具做一些验证,包括张乐博士的最大熵模型工具包(Maximum Entropy Modeling Toolkit for Python and C++)和条件随机场的经典工具包CRF++(CRF++: Yet Another CRF toolkit)。

这个系列也将补充两篇文章,一篇简单介绍背景知识并介绍如何利用现成的最大熵模型工具包来做中文分词,另外一篇介绍如何用CRF++做字标注分词,同时基于CRF++的python接口提供一份简单的 CRF Python 分词代码,仅供大家参考。至于最大熵和CRF++的背景知识,这里不会过多涉及,推荐大家跟踪一下课程图谱上相关的机器学习公开课

这次使用的中文分词资源依然是SIGHAN提供的backoff 2005语料,目前封闭测试最好的结果是4-tag+CFR标注分词,在北大语料库上可以在准确率,召回率以及F值上达到92%以上的效果,在微软语料库上可以到达96%以上的效果。不清楚这份中文分词资源的同学可参考很早之前写的这篇文章:中文分词入门之资源。以下我们将转入这篇文章的主题,基于最大熵模型的字标注中文分词。
继续阅读

条件随机场文献阅读指南

AINLP

  与最大熵模型相似,条件随机场(Conditional random fields,CRFs)是一种机器学习模型,在自然语言处理的许多领域(如词性标注、中文分词、命名实体识别等)都有比较好的应用效果。条件随机场最早由John D. Lafferty提出,其也是Brown90的作者之一,和贾里尼克相似,在离开IBM后他去了卡耐基梅隆大学继续搞学术研究,2001年以第一作者的身份发表了CRF的经典论文 “Conditional random fields: Probabilistic models for segmenting and labeling sequence data”。 继续阅读

无约束最优化五

AINLP

3.2 Quasi-Newton Method
  Quasi-Newton Method每一步计算过程中仅涉及到函数值和函数梯度值计算,这样有效避免了Newton Method中涉及到的Hessian矩阵计算问题。于Newton Method不同的是Quasi-Newton Method在每点处构建一个如下的近似模型: 继续阅读

无约束最优化四

AINLP

3.Quasi-Newton Method
  在第2节中我们了解了步长的概念,以及从x_k走到x_k+1点使用line search方法计算步长的方法。不过我们在那里忽略了一个重要的概念,即“方向”。从第2节,我们了解到从每一点x_k走到下一点x_k+1时,需要给出要走的“方向”,只有“方向”确定好之后,才能在此基础上应用line search方法找到对应的“步长”,因此在解决了“步长”计算问题之后,这里我们将和大家一起了解一下每一步的“方向”如何确定。本节分为2大部分,首先我们通过newton method引入方向的概念,在此基础上引入quasi-newton method。然后引入quasi-newton method中的一种重要方法BFGS method,并在BFGS method的基础上介绍用于大规模计算的LBFGS method算法,同时以此结束本节的所有内容。 继续阅读

无约束最优化三

AINLP

2.2 a_k步长的选择
  了解了a_k的合理性之后,就相当于获得了标尺,在此基础上我们可以选择合适的策略来求取a_k。所有的line search过程在计算每一步的a_k时,均需要提供一个初始点a_0,然后再此基础上生成一系列的{a_i},直到a_i满足2.1节所规定的条件为止,此时该a_k即被确定为a_i,或者未找到一个合适的a_k。这里我们仅介绍目前常用的策略平方插值和立方插值法。因此本节内容分为两部分,2.2.1节介绍选择a_k常用的平方插值和立方插值法,2.2.2节介绍由x_k点到x_k+1点,方向确定为p_k后,步长a_k具体计算过程。 继续阅读

无约束最优化二

AINLP

2.1 a_k合理性讨论
  如下将要讨论关于a_k需要满足的两个条件,当a_k满足这两个条件后,就可以认为从x_k点移动到x_k+1点的步长已经确定下来了。第一个条件为sufficient decrease condition,从直观角度来看,该条件主要要用保证x_k+1点的函数值要小于x_k点的函数值,满足该条件后,才有全局收敛 的可能性。第二个条件为curvature condition,从直观角度来看,该条件主要用于保证x_k点经过步长a_k的移动到达x_k+1后,▽f_k+1小于▽f_k。 继续阅读

无约束最优化一

AINLP

  估计有些读者看到这个题目的时候会觉得很数学,和自然语言处理没什么关系,不过如果你听说过最大熵模型、条件随机场,并且知道它们在自然语言处理中被广泛应用,甚至你明白其核心的参数训练算法中有一种叫LBFGS,那么本文就是对这类用于解无约束优化算法的Quasi-Newton Method的初步介绍。
  事实上,这个系列的作者是我的师兄jianzhu,他在中文分词、语言模型方面的研究很深入,如果大家对于srilm的源代码感兴趣,可以参考他个人博客上写的“srilm阅读文档系列”,很有帮助。我曾经向他约过稿,他说业余时间在学数学,比较忙,还以为他没有时间给52nlp写文章,没想到今天晚上他突然交给了我这篇文档,比较长,我会分几部分陆续放在博客上。这里非常感谢他对52nlp的支持,以下内容作者为jianzhu。 继续阅读