基于同音别字进行纠错词推荐

基于同音别字进行纠错词推荐流程应该是如下: 根据之前的同音别字词典: niuyuenikesi -> 纽约尼克斯 huojian -> 火箭 lixiang -> 理想 立项 李湘 zhongkeyuan -> 中科院 钟克媛 NBA -> NBA linshuhao -> 林书豪 guojingming -> 郭敬明 zidonghuasuo -> 自动化所 yaoming -> 要命 姚明 药名 耀明 进行查询索引测试 package CB_QR;       import java.io.IOException; … 继续阅读

同音别字纠错字典的创建

题外话:搜狗实验室http://www.sogou.com/labs/ 提供了很多中文语料库,有词典词频和词性,基于web域的。我们这里先不考虑。关于建立索引和查询也可以看看企业常用的lucene和solr。下面进入正题。 一:用户词库usrdict 拿到的用户词库usrdict.txt(699781个词汇)是从百度百科和互动百科中抽取的实体词条,从infobox中抽取结构化数据(三元组)。Usrdict中的词不一定会构成三元组,但三元组中的实体词一定在usrdict中。Usrdict中出现的一些字符错误如: 而放到html代码中进行显示,可以看到: ‎织金县第二中学 ‎虚拟村庄 <<18岁29岁>> <<S日记>> <<上下策>> <<乱世浮生>> <<云之南>> “一二•一”运动纪念馆 “三八”式步枪 “三高”防治日常按摩图典 …… 说明是抽取时没有处理好生僻字和html符号的问题,如<>实际上对应<>、”对应“号等。可直接删除,后面有正确的词。这只是一小部分,删掉后还有699619个词,但实际上usrdict中还有一些无意义的词,例如最后一个词条“¥23.00元”,考虑这些也不是大部分,就先将就着用吧。 二:同音别字的纠错词典 为了建立同音别字的纠错词典,需要利用java集合中的HashMap。 首先把usrdict中的同音别字词全部整理处理,例如简单的一个testusrdict.text中的内容为: 要命 姚明 药名 耀明 林书豪 郭敬明 火箭 NBA 纽约尼克斯 自动化所 中科院 钟克媛 理想 立项 李湘 把字典中词的拼音转化出来,并命名为dicAddPY.txt: package CB_QR_Tools; import java.io.FileWriter; … 继续阅读

汉语转拼音Pinyin

利用汉语转拼音可以采用内码和拼音的对应关系进行转码,例: 汉字→机内码→简体中文GB→unicode码 我 →CED2 →52946 →25105 爱 →B0AE →45230 →29233 楼 →C2A5 →49829 →27004 主 →D6F7 →55031 →20027 , →A3AC →41900 →65292 因 →D2F2 →54002 →22240 为 →CEAA →52906 →20026 楼 →C2A5 →49829 →27004 主 →D6F7 →55031 →20027 就 →BECD … 继续阅读

QA中文查询词纠错初级模型框架

