python自然语言处理理怎么最快入门

使用其他账号登录
点击上方“机器学习研究会”可以订阅哦摘要 知乎昨天实验室一位刚进组的同学发邮件来问我如何查找学术论文,这让我想起自己刚读研究生时茫然四顾的情形:看着学长们高谈阔论领域动态,却不知如何入门。经过研究生几年的耳濡目染,现在终于能自信地知道去哪儿了解最新科研动态了。我想这可能是初学者们共通的困惑,与其只告诉一个人知道,不如将这些Folk Knowledge写下来,来减少更多人的麻烦吧。当然,这个总结不过是一家之谈,只盼有人能从中获得一点点益处,受个人认知所限,难免挂一漏万,还望大家海涵指正。
1. 国际学术组织、学术会议与学术论文
自然语言处理(natural language processing,NLP)在很大程度上与计算语言学(computational linguistics,CL)重合。与其他计算机学科类似,NLP/CL有一个属于自己的最权威的国际专业学会,叫做The Association for Computational Linguistics(ACL,URL:ACL Home Page),这个协会主办了NLP/CL领域最权威的国际会议,即ACL年会,ACL学会还会在北美和欧洲召开分年会,分别称为NAACL和EACL。除此之外,ACL学会下设多个特殊兴趣小组(special interest groups,SIGs),聚集了NLP/CL不同子领域的学者,性质类似一个大学校园的兴趣社团。其中比较有名的诸如SIGDAT(Linguistic data and corpus-based approaches to NLP)、SIGNLL(Natural Language Learning)等。这些SIGs也会召开一些国际学术会议,其中比较有名的就是SIGDAT组织的EMNLP(Conference on Empirical Methods on Natural Language Processing)和SIGNLL组织的CoNLL(Conference on Natural Language Learning)。此外还有一个International Committee on Computational Linguistics的老牌NLP/CL学术组织,它每两年组织一个称为International Conference on Computational Linguistics (COLING)的国际会议,也是NLP/CL的重要学术会议。NLP/CL的主要学术论文就分布在这些会议上。
原文链接:
/question/“完整内容”请点击【阅读原文】↓↓↓
本文来自微信公众账号提交,由微信啦收录,转载请注明出处。
微信扫码 分享文章为你推送和解读最前沿、最有料的科技创投资讯
36Kr股权投资
汇集行业内最优质创业项目的股权投资平台
聚集15家顶级投资机构的专业互联网融资平台
聚集全球最优秀的创业者,项目融资率接近97%,领跑行业自然语言处理怎么最快入门?
最好是方法与教程
按投票排序
推荐《数学之美》,这个书写得特别科普且生动形象,我相信你不会觉得枯燥。这个我极力推荐,我相信科研的真正原因是因为兴趣,而不是因为功利的一些东西。接下来说,《统计自然语言处理基础》这本书,这书实在是太老了,但是也很经典,看不看随意了。现在自然语言处理都要靠统计学知识,所以我十分十分推荐《统计学习方法》,李航的。李航老师用自己课余时间7年写的,而且有博士生Review的。自然语言处理和机器学习不同,机器学习依靠的更多是严谨的数学知识以及推倒,去创造一个又一个机器学习算法。而自然语言处理是把那些机器学习大牛们创造出来的东西当Tool使用。所以入门也只是需要涉猎而已,把每个模型原理看看,不一定细致到推倒。宗成庆老师 的统计自然语言处理第二版非常好~ 蓝色皮的~~~然后就是Stanford公开课了,Stanford公开课要求一定的英语水平。 我觉得讲的比大量的中国老师好~举例:或者如果做工程前先搜索有没有已经做好的工具,不要自己从头来。做学术前也要好好的Survey!开始推荐工具包:中文的显然是哈工大开源的那个工具包 LTP (Language Technology Platform) developed by HIT-SCIR().英文的(python): - simpler to get started than NLTK - character encoding detection - easy access to dictionaries - has support for text classification - because ascii is much easier to deal with希望可以掌握以下的几个tool:CRF++GIZAWord2Vec还记得小时候看过的数码宝贝,每个萌萌哒的数码宝贝都会因为主人身上发生的一些事情而获得进化能力,其实在自然语言处理领域我觉得一切也是这样~ 我简单的按照自己的见解总结了每个阶段的特征,以及提高的解决方案1.幼年体——自然语言处理好屌,我什么都不会但是好想提高建议。。。去看公开课~去做Kaggle的那个情感分析题。2.成长期——觉得简单模型太Naive,高大上的才是最好的这个阶段需要自己动手实现一些高级算法,或者说常用算法,比如LDA,比如SVM,比如逻辑斯蒂回归。并且拥抱Kaggle,知道trick在这个领域的重要性。3.成熟期——高大上的都不work,通过特征工程加规则才work大部分人应该都在这个级别吧,包括我自己,我总是想进化,但积累还是不够。觉得高大上的模型都是一些人为了paper写的,真正的土方法才是重剑无锋,大巧不工。在这个阶段,应该就是不断读论文,不断看各种模型变种吧,什么句子相似度计算word2vec cosine已经不再适合你了。4.完全体——在公开数据集上,把某个高大上的模型做work了~这类应该只有少数博士可以做到吧,我已经不知道到了这个水平再怎么提高了~是不是只能说不忘初心,方得始终。5.究极体——参见Micheal Jordan Andrew Ng.好好锻炼身体,保持更长久的究极体形态希望可以理解自然语言处理的基本架构~:分词=&词性标注=&ParserQuora上推荐的NLP的论文(摘自Quora 我过一阵会翻译括号里面的解释):Parsing(句法结构分析~语言学知识多,会比较枯燥)Klein & Manning: "Accurate Unlexicalized Parsing" ( )Klein & Manning: "Corpus-Based Induction of Syntactic Structure: Models of Dependency and Constituency" (革命性的用非监督学习的方法做了parser)Nivre "Deterministic Dependency Parsing of English Text" (shows that deterministic parsing actually works quite well)McDonald et al. "Non-Projective Dependency Parsing using Spanning-Tree Algorithms" (the other main method of dependency parsing, MST parsing)Machine Translation(机器翻译,如果不做机器翻译就可以跳过了,不过翻译模型在其他领域也有应用)Knight "A statistical MT tutorial workbook" (easy to understand, use instead of the original Brown paper)Och "The Alignment-Template Approach to Statistical Machine Translation" (foundations of phrase based systems)Wu "Inversion Transduction Grammars and the Bilingual Parsing of Parallel Corpora" (arguably the first realistic method for biparsing, which is used in many systems)Chiang "Hierarchical Phrase-Based Translation" (significantly improves accuracy by allowing for gappy phrases)Language Modeling (语言模型)Goodman "A bit of progress in language modeling" (describes just about everything related to n-gram language models 这是一个survey,这个survey写了几乎所有和n-gram有关的东西,包括平滑 聚类)Teh "A Bayesian interpretation of Interpolated Kneser-Ney" (shows how to get state-of-the art accuracy in a Bayesian framework, opening the path for other applications)Machine Learning for NLPSutton & McCallum "An introduction to conditional random fields for relational learning" (CRF实在是在NLP中太好用了!!!!!而且我们大家都知道有很多现成的tool实现这个,而这个就是一个很简单的论文讲述CRF的,不过其实还是蛮数学= =。。。)Knight "Bayesian Inference with Tears" (explains the general idea of bayesian techniques quite well)Berg-Kirkpatrick et al. "Painless Unsupervised Learning with Features" (this is from this year and thus a bit of a gamble, but this has the potential to bring the power of discriminative methods to unsupervised learning)Information ExtractionHearst. Automatic Acquisition of Hyponyms from Large Text Corpora. COLING 1992. (The very first paper for all the bootstrapping methods for NLP. It is a hypothetical work in a sense that it doesn't give experimental results, but it influenced it's followers a lot.)Collins and Singer. Unsupervised Models for Named Entity Classification. EMNLP 1999. (It applies several variants of co-training like IE methods to NER task and gives the motivation why they did so. Students can learn the logic from this work for writing a good research paper in NLP.)Computational SemanticsGildea and Jurafsky. Automatic Labeling of Semantic Roles. Computational Linguistics 2002. (It opened up the trends in NLP for semantic role labeling, followed by several CoNLL shared tasks dedicated for SRL. It shows how linguistics and engineering can collaborate with each other. It has a shorter version in ACL 2000.)Pantel and Lin. Discovering Word Senses from Text. KDD 2002. (Supervised WSD has been explored a lot in the early 00's thanks to the senseval workshop, but a few system actually benefits from WSD because manually crafted sense mappings are hard to obtain. These days we see a lot of evidence that unsupervised clustering improves NLP tasks such as NER, parsing, SRL, etc,其实我相信,大家更感兴趣的是上层的一些应用~而不是如何实现分词,如何实现命名实体识别等等。而且应该大家更对信息检索感兴趣。不过自然语言处理和信息检索还是有所区别的,So~~~我就不在这边写啦
曾经写过一篇小文,,也许可以供你参考。昨天实验室一位刚进组的同学发邮件来问我如何查找学术论文,这让我想起自己刚读研究生时茫然四顾的情形:看着学长们高谈阔论领域动态,却不知如何入门。经过研究生几年的耳濡目染,现在终于能自信地知道去哪儿了解最新科研动态了。我想这可能是初学者们共通的困惑,与其只告诉一个人知道,不如将这些Folk Knowledge写下来,来减少更多人的麻烦吧。当然,这个总结不过是一家之谈,只盼有人能从中获得一点点益处,受个人认知所限,难免挂一漏万,还望大家海涵指正。1. 国际学术组织、学术会议与学术论文自然语言处理(natural language processing,NLP)在很大程度上与计算语言学(computational linguistics,CL)重合。与其他计算机学科类似,NLP/CL有一个属于自己的最权威的国际专业学会,叫做The Association for Computational Linguistics(ACL,URL:),这个协会主办了NLP/CL领域最权威的国际会议,即ACL年会,ACL学会还会在北美和欧洲召开分年会,分别称为NAACL和EACL。除此之外,ACL学会下设多个特殊兴趣小组(special interest groups,SIGs),聚集了NLP/CL不同子领域的学者,性质类似一个大学校园的兴趣社团。其中比较有名的诸如SIGDAT(Linguistic data and corpus-based approaches to NLP)、SIGNLL(Natural Language Learning)等。这些SIGs也会召开一些国际学术会议,其中比较有名的就是SIGDAT组织的EMNLP(Conference on Empirical Methods on Natural Language Processing)和SIGNLL组织的CoNLL(Conference on Natural Language Learning)。此外还有一个International Committee on Computational Linguistics的老牌NLP/CL学术组织,它每两年组织一个称为International Conference on Computational Linguistics (COLING)的国际会议,也是NLP/CL的重要学术会议。NLP/CL的主要学术论文就分布在这些会议上。作为NLP/CL领域的学者最大的幸福在于,ACL学会网站建立了称作ACL Anthology的页面(URL:),支持该领域绝大部分国际学术会议论文的免费下载,甚至包含了其他组织主办的学术会议,例如COLING、IJCNLP等,并支持基于Google的全文检索功能,可谓一站在手,NLP论文我有。由于这个论文集合非常庞大,并且可以开放获取,很多学者也基于它开展研究,提供了更丰富的检索支持,具体入口可以参考ACL Anthology页面上方搜索框右侧的不同检索按钮。与大部分计算机学科类似,由于技术发展迅速,NLP/CL领域更重视发表学术会议论文,原因是发表周期短,并可以通过会议进行交流。当然NLP/CL也有自己的旗舰学术期刊,发表过很多经典学术论文,那就是Computational Linguistics(URL:)。该期刊每期只有几篇文章,平均质量高于会议论文,时间允许的话值得及时追踪。此外,ACL学会为了提高学术影响力,也刚刚创办了Transactions of ACL(TACL,URL:),值得关注。值得一提的是这两份期刊也都是开放获取的。此外也有一些与NLP/CL有关的期刊,如ACM Transactions on Speech and Language Processing,ACM Transactions on Asian Language Information Processing,Journal of Quantitative Linguistics等等。根据Google Scholar Metrics 2013年对NLP/CL学术期刊和会议的评价,ACL、EMNLP、NAACL、COLING、LREC、Computational Linguistics位于前5位,基本反映了本领域学者的关注程度。NLP/CL作为交叉学科,其相关领域也值得关注。主要包括以下几个方面:(1)信息检索和数据挖掘领域。相关学术会议主要由美国计算机学会(ACM)主办,包括SIGIR、WWW、WSDM等;(2)人工智能领域。相关学术会议主要包括AAAI和IJCAI等,相关学术期刊主要包括Artificial Intelligence和Journal of AI Research;(3)机器学习领域,相关学术会议主要包括ICML,NIPS,AISTATS,UAI等,相关学术期刊主要包括Journal of Machine Learning Research(JMLR)和Machine Learning(ML)等。例如最近兴起的knowledge graph研究论文,就有相当一部分发表在人工智能和信息检索领域的会议和期刊上。实际上国内计算机学会(CCF)制定了“中国计算机学会推荐国际学术会议和期刊目录”(),通过这个列表,可以迅速了解每个领域的主要期刊与学术会议。最后,值得一提的是,美国Hal Daumé III维护了一个natural language processing的博客(),经常评论最新学术动态,值得关注。我经常看他关于ACL、NAACL等学术会议的参会感想和对论文的点评,很有启发。另外,ACL学会维护了一个Wiki页面(),包含了大量NLP/CL的相关信息,如著名研究机构、历届会议录用率,等等,都是居家必备之良品,值得深挖。2. 国内学术组织、学术会议与学术论文与国际上相似,国内也有一个与NLP/CL相关的学会,叫做中国中文信息学会(URL:)。通过学会的理事名单()基本可以了解国内从事NLP/CL的主要单位和学者。学会每年组织很多学术会议,例如全国计算语言学学术会议(CCL)、全国青年计算语言学研讨会(YCCL)、全国信息检索学术会议(CCIR)、全国机器翻译研讨会(CWMT),等等,是国内NLP/CL学者进行学术交流的重要平台。尤其值得一提的是,全国青年计算语言学研讨会是专门面向国内NLP/CL研究生的学术会议,从组织到审稿都由该领域研究生担任,非常有特色,也是NLP/CL同学们学术交流、快速成长的好去处。值得一提的是,2010年在北京召开的COLING以及2015年即将在北京召开的ACL,学会都是主要承办者,这也一定程度上反映了学会在国内NLP/CL领域的重要地位。此外,计算机学会中文信息技术专委会组织的自然语言处理与中文计算会议(NLP&CC)也是最近崛起的重要学术会议。中文信息学会主编了一份历史悠久的《中文信息学报》,是国内该领域的重要学术期刊,发表过很多篇重量级论文。此外,国内著名的《计算机学报》、《软件学报》等期刊上也经常有NLP/CL论文发表,值得关注。过去几年,在水木社区BBS上开设的AI、NLP版面曾经是国内NLP/CL领域在线交流讨论的重要平台。这几年随着社会媒体的发展,越来越多学者转战新浪微博,有浓厚的交流氛围。如何找到这些学者呢,一个简单的方法就是在新浪微博搜索的“找人”功能中检索“自然语言处理”、 “计算语言学”、“信息检索”、“机器学习”等字样,马上就能跟过去只在论文中看到名字的老师同学们近距离交流了。还有一种办法,清华大学梁斌开发的“微博寻人”系统()可以检索每个领域的有影响力人士,因此也可以用来寻找NLP/CL领域的重要学者。值得一提的是,很多在国外任教的老师和求学的同学也活跃在新浪微博上,例如王威廉()、李沐()等,经常爆料业内新闻,值得关注。还有,国内NLP/CL的著名博客是52nlp(),影响力比较大。总之,学术研究既需要苦练内功,也需要与人交流。所谓言者无意、听者有心,也许其他人的一句话就能点醒你苦思良久的问题。无疑,博客微博等提供了很好的交流平台,当然也注意不要沉迷哦。3. 如何快速了解某个领域研究进展最后简单说一下快速了解某领域研究进展的经验。你会发现,搜索引擎是查阅文献的重要工具,尤其是谷歌提供的Google Scholar,由于其庞大的索引量,将是我们披荆斩棘的利器。当需要了解某个领域,如果能找到一篇该领域的最新研究综述,就省劲多了。最方便的方法还是在Google Scholar中搜索“领域名称 + survey / review / tutorial / 综述”来查找。也有一些出版社专门出版各领域的综述文章,例如NOW Publisher出版的Foundations and Trends系列,Morgan & Claypool Publisher出版的Synthesis Lectures on Human Language Technologies系列等。它们发表了很多热门方向的综述,如文档摘要、情感分析和意见挖掘、学习排序、语言模型等。如果方向太新还没有相关综述,一般还可以查找该方向发表的最新论文,阅读它们的“相关工作”章节,顺着列出的参考文献,就基本能够了解相关研究脉络了。当然,还有很多其他办法,例如去上看著名学者在各大学术会议或暑期学校上做的tutorial报告,去直接咨询这个领域的研究者,等等。
不请自来,语言学背景,研二。废话不说,直接上货。书籍篇:入门书籍挺多的,我也看过不少。1)
这是我看的第一本关于NLP的书。现在第二版出来了,貌似新增了两章内容,还没看过。第一版写的挺好,科普性质。看完对于nlp的许多技术原理都有了一点初步认识。现在没事还会翻翻的。2)(冯志伟)冯志伟老师这本书,偏向于语言学,书略厚。关于语言学的东西很多。都是很容易理解的东西。建议没有学过理工科们翻一翻,毕竟nlp这东西未来趋势可能会融合不少语言学的东西。3)《自然语言处理综论》(Daniel Jurafsky)
这本书也是冯志伟老师翻译的,翻译的挺棒,看了差不多一半。综论性质的,选感兴趣的章节翻翻就行。作者是Daniel Jurafsky,在coursera上面有他的课程,后面视频篇里集中谈。4)
这本书还是冯志伟老师写的。很佩服冯志伟老师,文理兼修,而且都很厉害。内容许多是从他以前的著作里面摘取的。算是一本各种语言模型和统计模型的大集合吧。放在桌面,没事翻翻也能是极好的。5)
这本书我觉得写的不错。虽然我是语言学背景,但读起来也没有太吃力。它也是综论性质的,可以跳着看。6)
自然语言处理需要些机器学习的知识。我数学基础还是太薄弱,有的内容还是有些吃力和困惑的。7)
这些书都是python相关的。中间那本就是将NLTK的。网上都有电子版,需要的时候翻一番看一看就行。视频篇: 上面提到的,斯坦福的nlp课程,哥伦比亚大学的,两个都是英文的,无中文字幕,现在还可以下载视频和课件。另外超星学术视频:1)
我觉得讲的还是不错的,第一次听的时候有些晕乎。该课程网上有ppt讲义。讲义后来被作者写成了书,就是上面提到的《统计自然语言处理》。拿着书就是教材,还有课程ppt和视频可以看,这种感觉还是很好的。2)
感觉讲的一般,听了几节,跳跃太多,有时候让人摸不着头脑。多听听还是很有益处的吧。3)
这个就是语言学内容为主了,作者也是语言学背景下在nlp比较活跃的。讲的很浅。老师讲课很啰嗦,说话太慢,我都是加速看的。4)
冯志伟老师这个课,一如他的著作,语言学和统计都会涉及到一些。冯志伟老师说话有些地方听不大清,要是有字幕就好了。5)这是纯语言学的课程。陆剑明也是当代语言学的大师。我觉得既然是自然语言处理,语言学的东西,还是多少要了解的。其他篇:1)博客的话,专门记录nlp的,很不错,再有就是csdn上一些比较琐碎的了。2)这个刚开始的时候也看了看,又不少干货。3)《中文信息学报》说这个,不会被大神喷吧。英语不佳,英文文献实在看的少。这个学报,也是挑着看看就行。好像就是这些内容了。如果有,日后再补。虽然自己写了这么多,但不少书和视频都没有完整的看完。现在水平仍很菜,仍在进阶的路上。希望各路大神多多指点,该拍砖就拍吧。
看Coursera相关的课程,或参考:Manning and Shcutze, Foundations of Statistical Natural Language Processing但更重要的还是实战经验!
1、 《自然语言处理综论》(Speech and Language Processing: An
Introduction to Natural Language Processing, Computational Linguistics and
Speech Recognition)
  这本书的权威自不用说,译者是冯志伟老师和孙乐老师,当年读这本书的时候,还不知道冯老师是谁,但是读起来感觉非常好,想想如果没有在这个领域积攒多年的实力,是不可能翻译的这么顺畅的。这本书在国内外的评价都比较好,对自然语言处理的两个学派(语言学派和统计学派)所关注的内容都有所包含,但因此也失去一些侧重点。从我的角度来说更偏向于统计部分,所以需要了解统计自然语言处理的读者下面两本书更适合做基础阅读。不过这本书的N-gram语言模型部分写得非常不错,是SRILM的推荐阅读参考。
