科学网

 找回密码
  注册

tag 标签: ngram

相关帖子

版块 作者 回复/查看 最后发表

没有相关内容

相关日志

【立委科普:NLP 中的一袋子词是什么】
liwei999 2015-11-27 10:09
curtesy of http://www.python-course.eu/text_classification_python.php 很久以来,主流 NLP (Natural Language Processing)就在这样的一袋子词里面做文章,有时候也确实做出了蛮漂亮的文章,都是用的基于统计的机器学习。这一袋子词何时有用,何时失效,有什么神奇和奥妙,又有什么陷阱和软肋?这些以前写过系列博文(见篇末【相关博文】)不同角度论过。这是革命的根本问题,涉及两条路线的是是非非,甚至会遭遇类似宗教战争一样的偏执,但为后学计,怎样论也不嫌多,兼听则明。 NLP中为什么叫一袋子词(bag of words,BOW)?机器学习的 袋子里装的什么词? NLP的对象是自然语言文本(speech 不论),具体说来,根据任务的不同,这个对象是语料库(corpus)、文章(document)或帖子(post),都是有上下文(discourse)的text,作为NLP系统的输入。对于输入的text,首先是断词(tokenization)。断词以后,有两条路可走,一条路是一句一句去做句法结构分析(parsing),另一条路就是这一袋子词的分析,又叫基于关键词(keywords)的分析。所以,一袋子词是相对于语言结构(linguistic structure)而言的。换句话说,一袋子词就是要绕过句法,把输入文字打散成词,然后通过统计模型,来完成指定的语言处理任务。 第一个问题就是,为什么一袋子词也叫做关键词?这是因为这个袋子里面的词并不是输入文本的全部词的集合,通常的做法是要剔除一些对于统计模型没有意义的词,所谓停止词(stop words),就是那些使用频率特别高的功能词之类,譬如连词,介词,冠词,感叹词等。剔除了停止词后的词,一般叫做关键词。 接下来的问题是,排除了停止词,信息不是损失了么?是的,信息损失了。作为功能词的停止词,对于自然语言句法很重要,它们往往是语言文句的重要连接组织(connecting tissues),是显性的语言形式(explicit linguistic form),与词序(word order)一起帮助构成合乎文法的语言结构,对于分析理解语言相当关键。然而,由于一袋子词的方法的立足点就是要绕过语言结构,因此它无法利用功能词的结构信息,结构是没用的。不仅如此,对于这类方法,高频的功能词不仅没用,还有干扰作用,影响统计模型的功效。只有忍痛割爱了。 第三个问题是,语言文句是通过词及其句法结构表达意义的,排除了结构,只用词,怎么能做语言的自动处理呢?两条腿走路,现在成了一条腿,怎么能走稳? 好问题,也是核心问题,要细谈可以给你谈三天。 简单的回答是,是的,一条腿走路确实走不稳,遇到上坡或爬山,也许寸步难行。但是并非所有的NLP任务都是爬山那么难,一条腿用得好,也可以走很远的路。而且一条腿也有一条腿的好处。好处之一是简单,只要一个断词一个过滤,就出来一条腿了,而建造第二条结构的腿则须花苦功夫(即 parser,事实上,对于不少统计专家,即便花了力气也很难造出一个靠谱的 parser 来,因为语言学并非他们所长,自己写语言文法对他们比登天还难,退而求其次,理论上可以用万能的机器学习去学习人的文法知识,但反映这些知识的句法树训练库又远远不足,很难奏效)。第二个好处是,反正只有一条腿,也就不用协调两条腿走路了,研究探索发现,在统计模型内部,即便有了 parser,加入了结构,要想协调好词和结构达到最佳效果,殊为不易。 需要强调的是,一袋子词模型(关键词模型)是简单的,因为简单,也带来了一系列额外的好处:鲁棒、highly scalable、移植性强。既然撇开了结构,文本之间的区别只剩下用词的不同,系统自然鲁棒起来,较易容忍输入文本的错误和混杂。第二,模型单纯,有快速实现的算法,容易 scale up 到大数据上。好处之三是移植性强,表现在,如果任务合适,移植到特定领域或其他的语言,算法甚至 feature design 都可以基本保持不变,只需要变换训练集重新训练即可达到类似的效果。必须承认,这些都是实实在在的好处,前提是这套方法对于某项NLP任务是合适和有效的。 那么什么是一袋子词比较拿手的NLP任务呢?公认有效的任务有至少有两大类,一类是 document classification(文件分类),另一类是 (corpus-based) word clustering(词的聚类)。前者基于有监督的机器学习(supervised machine learning),分类预先定义好,并反映在大量的标注了类别的数据里(训练集),用得合适具有广泛的应用;后者是无监督的机器学习(unsupervised machine learning),因为无监督,效果和用场都有限制,但是作为词典习得(lexicon acquisition)或作为半自动的人机合作,仍然具有相当的价值。考察这两类任务,容易发现他们的共同特点就是处理对象的单位较大,前者是文件,后者更大,是针对整个语料库。处理对象大意味着口袋大,里面装的词多。这时候,用词的频率分布,所谓关键词密度(keyword density),就为解决任务提供了统计上靠谱的保障。这里的道理就在,无论是文章,还是语料库(文章集),作为语言表达的载体,它们的用词都有一种自然的语义相谐性(semantic coherence),绝不是词汇的随机集合。充分利用这些语义相谐的统计性,可以为粗线条的NLP任务分类或聚合,提供隐含的语义支持。如果把语言现象比作森林(文章或语料库)和树木(文句或帖子),可以说,关键词模型擅长从森林看趋势,而不擅长对每棵树条分缕析。 有了上述对一袋子词作用原理的理解,就为回答和理解下列问题做好了准备。什么是一袋子词手段的软肋,关键词模型何时失效?答案有两方面,这两点也是相互关联的。一是当处理单位很小的时候,譬如短消息或句子,袋子里没多少词,可数的几粒米做不成餐,巧妇难为无米之炊。二是当语言现象需要深入的语义分析的时候,所谓细线条的任务,譬如抽取舆情背后的理由,具体事件或关系等。因此我们说,短消息占压倒多数的社交媒体是关键词模型的命门。社交媒体本身尽管是大数据,但它是由一条条消息(posts)组成的,而在移动互联网时代,社交媒体的短消息趋向越来越明显,反映舆情和新闻事件最快最主要的短消息平台Twitter 和微博等应运而生。其中的每一条短消息都是相对独立的处理单位,表达的是网民的碎片化舆情或事件关系的报道。这些短消息平均十几个词长,除去停止词后,根本就没有具有统计意义的足够量的数据点,要做舆情分类或数据挖掘自然捉襟见肘,不足采信。结论就是机器学习面对社交媒体无所依托,难有作为。 最后需要为关键词模型及其倡导和实践者说句公道话。一袋子词里面没有句法结构,这是一个重大缺失,搞关键词模型的机器学习学者不是不清楚,也不是无作为。作为之一就是用所谓 ngram 来模拟句法,事实上 ngrams 分布被广泛应用于关键词模型。只有当 n=1 的时候,才能说该模型彻底放弃了句法,把语言现象完全看成是一袋子词的集合,这通常被认为是关键词模型的baseline,后备(backoff)或缺省(default)模型。很多模型是 bigram (n=2)和 trigram (n=3)的,不过 n3 的模型也极少见,因为 n 越大,数据就越稀疏,对于有限的训练集,已经没有统计意义了。ngram 到底是什么东西,为什么说它是对句法结构的逼近?(批评者可以说它是对句法的拙劣模拟,但无论如何总比完全不理句法好,ngram 至少承认了句法在语义求解中难以舍弃的功用。) ngam 中的“gram”指的就是词,这些词本来是完全打散装进袋子的,ngram (n1) 加入以后,训练集中的n词的序列也被作为复合单位加进了统计模型,因此袋子里面就不仅仅是一个个的词了,也包含了潜在的词组,而这些词组里面可能隐含的句法结构关系也就被隐性代入了模型。这就是为什么关键词模型在过去的30年间能够走得那么远的主要原因,因为语言的句法结构被间接地表达了。譬如在 bigram 模型里,短消息 I love iPhone 里面的两个 bigrams 序列片段 和 ,前者反映了主谓结构关系,后者反映了动宾结构关系。很显然,这种用相邻词的组合来近似表达可能的句法关系,有先天的严重局限,它无法反映嵌套结构(embedded structures),更无法捕捉长距离的句法关系(embedded or long-distance relationships)。因此,对于 NLP 中的细线条的任务,ngram 模型无法匹敌以 parsing 为支持的系统。 【相关博文】 一袋子词的主流方法面对社交媒体捉襟见肘,结构分析是必由之路 2015-11-24 一切声称用机器学习做社会媒体舆情挖掘的系统,都值得怀疑 2015-11-21 【立委科普:基于关键词的舆情分类系统面临挑战】 《泥沙龙笔记:再聊关键词和SVO》 泥沙龙小品:关键词必须革命,没商量的 《立委科普:关键词革新》 《立委科普:关键词外传》 《泥沙龙笔记:铿锵众人行,parsing 可以颠覆关键词吗?》 泥沙龙笔记: parsing vs. classification and IE 泥沙龙笔记:parsing 是引擎的核武器,再论NLP与搜索 没有语言学的 CL 走不远 Comparison of Pros and Cons of Two NLP Approaches 提上来:手工规则系统的软肋在文章分类 【科普笔记:没有语言结构可以解析语义么?(之二)】 【研发笔记:没有语言结构可以解析语义么?浅论 LSA】 【立委科普:语法结构树之美】 【置顶:立委科学网博客NLP博文一览(定期更新版)】
个人分类: 立委科普|7536 次阅读|0 个评论
泥沙龙笔记:在知识处理中,很多时候,人不如机
liwei999 2015-11-5 18:55
谢: 中文太有意思了: Chinese is so difficult to learn. Said the lao wai. 大不一样 一美女兴致勃勃地问医生:“我想丰胸,但是丰胸后会有什么效果?” 医生淡定地答道:丰胸后,一般会有四种结果: 1. 大不一样; 2. 不大一样; 3. 一样不大; 4. 不一样大! 世界上没有其它的文字能够有这样的功能,中文万岁! 中文字的奥妙 外国人学中文,确实不容易。中文字的奥妙,常常让学中文的老外晕倒,分享几个段子: 一、方便 一位刚学过一点中文的美国人来到中国,中国朋友请他吃饭。 到了饭店落座,中国朋友说:“对不起,我去方便一下。” 那老外没明白,“方便”是哪里? 见老外疑惑,中国朋友告诉他说“方便”,口语里是“上厕所”的意思。 哦,老外意会了。 席间,中国朋友对老外说:“我下次到美国,希望你能帮忙提供些方便。” 老外纳闷了:他去美国,让我提供些厕所干嘛? 道别时,另一位在座的中国朋友热情地对老外说:“我想在你方便的时候请你吃饭。” 见老外吃惊发愣,中国朋友接着说:“如果你最近不方便的话,咱们改日……” 老外无语。 “咱找个你我都方便的时候一起吃饭吧。” 老外随即晕倒。 二、乳 一位老师向老外学生解释“乳” 字的含意:乳即是小的意思,比如乳鸽、乳猪等。 讲解完,老师要求老外学生用“乳”字造句。 老外学生造句说:“现在房价太高了,所以我家只能买得起20平方米的乳房。” 老师听了,冒着冷汗说:“再造一个!” 老外学生:“我年纪太小,连一米宽的乳沟都跳不过去。” 老师冷汗如雨下,说:“再造一个!” 老外学生说:“老师我真的想不出来了,我的乳头都快想破了!” 三、意思 某老外苦学汉语10年,到中国参加汉语考试。 试题之一: 请解释下文中每个“意思”的意思: 阿呆给领导送红包时,两个人的对话颇有意思。 领导:“你这是什么意思?” 阿呆:“没什么意思,意思意思而已。” 领导:“你这就不够意思了。” 阿呆:“小意思,小意思。” 领导:“你这人真有意思。” 阿呆:“其实也没有别的意思。” 领导:“那我就不好意思了。” 阿呆:“是我不好意思。” 这老外晕了,一头雾水。 中文的“意思”太深奥了,于是他交白卷回国。 我: 那些让老外糊涂的说法 交给电脑大多容易。 比 一词多义的双关语 简单 因为本来的“词”或说法就是不同的ngram形式。 可见,人的大脑真地不咋样,几个 ngrams 就给绕糊涂了,或者是联想过度的毛病。 譬如。关于“意思”的ngrams,只要当做不同的词条,绑架不同的词义,就搞定了,哪里来的那么多糊涂呢? 1 什么意思:想干什么 2 没什么意思:别多想 3 意思意思:略表心意 4 不够意思:不够朋友 5 小意思:不足挂齿 6 真有意思:真有趣 7 没有别的意思:真地没啥 8. 不好意思:不好意思 哪里有深奥,不就是记住 8 个 ngrams 么。 记住了,爱怎么解释怎么解释,即便一个 ngram 有歧义,也不过就是绑架多个意思而已。 关于“方便”的ngrams也是如此。 这也说明了外语教学存在很大问题,该死记的,老师没让学生去死记,而是任凭学生秀才识字认半边,瞎联想,过度思维,不懂语言学里的词典强盗逻辑,不了解词义的黑箱绑定原理,也不懂词典就是一个垃圾箱,词条可以是任意的ngrams,包括各种习惯用法,成语、俗语、熟语、俚语和黑话等。 谢:  对于机器来说,不管场景多少,这种确定性的意义对于机器是容易的;但对于人,反而因为联想而歧义,因歧义而模糊,但翻过来也成就了人的想象力和创造力。 【相关】 贴身小蜜的面纱和人工智能的奥秘 2015-11-04 《立委科普:机器可以揭开双关语神秘的面纱》 2015-11-03 泥沙龙笔记:在知识处理中,很多时候,人不如机 2015-11-05 NLP 围脖:成语从来不是问题 NLP 历史上最大的媒体误导:成语难倒了电脑 【置顶:立委科学网博客NLP博文一览(定期更新版)】
个人分类: 立委科普|3804 次阅读|0 个评论
泥沙龙笔记: parsing vs. classification and IE
liwei999 2015-7-7 02:28
雷: @wei 下一步要说明的是deep parsing的结果比传统的IE(information extraction)的好在哪里,要有一个solid的证明。 wei: 这个问题以前已经答过了,可能没特别阐明。我在博文中说,简单的factoid问题,那些可以用 entity 来回答的问题,when where who 之类,deep parsing 就可以支持很好的问答系统了。 而复杂的问题(譬如,how 和 why)或者专门领域的问题,还是先做 IE 把可能的答案存在库里,然后支持问答系统为好。 从原理上看, parsing 的结果是独立于领域的句法树,好处是可不变应万变, 坏处是不容易整合。 IE 不同,IE 是预先定义的语用层面的template(实质就是语用树), 它比句法树要深入。 在句法树到语用树的mapping过程中,已经创造了更好的针对语用的整合条件。 一般而言,两者应该是互补的,IE 支持问答或搜索是最精准的,但不能应对事先没有抽取的信息; deep parsing 是无需事先预定的,可以作为 IE 的backoff 说到底就是从句法树到语用树,是 offline indexing 时候做, 还是 on the fly retrieval 时候做。 前者就是借力 IE, 后者就是直接依仗 SVO。 做前者需要语言学家和领域数据专家, 他们可以预见同一个抽取目标的各种表达形式。 做后者是直接面对(power)users 无需专家。 换一个角度就是,如果一类问题的表达形式很多,而且冗余度不够, 那么须上 IE 才好。 如果冗余度大,基本表达形式(SVO等, 譬如问产品发布的信息,从关键动词 release 和 launch 驱动一个 SVO:Company “launch/release” Product)很容易就搞定, 那么 deep parsing 就足足有余了。 IR 角度可以这样看 backoff model: Input:query(or question) Output: 1. if IE store has answer, then return answer with confidence 2. else if SVO can be matched (by power user) to retrieva answers, then return answer with confidence 3. else provide keyword search results 雷: @wei 是。这个是factbase的东西。比如,在做文章分类方面,比传统的方法要高明多少? 传统的文章分类是取实词,做一个巨大的矩阵,余弦处理 Wei:雷,你说的那是分类, 不是 parsing, 分类是粗线条的活计,应用很广,但回答不了啥问题。 parsing 是条分缕析,能精准回答问题。 雷: @wei 是的。我想说怎么利用parsing的结果做分类。 第一,是不是可以把分类做的更好; 第二,怎么做会更好更有用 wei: 分类还是关键词ngram最robust, 这一点无疑问, 尤其是分类对象是文章或段落的话。但对于twitter或微博的短消息,关键词分类基本失效(见: 【立委科普:基于关键词的舆情分类系统面临挑战】 ),需要 parsing。 雷: 比如,通过parsing,是不是可以获得主要的实词(文章主要的一些词)? wei: parsing 做文章分类,一方面有点牛刀宰鸡,另一方面最后还是需要借力统计 (见: 手工规则系统的软肋在文章分类 ),因为 parsing 的结果是树,不是林。如果要看到整个林子,起码要对树木做一个统计,最简单的统计是 majority vote。 雷: 如果parsing文章后(深度的那种),获取主要的实词,其他的词就可以抛弃了。 那样的话,分类的可以更加精准,而且还可以做分类的分类,多级的分类 wei: 单是为了获取实词,不必做 parsing,stop words 过滤掉就大体齐了。parsing 的好处是出了句法关系,但在文章分类中把句法关系使用得法并不容易。文章分类的本性是ngram密度(density)问题。 ngram 这名字谁起的?里面不就有 gram 嘛。 当年没起名叫 nword, ntoken or nterm, 而是 ngram,可以认为是 因为当n个词(一般也就两三个词,n=2 or n=3,再多就是 sparse data 了,没啥统计价值)成为一个有次序的串, 而不是一个bag(set), 就意味着把语法中最重要的一个因素 词序 隐含地带入了,实际是对文法的粗线条模拟。 ngram 是直接从语料来的,这就保证了它包含了一些 open-eneded strings, 而不是仅仅局限于词典。 这样看来 ngram 实际上是语法的碎片化、 最小化, 然后加上条件概率,再把碎片化的ngrams重新串起来。 先打碎,再整合,来模拟parsing的效果。 统计NLP的几乎所有的成果都是基于这个模拟文法的原理。 雷: 传统的分类中,bag of words还是主流吧 wei: bag of words 中的 words 不仅仅是词, 而是包含了 ngram 自由组合, 因此也还是模型了parsing 白: IE和deep parsing其实是有联系的。利用统计上显著的几跳, 就可以把parse tree 拼接成IE tree。只要允许ngram隔空打炮,可以间接模拟parsing。按成份的“能量”,决定它能打进多远的滑动窗口里。 雷: parsing的power应该是读出了文章的主要概念和这些概 念之间的关系。在好像是提交文章时要提交一些关键词。但是作者提交的关键词有限。 wei: 说清了 ngram 的原理, 回头再看 deep parsing 对于分类的功用。 deep parsing 不借助统计, 实际上是不适合做文章分类的。 因为 parsing 是见木不见林, 而分类要求的是林的视点。 然而,可以想见,deep parsing 以后,利用其结果再做统计,理论上可以做到更好的分类。 譬如, SVO解析以后,至少可以把他看成是一个更高级的 ngram, SV 是 bigram, VO 是 bigram, SVO 是trigram. 雷: @wei 是的。在做好deep parsing后,统计其实词和关系, 那种统计就是纯粹的描述统计了. 统计时,比如,有多少S是相同的,多少O是相同的,还有这些S和O在概念上的发布的计算. 这些都是假设“deep parsing”有了好的解析结果后。抓住主要的东西,割舍次要的,会有更好的分类? wei: 但这个 ngram 已经不是简单序列的基础上, 而是可以涵盖long distance了, 因此理论上应该更反映文章的语义类别, 利用这样的ngram,然后再用统计的方法, 理论上可以做更好的分类。 但是实际上,也有弄巧成拙的时候。 因为,parsing 总是没有 keywords 鲁棒,如果也同时用keywords垫底,系统增加了复杂度,怎样做smoothing才好,并不是一件容易的事儿。 白: 如果反过来,deep parsing还指望知识层面消歧,那就“活锁”了。如何不陷入livelock,考验智慧。 wei: 白老师,deep parsing还指望知识层面消歧 是天经地义的。 天经地义是因为句法不能预测 千变万化的语用场景。 句法如果能预测语用,那就失去了 generalization 的一面了,反而不妙。 语言学之所以有威力, 正是基于句法结构(句型) 是有限的, 而且很大程度上是 universal 的, 对各个语言都通用。 全世界语言的 argument structure, 都是 SVOC (主谓宾补) 及其变体。 而语用的树是因领域、 因产品、 甚至因用户 而有所不同的, 根本不能归一。 语言的归语言, 语用的归语用。 这种分工才最经济科学. 总结一下:deep parsing 最擅长支持信息抽取,因为抽取要求看清每一颗树。但parsing做分类就很 tricky,因为分类要求的是看林子。看林子还是统计拿手,ngram/keywords 常常就搞定,而且 robust。当然,理论上 parsing 可以使得分类更上一个台阶,实际上很难说,仍然是一个研究性课题,而不是成熟实用的技术。 【相关博文】 手工规则系统的软肋在文章分类 【立委科普:基于关键词的舆情分类系统面临挑战】 【置顶:立委科学网博客NLP博文一览(定期更新版)】
个人分类: 立委科普|5100 次阅读|0 个评论

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-6-15 04:58

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部