一:中文查询词纠错框架 中文处理的难点: 1, 字符有8W左右; 2, 词汇有6W左右; 3,一词多义; 4,书写不分词; 5,发音与字形(同音词,形近词) 对于初级模型来说可以把输入的字符和数据库中的现有实体名词进行字符串匹配. 如果匹配的上就直接采用用户输入查询词, 如果没有匹配上就需要进行纠错处理. 模型的建立可基于拼音,基于编辑距离,基于N-gram模型,基于统计等. 中文纠错有多种原因, 我们先仅考虑键盘录入错误. 中文查询词纠错的目的主要是推测用户输入, 确定查询信息, 给出纠错意见. 中文查询信息有两大特点: 1. 不包含错字; 2. 错误信息最多的是同音别字错误. 例: 要命-姚明. 这是由于输入法日益流行导致的. 因为拼音输入法学习成本低,思维干扰的最少,普及广,所以出现了大量的同音词错误,而多字漏字的情况多是由于不小心的输入造成的。根据这种错误的特点,设计中文查询词纠错模块使用基于拼音hash词典的纠错算法,和多字驱动词典+字符串匹配的纠错算法,利用前者处理包含同音别字的查询信息,利用后者处理包含多字漏字的查询信息。纠错模块结构如下: 二:同音别字查询词纠错 2.1 对于同音别字查询,首先第一要做的是把输入的字符串转换为拼音 Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 Pinyin 4j介绍:有时候,需要将汉字编程对应的拼音,以方便数据的处理。比如在Android手机应用 的开发上,要查询联系人的姓名,通常都是用拼音进行查询的。比如要查询“曹孟德”,就可以输入“cmd”,即“曹孟德”三个汉字的拼音 “caomengde”各字的首字母。但是怎样才能将“曹孟德”翻译成“caomengde”呢?很简单的办法就是建立一个大的对照表(比如用关联容器 Map),比如<”曹”,”cao”>,<” 孟”,”meng”>,<” 德”,”de”>…但这样的做法,需要维护好一个比较大的对照表,同时一个汉字可能有多个发音,也就是说Map这样的容器时不行的,因为 其<key,value>必须是一一对应的。在C++中可以用STL里面的multimap来解决这个问题,但Java中没有类似 multimap这样的东西,除非自己实现一个。 … 继续阅读

NLP常见缩略词

ACL = Association for Computational Linguistics(计算语言学协会) AFNLP = Asian Federation of Natural Language Processing(亚洲自然语言处理联盟) AI = Artificial Intelligence(人工智能) ALPAC = Automated Language Processing Advisory Committee(语言自动处理咨询委员会) ASR = Automatic Speech Recognition(自动语音识别) CAT = Computer Assisted/Aided Translation(计算机辅助翻译) CBC = Clustering by Committee … 继续阅读

国内NLP的那些人那些会