2、《统计自然语言处理基础》(Foundations of Statistical Natural
Language Processing)
  我比较喜欢这本书,这两年的学习过程中也经常拿这本书作为参考,可能与我做统计机器翻译有关吧。看china
pub上的评论说这本书的翻译比较差,自己的感觉是还行。当然,这是国内翻译图书的一个通病:除了很难有翻译的非常好的书外,另外一个原因就是滞后性。如果e文足够好的坏,就及时看英文版吧。这本书在统计基本部分的介绍很不错,另外n元语法部分讲得也比较好,也是SRILM的推荐阅读。
3、《统计自然语言处理》
  这是北京自动化所宗成庆老师今年5月出版的一本专著,我有幸较早的阅读了这本书的很多章节。一个很强的感觉是:如果你想了解相关领域的国内外最新进展,这本书非常值得一读。上面两本书在由于出版稍早的缘故,很多领域最新的方法都没有介绍。而这本书刚刚出版,宗老师对国内外现状把握的也比较好,因此书中充分体现了这方面的信息。另外统计机器翻译这一部分写得很详细很不错,这可能与宗老师亦是这个领域的研究者有关吧。
4、《计算机自然语言处理》
  这是我最早看的一部自然语言处理方面的书籍,和上面几部大部头的书籍相比,这本书很薄,可以很快的看完。书的内容我都有点忘了,但是印象中可以在每个章节看到国内这个领域的研究历史和相关单位。这时才发现母校HIT在这个领域的超强实力,只是可惜这时候已经离开冰城了。
  这些书籍怎么读都行,泛览也罢,精读也行,只要有时间,多读书是没坏处的。我自己的经验是,先泛泛的浏览或阅读一篇,对于比较晦涩的部分可以先跳过去,然后对自己感兴趣的领域或者将要从事的领域的相关章节进行精读,当然,书籍一般在开始的几个章节讲些基础性的知识,这部分最好也仔细揣摩一下。真正要对自己研究的领域深刻了解,还得好好读一下本领域的相关论文。