统计学和语言学专家都列在一起了,没有区分。 1,黄昌宁,1937年生于广东,1955年考入清华大学电机系,1961年毕业并留校任教至博士生导师, 1983-1984年赴美国耶鲁大学进修,1986-1987年曾在香港理工大学任教,1999年4月加入微软中国研究院任主任研究员。中国计算机自然语言处理领域的”趟路人”和集大成者。 2,孙茂松,清华大学计算机科学与技术系系主任,教授,博士生导师。研究方向为自然语言理解、中文信息处理和Web智能。中国中文信息学会副理事长。 3,詹卫东,男 ,汉族。籍贯浙江衢州,1972年8月生于湖北广水。2002年任北京大学中文系副教授,2004年任北京大学计算语言学研究所副所长。 4,宗成庆,1998年3月毕业于中国科学院计算技术研究所,获博士学位,1998年5月至2000年4月在中国科学院自动化研究所模式识别国家重点实验室从事博士后研究,出站后留实验室工作至今,现为模式识别国家重点实验室副主任,研究员,博士生导师 5,宋柔, 男 ,1946年9月出生于江苏苏州。理学硕士,北京语言大学信息科学学院教授,博士生导师,主要从事智能软件工具、语言信息处理、人工智能应用方面的研究、开发和教学工作,近年的主要研究方向是语言信息处理。 6,倪光南,1939年出生,现为中国科学院计算所研究员,中国中文信息学会理事长,中国工程院院士。曾任北京市人民政府参事。系第八届全国人大代表,第八届、第九届全国政协委员,第五届全国青联特邀委员 。联想集团首任总工程师。作为我国最早从事汉字信息处理和模式识别研究的学者之一,提出并实现在汉字输入中应用联想功能。 7,周明,博士,现为微软亚洲研究院主任研究员。主要从事机器翻译和自然语言处理等方面的研究。在加入微软研究院之前为清华大学计算机科学与技术系的副教授。1999年4月~1999年8月任清华大学计算机系自然语言处理研究组负责人。1999年9月加盟微软亚洲研究院。 8, 姚天顺,男,1956年毕业于吉林大学。东北大学教授,博士生导师,1991年,被国务院学位委员会批准以姚天顺教授为首国内第一个以计算语言学为主流方向的计算机科学理论博士点。现任职务:国际东方语言计算机学会常务理事,国际东方语言计算机处理学报编委,香港政府研究资讯局海外评审员,中国中文信息处理研究会副理事长,沈阳市计算机协会理事长。 9,刘群,职称:研究员,教授,博士生导师 单位:中国科学院计算技术研究所 智能信息处理重点实验室 自然语言处理研究组 职务:自然语言处理研究组组长 研究方向:自然语言处理,机器翻译,信息提取。 10,冯志伟,1939年4月生,云南省昆明市人,计算语言学家,专门从事语言学和计算机科学的跨学科研究。他先后在北京大学和中国科学技术大学研究生院两次研究生毕业,获双硕士学位。1978年到法国格勒诺布尔理科医科大学应用数学研究所(IMAG)自动翻译中心(CETA)师从法国著名数学家、国际计算语言学委员会主席沃古瓦(B.Vauquois)教授专门研究数理语言学和机器翻译问题,研制了世界上第一个汉语到多种外语的FAJRA机器翻译系统。 11,刘挺,1972年生,哈尔滨人。教授、博士生导师。哈工大计算机研究所副所长,语言语音教育部重点实验室副主任,哈工大信息检索研究室主任。国家863“中文处理”重点项目总体组专家。中国中文信息学会理事,信息检索专委会副主任,计算语言学专委会委员,《中文信息学报》编委。中国计算机学会中文信息技术专委会委员,YOCSEF委员。 曾任IJCNLP, AIRS等国际会议的程序委员会委员,以及全国信息检索会议NCIRCS的程序委员会主席,JSCL的多届委员等。 12,王海峰,博士,现任百度基础技术领域首席科学家,兼任北京大学语言信息工程系主任、哈尔滨工业大学兼职教授、博士生导师、全国信息技术标准化技术委员会委员等等。王海峰是自然语言处理领域世界上影响力最大、也最具活力的国际学术组织ACL五十年历史上唯一华人主席(president),他还曾在各种顶级国际会议中任program chair等各类主席职务。因为在科技领域的卓越表现,王海峰被评为“2011年度中关村高端领军人才”。 附录: 中文信息学会(2008) 北京大学:俞士汶(常务理事)、孙斌(理事,计算语言所副所长)、王厚峰、穗志方、李素建;李晓明(天网、信息检索)、闫鸿飞(天网);吴玺宏(视听觉实验室) 清华大学:黄昌宁(理事)、孙茂松(副理事长,计算语言学专业委员会主任)、陈群秀(理事,女)、苑春法、周强(句法分析);马少平(理事,信息检索)、张敏;蔡莲红(理事,语音合成专家,女);方棣棠(语音识别)、王作英(语音识别)、郑方(语音识别);丁晓青(汉字识别) 中国科学院计算技术研究所:倪光南(理事长);白硕(常务理事,信息检索专业委员会主任)、程学旗(理事、信息检索);钱跃良(理事)、刘群(机器翻译)、吕雅娟(机器翻译);王斌(信息检索) 中国科学院自动化研究所:黄泰翼、徐波(副理事长、863领域专家、语音处理)、宗成庆(理事)、赵军(信息检索)、陶建华(语音合成)、张树武 中国科学院软件研究所:曹右琦(常务副理事长、女)、孙乐(秘书长、信息检索)、张俊林 中国科学院声学研究所:吕士楠(语音合成)、黄曾阳(HNC发明人)、张全(理事) 哈尔滨工业大学:李生(副理事长,原哈工大校党委书记);王晓龙(理事)、关毅;赵铁军(理事、机器翻译);刘挺(理事、信息检索);韩纪庆(语音处理);唐降龙(汉字识别) 北京语言大学:张普(常务理事)、杨尔弘;宋柔(理事)、荀恩东 复旦大学计算科学与工程系:吴立德、黄萱菁(理事、女、信息检索)、周雅倩 东北大学信息学院计算机软件研究所自然语言处理实验室:姚天顺、朱靖波(理事) 山西大学计算科学与技术学院:刘开瑛(理事)、郑家恒 … 继续阅读

[zz]漫话中文自动分词和语义识别(下):句法结构和语义结构

这篇文章是漫话中文分词算法的续篇。在这里,我们将紧接着上一篇文章的内容继续探讨下去:如果计算机可以对一句话进行自动分词,它还能进一步整理句子的结构,甚至理解句子的意思吗?这两篇文章的关系十分紧密,因此,我把前一篇文章改名为了《漫话中文自动分词和语义识别(上)》,这篇文章自然就是它的下篇。我已经在很多不同的地方做过与这个话题有关的演讲了,在这里我想把它们写下来,和更多的人一同分享。 什么叫做句法结构呢?让我们来看一些例子。“白天鹅在水中游”,这句话是有歧义的,它可能指的是“白天有一只鹅在水中游”,也可能指的是“有一只白天鹅在水中游”。不同的分词方案,产生了不同的意义。有没有什么句子,它的分词方案是唯一的,但也会产生不同的意思呢?有。比如“门没有锁”,它可能是指的“门没有被锁上”,也有可能是指的“门上根本就没有挂锁”。这个句子虽然只能切分成“门/没有/锁”,但由于“锁”这个词既有可能是动词,也有可能是名词,因而让整句话产生了不同的意思。有没有什么句子,它的分词方案是唯一的,并且每个词的词义也都不再变化,但整个句子仍然有歧义呢?有可能。看看这句话:“咬死了猎人的狗”。这句话有可能指的是“把猎人的狗咬死了”,也有可能指的是“一只咬死了猎人的狗”。这个歧义是怎么产生的呢?仔细体会两种不同的意思后,你会发现,句子中最底层的成分可以以不同的顺序组合起来,歧义由此产生。 在前一篇文章中,我们看到了,利用概率转移的方法,我们可以有效地给一句话分词。事实上,利用相同的模型,我们也能给每一个词标注词性。更好的做法则是,我们直接把同一个词不同词性的用法当作是不同的词,从而把分词和词性标注的工作统一起来。但是,所有这样的工作都是对句子进行从左至右线性的分析,而句子结构实际上比这要复杂多了,它是这些词有顺序有层次地组合在一起的。计算机要想正确地解析一个句子,在分词和标注词性后,接下来该做的就是分析句法结构的层次。 在计算机中,怎样描述一个句子的句法结构呢? 1957 年, Noam Chomsky 出版了《句法结构》一书,把这种语言的层次化结构用形式化的方式清晰地描述了出来,这也就是所谓的“生成语法”模型。这本书是 20 世纪为数不多的几本真正的著作之一,文字非常简练,思路非常明晰,震撼了包括语言学、计算机理论在内的多个领域。记得 Quora 上曾经有人问 Who are the best minds of the world today ,投出来的答案就是 Noam Chomsky 。 随便取一句很长很复杂的话,比如“汽车被开车的师傅修好了”,我们总能自顶向下地一层层分析出它的结构。这个句子最顶层的结构就是“汽车修好了”。汽车怎么修好了呢?汽车被师傅修好了。汽车被什么样的师傅修好了呢?哦,汽车被开车的师傅修好了。当然,我们还可以无限地扩展下去,继续把句子中的每一个最底层的成分替换成更详细更复杂的描述,就好像小学语文中的扩句练习那样。这就是生成语法的核心思想。 熟悉编译原理的朋友们可能知道“上下文无关文法”。其实,上面提到的扩展规则本质上就是一种上下文无关文法。例如,一个句子可以是“什么怎么样”的形式,我们就把这条规则记作 句子 → 名词性短语+动词性短语 其中,“名词性短语”指的是一个具有名词功能的成分,它有可能就是一个名词,也有可能还有它自己的内部结构。例如,它有可能是一个形容词性短语加上“的”再加上另一个名词性短语构成的,比如“便宜的汽车”;它还有可能是由“动词性短语+的+名词性短语”构成的,比如“抛锚了的汽车”;它甚至可能是由“名词性短语+的+名词性短语”构成的,比如“老师的汽车”。我们把名词性短语的生成规则也都记下来: 名词性短语 → 名词 名词性短语 → 形容词性短语+的+名词性短语 名词性短语 → … 继续阅读