顺便推荐课程 coursera上michael collins 的课程和他写的一系列文档。
我感觉是没有快速入门的方法学习NLP是一个艰苦的过程,好多东西需要学,尤其是刚入门时。如果实在想找到什么材料帮助入门,不如去网上搜索一下各个学校相关专业的NLP101课件 然后跟着上面学就好了重要的事情说三遍:一定要做作业!一定要做作业!一定要做作业!
上一边Collins的nlp课,看一遍他的讲义就够了
说说自己的历程吧。我是一名非科班的自然语言,机器学习,数据挖掘关注者。因工作关系,5年前需要做与自然语言处理的项目。当时的项目老大先是扔给我一本书《统计自然语言处理》,直接给我看蒙了。不能说一点都不懂,但是看的云里雾里,不知道get几层。但看这本书的过程中,我狂搜了些自然语言处理的课件,有北大的,中科院的,都写的很好,从语言模型开始。从分词,标注,语法树,语意等等。也大体知道自然语言处理,分词法,语法,语义。然后是各种应用,信息检索,机器翻译等自然语言经典应用问题。断断续续做了些小项目,基于语言模型的拼音输入法,仿照sun'pinyin写的,他们的blog写的很详细,从模型建模,到平滑处理,很详细,我也用python实现了一遍,当时这个输入法配合上一个简单的ui还在部门内部推广了,搞了个基于云的拼音输入法,获得个小奖品,很是洋洋得意。这个过程中,我看着sunpinyin的blog, 回过头又去看课件,去了解很细节的问题,如拉普拉斯平滑,回退平滑的细节等,收获很多。后来老大告诉我,看自然语言问题时,可以找博士论文先看,因为博士论文一般都会来龙去脉讲的非常详细,看完一遍之后基本上这个问题就了解的差不多,然后就是follow业界的进度,那就是关注各种会议和期考,可自行百度和谷歌。搞好这个拼音输入法,进入实际项目,做一套中文自然语言的基础处理引擎,好在不是让我一个人来,公司开始找大学合作,我做企业项目负责跟进的,大学负责具体算法,我跟着自己调查分词标注算法,了解了有基于词典的,语言模型的,hmm,crf的,那个crf的,我始终搞不大明白,后来先了解了hmm的vertbe算法,em算法,大学的博士给我讲了一遍crf,终于豁然开朗。还把解码过程写到了上,关注的人还可以。从那以后我感觉我就真入门了。在来一个什么问题,我基本上也有套路来学习和研究了。 总结下,1.先各种课件,加那本自然语言的书,搞清楚自然语言大概都有哪些问题,主要是为了解决什么问题的。2.基于某个问题看博士论文,了解来龙去脉。然后follow业界进度。3.找各种资源,会议的,期刊的,博客(不是打广告,我不是博主,不过博客真心不错)4.微博上关注各种这个领域的大牛,他们有时候会推荐很多有用的资料。当然,数学之美 我也读了,确实不错。
在知乎上搜索相关问题,有人推荐《数学之美》,之前粗略看过一次,这次想重新看一下并且做个读书笔记。下面是关于自然语言理解方面的一些读书笔记和自己的思考。一. 自然语言处理历史:
自然语言处理最初发展的20多年里,相关科学家都极力通过电脑模拟人脑,试图用这种方式来处理人类语言,但是这种方式被证明是行不通的,成功几乎为零。NLP发展的第二阶段是70年代之后,科学家们终于找到了基于数学模型和统计的方法。第一阶段的时候,学术界对人工智能和自然语言理解的普遍认识是:要让机器完成翻译或者语音识别等等,必须先让计算机理解自然语言,就像人类一样去理解这些语言,这显然是做不到的。即便在可预见的将来,这也必定是一件不太现实的事情。第二阶段,比如机器在翻译的过程中,并没有理解这句话的意思,它只是做了一种统计上的归纳而已。机器依旧是机器。基于规则的分析方法,需要将现有的句法系统按照句子成分划分成一个一个单位,而这会随着句子的复杂多样化句子的划分复杂度几何级上升,并且没有上下文的帮助句子词义的多样性同样限制了规则分析方法的发展。比如The pen is in the box.和The box is in the pen.按照规则来分析该句子根本不可能获得语义,必须依靠常识来得到该句子的真正含义,但是基于统计的方法可以依靠上下文对该语义做一个合理的预估。基于规则的方法完全从该单独的句子着手,根本不管上下文。但是这样也还是没有让基于统计的方法快速发展起来,主要原因在于基于统计的方法需要大量的训练数据,这在当时来说是达不到的。二.统计语言模型:
自然语言逐渐演变成为一种上下文相关的信息表达和传递的方式,计算机就用统计语言模型去表征自然语言这种上下文相关的特性。一个句子S=(w1,w2,w3…wn)由n个词组成,我们要弄清该句子是否是一个合乎实际的句子,可以计算该句子在现实情况下的概率,最最简单的想法是把人类所有句子统计一遍,然后再计算这个句子的概率,但是这显然是行不通的。一个可行的方法是把这个句子分成n个词(对于中文来说,这就是中文分词研究的东西),然后再计算这n个词按照该顺序组成这个句子的概率大小。可以表示如下:
这个概率计算的复杂度会随着n的增大指数上升。因此引入齐次马尔科夫性假设,即假设一个词的出现只与其前面一个词的出现有关,而与更前面的词无关,这样概率计算可以简化为如下:这样的模型称为二元模型,用更一般的表示方法为:
但是二元模型显然太过于简单草率,所以有了高阶模型的出现,n阶模型表示一个词的出现与其前面的n-1个词有关。表示为:一般由于计算复杂度的问题,大多数情况下用3阶模型,谷歌的用到了4阶模型。接下来的问题是,由于用来训练模型的语料库(corpus)太少而出现的零概率情况如何处理?这里有一个古德-图灵公式,基本思路是当词语对出现次数大于某一阈值时,利用条件概率计算出来的频率根据大数定理就当做概率(因为只有大于某一阈值时我们才有充分理由相信大数定理的条件被满足),当出现频数小于该阈值但又大于零的频率,则相应的下调该频率值,因为这个时候大数定律成立的条件是没有被满足的,并且出现次数越少,下调频率越多,最后把这个下调的频率当做所求的概率,最后对于零出现的情况,则将这些下调的总和平均分配给零出现的次数,以保证概率总和为1。三.中文分词问题:汉语和英语有分割每个词的空格不一样,汉语中所有的词都没有明显分界,所以必须解决中文分词问题,最简单的方法是查字典,基本思想是首先有一个中文词语的字典库,将一个句子从左扫描到末尾,遇到字典里有的词之后就保存,规则是尽量找最长的词,比如中国航天城,中是一个单字词,先保存,继续往下扫描,遇到国字,中和国可以组成一个更长的词,因此最后保存中国这个词,后面的航天城类似。查字典的处理方法简单,但不够准确。因为很多情况下并不是最长词的分词规则就是最适合的。 利用统计语言模型来处理中文分词的第一人是郭进博士,基本思想是:假设一个句子有很多种分词方法,则分别计算每种分词方法对应的该句子概率。即:也就是说,利用每种分词方法都可以计算该句子的概率。然后取最大概率对应的分词方法。其本质上是一种极大似然估计。四.关于郭进博士分词方法的一些思考:(求指正)在这里我添加一些关于极大似然估计和极大后验概率,以及频率学派和贝叶斯学派这方面自己的思考,因为每次好不容易弄清楚了二者联系和区别之后,过段时间又混淆了。在这里,极大似然估计和极大后验概率都是如下的应用场景:在给定观测数据X的情况下,我们要求解产生该观测数据X背后的参数,并且我们求得的参数并不是非此即彼的,也就是有一个概率分布来表征每一个可能的参数。当然, 一般情况下我们都取概率最大的那个参数,即.极大似然估计和极大后验概率的关键区别就在第三个等号这里,这也是历史上著名的频率学派和贝叶斯学派争论的地方,焦点就在于是否是一个常数,假如是常量的话,那么第三个等号自然就成立了,这样对于参数的估计就变成了极大似然估计(Maximum Likelihood),假如不为常量,那么第三个等号就不能成立,对于参数的估计只能停留在倒数第二个式子这里,这便是极大后验概率(Maximum A Posteriori)。
在频率学派的世界里, 参数是常量只是未知。而在贝叶斯学派的世界里,参数则不是常量。双方曾经对这两种观点进行了激烈的争论,这是后话不表。
回到我们这里的问题,给定一个句子,我们要求解其分词组合,实际上给定的这个句子就是我们的观测值,而分词组合便是待求解的参数,而上文说到的清华大学博士郭进所用到的方法便是:先求得每个分词组合下对应的句子概率,把最大概率对应的分词组合作为最终答案。很明显存在如下这个公式:所以我把这个归为本质上的极大似然估计。中文分词并不是只能应用在中文领域,而是根据特定场合同样可以应用在字母语言的领域,比如英语词组的分割,手写句子的识别(因为手写英文句子的空格不那么明显)等等。中文分词已经发展到相当高的阶段,目前只是做一些完善和添加新词的工作,但是也存在一些工程实现方面的取舍问题,主要有两点:1.分词的一致性,对于同样一个句子,每个人的分词方法不一样,不能说哪种分词方法更优,只能说在具体应用场景里存在一种最优的分词方法;2.分词的颗粒度问题,和一致性问题一样,不同的应用场景适合用不同的颗粒度,分词器在设计的时候一般会全面兼顾颗粒度小和颗粒度大的情况,在具体问题的时候再进行相应的取舍。
已有帐号?
无法登录?
社交帐号登录}

我要回帖

更多关于 自然语言处理 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信