[zz]漫话中文自动分词和语义识别(上):中文分词算法

记得第一次了解中文分词算法是在 Google 黑板报 上看到的,当初看到那个算法时我彻底被震撼住了,想不到一个看似不可能完成的任务竟然有如此神奇巧妙的算法。最近在詹卫东老师的《中文信息处理导论》课上再次学到中文分词算法,才知道这并不是中文分词算法研究的全部,前前后后还有很多故事可讲。在没有建立统计语言模型时,人们还在语言学的角度对自动分词进行研究,期间诞生了很多有意思的理论。 中文分词的主要困难在于分词歧义。“结婚的和尚未结婚的”,应该分成“结婚/的/和/尚未/结婚/的”,还是“结婚/的/和尚/未/结婚/的”?人来判断很容易,要交给计算机来处理就麻烦了。问题的关键就是,“和尚未”里的“和尚”也是一个词,“尚未”也是一个词,从计算机的角度看上去,两者似乎都有可能。对于计算机来说,这样的分词困境就叫做“交集型歧义”。 有时候,交集型歧义的“歧义链”有可能会更长。“中外科学名著”里,“中外”、“外科”、“科学”、“学名”、“名著”全是词,光从词库的角度来看,随便切几刀下去,得出的切分都是合理的。类似的例子数不胜数,“提高产品质量”、“鞭炮声响彻夜空”、“努力学习语法规则”等句子都有这样的现象。在这些极端例子下,分词算法谁优谁劣可谓是一试便知。 最简单的,也是最容易想到的自动分词算法,便是“最大匹配法”了。也就是说,从句子左端开始,不断匹配最长的词(组不了词的单字则单独划开),直到把句子划分完。算法的理由很简单:人在阅读时也是从左往右逐字读入的,最大匹配法是与人的习惯相符的。而在大多数情况下,这种算法也的确能侥幸成功。不过,这种算法并不可靠,构造反例可以不费吹灰之力。例如,“北京大学生前来应聘”本应是“北京/大学生/前来/应聘”,却会被误分成“北京大学/生前/来/应聘”。 维护一个特殊规则表,可以修正一些很机械的问题,效果相当不错。例如,“不可能”要划分成“不/可能”,“会诊”后面接“断”、“疗”、“脉”、“治”时要把“会”单独切出,“的确切”后面是抽象名词时要把“的确切”分成“的/确切”,等等。 还有一个适用范围相当广的特殊规则,这个强大的规则能修正很多交集型歧义的划分错误。首先我们要维护一个一般不单独成词的字表,比如“民”、“尘”、“伟”、“习”等等;这些字通常不会单独划出来,都要跟旁边的字一块儿组成一个词。在分词过程中时,一旦发现这些字被孤立出来,都重新考虑它与前面的字组词的可能。例如,在用最大匹配法切分“为人民服务”时,算法会先划出“为人”一词,而后发现“民”字只能单独成词了。查表却发现,“民”并不能单独划出,于是考虑进行修正——把“为人”的“人”字分配给“民”字。巧在这下“为”和“人民”正好都能成词,据此便可得出正确的划分“为/人民/服务”。 不过,上述算法归根结底,都是在像人一样从左到右地扫描文字。为了把问题变得更加形式化,充分利用计算机的优势,我们还有一种与人的阅读习惯完全不同的算法思路:把句子作为一个整体来考虑,从全局的角度评价一个句子划分方案的好坏。设计自动分词算法的问题,也就变成了如何评估分词方案优劣的问题。最初所用的办法就是,寻找词数最少的划分。注意,每次都匹配最长的词,得出的划分不见得是词数最少的,错误的贪心很可能会不慎错过一些更优的路。因而,在有的情况下,最少词数法比最大匹配法效果更好。若用最大匹配法来划分,“独立自主和平等互利的原则”将被分成“独立自主/和平/等/互利/的/原则”,一共有 6 个词;但词数更少的方案则是“独立自主/和/平等互利/的/原则”,一共只有 5 个词。 当然,最少词数法也会有踩大便的时候。“为人民办公益”的最大匹配划分和最少词数划分都是“为人/民办/公益”,而正确的划分则是“为/人民/办/公益”。同时,很多句子也有不止一个词数最少的分词方案,最少词数法并不能从中选出一个最佳答案。不过,把之前提到的“不成词字表”装备到最少词数法上,我们就有了一种简明而强大的算法: 对于一种分词方案,里面有多少词,就罚多少分;每出现一个不成词的单字,就加罚一分。最好的分词方案,也就是罚分最少的方案。 这种算法的效果出人意料的好。“他说的确实在理”是一个很困难的测试用例,“的确”和“实在”碰巧也成词,这给自动分词带来了很大的障碍。但是“确”、“实”、“理”通常都不单独成词的,因此很多切分方案都会被扣掉不少分: 他/说/的/确实/在理 (罚分:1+1+1+1+1 = 5 ) 他/说/的确/实/在理 (罚分:1+1+1+2+1 = 6 ) 他/说/的确/实在/理 (罚分:1+1+1+1+2 = 6 ) 正确答案胜出。 需要指出的是,这个算法并不需要枚举所有的划分可能。整个问题可以转化为图论中的最短路径问题,利用动态规划效率则会更高。 算法还有进一步加强的余地。大家或许已经想到了,“字不成词”有一个程度的问题。“民”是一个不成词的语素,它是绝对不会单独成词的。“鸭”一般不单独成词,但在儿歌童谣和科技语体中除外。“见”则是一个可以单独成词的语素,只是平时我们不常说罢了。换句话说,每个字成词都有一定的概率,每个词出现的频率也是不同的。 何不用每个词出现的概率,来衡量分词的优劣?于是我们有了一个更标准、更连续、更自动的改进算法:先统计大量真实语料中各个词出现的频率,然后把每种分词方案中各词的出现概率乘起来作为这种方案的得分。利用动态规划,不难求出得分最高的方案。 以“有意见分歧”为例,让我们看看最大概率法是如何工作的。查表可知,在大量真实语料中,“有”、“有意”、“意见”、“见”、“分歧”的出现概率分别是 0.0181 、 0.0005 … 继续阅读

[zz]CRF条件随机场简介

CRF(Conditional Random Field) 条件随机场是近几年自然语言处理领域常用的算法之一,常用于句法分析、命名实体识别、词性标注等。在我看来,CRF就像一个反向的隐马尔可夫模型(HMM),两者都是用了马尔科夫链作为隐含变量的概率转移模型,只不过HMM使用隐含变量生成可观测状态,其生成概率有标注集统计得到,是一个生成模型;而CRF反过来通过可观测状态判别隐含变量,其概率亦通过标注集统计得来,是一个判别模型。由于两者模型主干相同,其能够应用的领域往往是重叠的,但在命名实体、句法分析等领域CRF更胜一筹。当然你并不必须学习HMM才能读懂CRF,但通常来说如果做自然语言处理,这两个模型应该都有了解。 >>CRF详细的介绍和公式推导推荐这个PPT教程:http://wenku.baidu.com/view/f32a35d2240c844769eaee55.html。 >>另外推荐一篇HMM应用于中文分词的一篇易读的入门教程,非常形象:http://blog.sina.com.cn/s/blog_68ffc7a40100uebv.html 下文仅针对专门做自然语言处理的同学做一个快速形象的上手简介,并指出最重要的特征。这里假设你已经有基本的自然语言处理概念和马尔科夫链的基本知识。CRF本质上是隐含变量的马尔科夫链+可观测状态到隐含变量的条件概率。说隐含变量和可观测状态很抽象,我们以词性标注为例(如果你不知道什么是词性标注,请百度一下),在词性标注中词性标签就是隐含变量,具体的词语就是可观测状态,词性标注的目的是通过可观测到的一个个单词推断出来每个单词应该被赋予的词性标签。下文将用词性标签和词语代替上述两个名词。 先说马尔科夫链,这里体现了CRF的随机场特征(准确的说是马尔科夫随机场)。这里CRF和HMM都假设词性标签是满足马尔科夫性的,即当前词性仅和上一个词性有概率转移关系而与其它位置的词性无关,比如形容词后面跟形容词的概率是0.5,跟修饰性“的”的概率为0.5,跟动词的概率为0。因此,通过在一个标注集上进行统计,我们很容易得到一个概率转移矩阵,即任意词性A后紧邻任意词性B的概率都可以被统计出来。对HMM来说这部分就结束了,对CRF来说,可以在二维条件转移矩阵基础上再增加一维词语特征,如“当AB相邻,A是动词且B单词长度超过3时,B是名词的概率是xx”。大家可能注意到了马尔科夫链的窗口为1,即它仅考虑上1个词,这不见得是最合理的。这其实是一个对特征稀疏问题的折中,可以想象仅对两个词性AB统计P(B|A)能够得到很多数据的反馈,而如果统计长度为6的窗口,如P(G | ABCDEF)就会遇到数据稀疏的问题,因为很可能序列ABCDEF根本就没有在数据集中出现过.数据稀疏对机器学习的影响是巨大的,因此马尔科夫链实际以损失一定全局信息的基础上换来了更饱满的数据,实验证明这笔交易在词性标注时是赚的。 再说词性与词语直接的映射概率,这里体现了CRF的条件特征。如果是HMM,这里会直接统计词性–>单词的条件概率矩阵,比如 ”动词“ 生成 ”发射“ 的概率可能为1.5%,而生成”微软“ 的概率为0. 然后对于每一种可能的词性序列结合与条件概率相乘就能得到每一个候选序列的生成概率,然而取概率最高的作为标注结果即可。而CRF正好反过来,CRF通过发掘词语本身的特征(如长度,大小写,匹配特定词表等,也可以包括词语本身),把每个词语转化成为一个N维特征向量(vector),然后对于每个特征计算特征到词性的条件概率,这样每个词语对候选词性的条件概率即为所有特征条件概率的加和。比如我们假设特征向量只有两个,且P ( ”词语长度>3″ –> 名词词性)的概率为0.9, P(“词语位于句子末尾“ –> 名词词性)概率为0.4,且一个词恰好满足这两个特征,则其为名词的条件概率为 (0.9 + 0.4) / 2 = 0.65. 这样,CRF根据这个条件转移数值再结合词性的马尔科夫特性,就可以使用与HMM类似的方法寻找最优的词性标注序列了。 为了装得更学术一点本想再贴一个公式搞了半天没贴成功还是算了不过在上面的PPT链接中大家可以找到所以就不写了。总的来说CRF优于HMM的地方在于,它可以引入更多的特征,包括词语本身特征和词语所在上下文的特征,而非单词本身。从某种角度讲,它结合了HMM和最大熵方法。本人也刚刚接触CRF,因此都是从最浅显的角度来介绍的,如果有什么说错的地方欢迎指正啊~ 写这么多不容易,有大牛路过的话请轻拍哈~ 原文出处:http://hi.baidu.com/hehehehello/item/3b0d1f8ba1c2e5c698255f89

[Paper Note]. A Unified and Discriminative Model for Query Refinement

Paper Notes 1: Jiafeng Guo, Gu Xu, Hang Li, Xueqi Cheng. A Unified and Discriminative Model for Query Refinement. In Proceedings of the 31st Annual International ACM SIGIR Conference (SIGIR’08), 379-386, 2008. [Pdf] Categories and Subject Descriptors: [Information Storage and … 继续阅读