科学网

 找回密码
  注册

tag 标签: 切词

相关帖子

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

没有相关内容

相关日志

【李白71:“上交所有不义之财!“】
liwei999 2017-9-28 02:56
聊一聊中文切词的 heuristics 李: NLP 论文中常出现的一个术语 heuristics 怎么翻译好呢?想了 30 年了,用到的时候还是夹杂这个英文词,因为想不到一个合适的译法。最近想,大概是翻译成 “倾向性” 比较好。说的是某种统计上的趋向,而不是规律。 白: 启发式 李: 30年前,我有个同门学长乔毅常常鼓捣一些专业翻译,有一天他来跟我商量,问:“这篇说的是 heuristic 方法的 NLP,查了一下词典,是启发式,可这启发式翻译出来,等于没翻译,没人懂怎么启发的。到底 heuristics 是个什么方法?” 魯: 有些时候是ad hoc的意思 白: 翻俗了就是“偏方”。有例外的标配。 李: 当时我们琢磨半天,觉得所谓启发式,就是某种条件,有时候甚至叫原则(note:原则都是有例外的),不是通常的 rule,因为 rule 隐含的意思是铁律,而这个“启发式”说的就是一种有漏洞的条件,经验总结出来的某个东西,模模糊糊是有统计支持的。明知有漏洞,但还挺实用。就这么个东西,困扰了我机器翻译专家30年。 以上算是开场白。今天就来说说切词中总结出来的一些 heuristics。咱们倒过来说这事儿。把 input 想象成一个 ngram。首先说一条总的:切词中最大的 heuristic 就是这个最大匹配原则,是天则。 咱们来具体看看 ngram 的情形: 1. 如果 input 是一个汉字 (unigram),当然就是一个词:因为无词可切。这是废话,但也不失为一个 heuristic,因为切词算法的最后一招就是 把字(语言学上术语是“词素”)当成词,可以保障100%召回率(recall)。因为汉字是非常有限的集合(【康熙字典】多少字来着?),可以枚举。所以废话(或常识)背后也有深刻的道理的。 显然这个 heuristic 是有漏洞的,但是我们总可以用它来兜底。漏洞譬如那些所谓 bound morphemes:蝴,尴,它们理论上是不能成词的,如果万一被切词程序输出为词了,很可能是一个 bug(譬如原文在 “尴尬” 之间夹杂了空格或其他符号造成这种结果,或者原文说的就是这个汉字,不是指这个概念词素,那算是 legit 的 meta-word)。无论如何,切词模块在工程上和算法上几乎没有人不用这个 heuristic。 2. 如果 input 是两个字(bigram) AB,而 AB 在词典里面,heuristic 告诉我们 AB 就是应该切出来的词。这个heuristic 是直接从最大匹配原则来的,几乎每个系统都这么办,尽管它当然有漏洞。漏洞就是所谓 hidden ambiguity, 理论上的 exhaustive tokenizations 中不能排除的 A/B 这种切词法。以前我们举过关于 hidden ambiguity “难过” 的 minimmal pair 的例子(见 【立委科普:歧义parsing的休眠唤醒机制再探】 ): 这/个/孩子/很/难过 这/条/河/很/难/过。 其实利用 汉字作为 meta-wrods 的语用情形,一切的 ngram 都有一个违反最大匹配原则揭示 hidden ambiguity 的通例,模式是: 【ngram 】是n个汉字。 尴/是/一/个/汉字/。 尴/尬/是/两/个/汉字/。(尴/是/其一/,/尬/是/其二/。) 不/尴/尬/是/三/个/汉字/。 尴/不/尴/尬/是/四/个/汉字/。 尴/尬/不/尴/尬/是/五/个/汉字/。 ......... 虽然 100 个系统有 99 个半都明知这个 heuristic 有理论上的漏洞,而且也有实践中的反例,但是大家都心知肚明地 follow 这个最大趋势。因为好汉不吃眼前亏啊。在切词这种早期阶段,不 follow 这条带来的麻烦太大。识时务者为俊杰,英雄狗熊在这一点其实所见皆同,说明世界上傻子并没有那么多,除了“傻得像博士”。譬如我博士论文中就倡导过用 exhaustive tokenizations 的结果来 feed a Chinese HPSG chart parser, 有意违反这一原则,把 hidden ambiguity 从一开始就暴露出来,来证明句法或更大的 上下文 对于完美切词的重要作用。理论上没有问题,实践中也弄出了个可以应付博士学位的玩具系统(【 钩沉:博士阶段的汉语HPSG研究 】),但到了工业应用,立马就精明起来,随大流,从了 最大匹配的 heuristic。 白: “马可波罗的海外奇遇” 李: 哈, “波罗的海”,4-grams 哎,居然没能胜出,也是奇例了 。 回头说 hidden ambiguity,N多年后,我们还是高明了一些,退了一步,说,好好好,好汉不吃眼前亏,咱们还是 follow 这个最大匹配原则,但可以留个后门啊。后门就取名为休眠唤醒,《李白对话录》中多篇有论,有方法,有例示( 【结构歧义的休眠唤醒演义】 )。这算是在理论和实践中找到了一个比较合适的折中,不至于面对 hidden ambiguity 的命门完全不作为。 白: 谁说切词的结果一定是流,不能是图?谁说即便是流,切的时候啥样,用的时候也必须啥样?谁说即便是流、即便用的时候跟切的时候也一样,但在更大上下文范围内发现用错了的时候必须不能反悔? 李: 白老师说的几点都对。但很长时间很多人并没有认识这么清。 接着练,3. 如果input是三个字(trigram) ABC,heuristic 是怎么体现的呢?首先根据最大匹配heuristic,排除了 A/B/C,先踢出局。剩下有 AB 与 BC 的较量,如果二者都在词典的话。这时候,heuristic 说,汉语的二字词并不是都有相同的紧密度,即便用最粗线条的二分法,也可以给一些二字词比其他二字词更大的权重来解决这场三角关系(triangle)的危机。忘了说了,如果 ABC 在词典的话,AB 和 BC 都出局了,毫无疑问,因为最大匹配永远是切词阶段最大的原则。例外怎么办?后期休眠唤醒。 4. 如果是四个字的 input(4-gram)ABCD,hueristic 又是怎样实施的呢?(别急,这么论事貌似进入了死循环,但其实胜利曙光已经在望,bear with me a bit)。根据最大匹配这个最高原则,ABCD 如果在词典(譬如成语),句号。ABCD 中任何一个连续的 bigram 如果在词典成词的话,A/B/C/D 也出局了,根据的还是最大匹配的 heuristic(或其变种,最少词数原则)。那么还剩下什么?如果是 ABC 和 CD 在词典,两家打架, heuristic 说,两家人家打架,人多者胜, ABC 胜过 CD(就是说,可以假定权重 heuristic 让位给词长 heuristic)。同理, AB 败于 BCD,其他的情形都是显而易见的,AB/CD instead of A/B/CD, AB/C/D and A/B/C/D,不赘述。 白: 如果ML,满大街都是heuristic。 李: 所以说应该翻译为 (有统计基础的)趋向性。学习也好,根据 heuristics 硬编码实现也好,总之是要 follow,除了傻博士。 5. 如果 input 是 5个字(5-gram)ABCDE,ABC and CDE can fight: if ABC is considered to carry more weight, then ABC wins. 后面的话不用说了。到了 5-gram,可以收网了。 其实迄今绝大多数切词算法,大多依据的是 local evidence,5-gram 几乎是 local 的最大跨度了。因此搞定了 5-gram 以内的 heuristics 的相互作用的原理,也就搞定了切词,虽然理论上所有的 heuristics 都是筛子一样,漏洞百出。这一点儿不影响我们前行和做 real life 系统。 金: @wei 老师,想请教一下您对于深度学习做分词的观点:训练语料为手工分词文本,将文字按单字逐个输入,输出是结合输入语境对文字进行分词的结果。 李: 据说深度学习分词,精准度有突破。有突破我也不会用。除非有谁教会我如何简单地 debug,如何快速领域化。何况早就过了这一村了,工具架构算法齐全,不再需要与它纠缠了。 金: 如何领域化?在特定领域操作? 白: 让领域的人再标注领域的文本,不就领域化了 李: 不愿标注呢?或 cannot afford 标注呢?错了怎么 debug?再加大标注量,重新来过?重新训练可以保证对症下药解决我面对的 bug reports 吗? 金: 嗯,看过之前您的文章,关于统计和规则之间的渊源。如果就用深度学习一个模型,是这样。最大匹配的话,错误如何修正呢? 白: 都已经是锦上添花了,再错能错哪儿去 李: 明明就是个词典打架的事儿,非要标注文本。词典是有限的,文本是无限的。 白: 领域会突破词典。 李: 那是领域词典的习得问题(lexicon/term acuqisition)。是个更实在的活计。相比之下,领域标注分词不是个划算的事儿。 白: 未登录词也得分。领域会引进新的heuristic,使得通用成问题的地方不是问题。做减法。 李: 手工标注海量数据是一种不讲效率的办法,人类举一反三,标注反着来,是举三返一,不对,其实是举30也很难返一,隔靴搔痒。幸亏它有几个优点。一个是提高就业率,简单劳动,而且白领,有利于维稳和安定团结。另一个是为不愿意进入领域的人做自封的领域专家铺路。管它什么领域,管它什么任务,只要你给我标注,我就用三板斧进入领域。 白: 不利于语言学家的就业率,也是罪过 金: 二位老师的观点有深度, 李: 不仅是语言、语言学和语言学家,所有领域专家都有遭遇。不求甚解于是风行。天上掉下一块鸟屎,都会砸到一个速成的领域专家头上,不懂语言学的计算语言学专家,如过江之鲫。 白: 背后的逻辑是不与虎谋皮。没那么简单这事儿。 金: 数据标注得有领域专家来做标准呢。 李: 要是可以选择的话,不自由毋宁死。可惜领域专家没有这个气节。乐不颠颠地为精算师去制定标准,然后让他们成为高高在上的超领域专家。 白: “孙国峰硕士毕业于著名的清华五道口,后师从社科院金融研究所李扬成为金融学博士。他硕士毕业后便参与了中国外汇交易中心及公开市场的建设,并从此肩负起货币政策的实施、制定、监管之责,与中国金融市场及市场中的一代一代的交易们一起成长。” 看看这段话,“硕士”极容易被当成“孙国峰”的称呼性同位语。 金: 这个就是环境的作用了,不是我们能左右的。 吕: 孙国峰,硕士毕业于著名的清华五道口 .... 金: 我想到一个和目前情况类似的人,最早著书的人,是不是大部分是领域专家,因为国家,因为文化,因为其他原因投身著书行业,把知识标准化,流传下去? 白: @金 这样的是例外吧。 金: 我只是想到这个情况,而且更极端的是这群人因为生存因素,去著书,还有可能从谷底爬上巅峰(可能故事听多了) 白: @金 楼歪了,言归正传吧 所有的交叉歧义、组合歧义,其实在词典定好以后就是铁案了,一定能仅从词典就机械地自动遍历枚举所有情况,这是学术界早有的定论。 问题之一在概率分布。领域无关相当于先验分布,领域相关相当于后验分布。后验分布如果明显不同于先验分布,领域知识就有优势,否则就没优势。 阮: 比如说医疗领域,会有一些特殊的词,也会有特殊实体,句法的话,应该也是符合自然语言句法的,但分布应该不太一样。 我需要重新完全标注语料呢,还是标注一部分?标数据这事,谁来做,也确实很头疼。语言学家觉得和他们没关系,也看不太懂。而医学更加不知道标语料为何物。 白: 问题之二在未登录词。你说再多词典没定义都是扯,只要影响应用,没人会听你的。所以做好构词法,应付未登录词是刚需。神经是不分登录词未登录词的,就是说如果ABC、ABD都没见过,语料里标注了ABC,神经是有可能学会ABD的。并不是说要分词只有词典化一条路。而构词法是里,分词是表。学会构词法可能首先是通过分词体现出来的。神经不是“仅”学分词,而是“同时”在学构词法。比如“中证协”标注了,“中保协”没标注。神经可以学会“中保协”正确分词,但并不说明“中保协”一定在词典里。 李: 学会构词法有个悖论。学会不在词典的词可能对于粗线条的任务有好处,但对于分析和理解自然语言没有什么好处,你必须同时学会这些不在词典的词的可计算的信息部件才算数,譬如句法 features,概念语义及其在本体链条上的位置,等。对于自然语言 parsing 和 understanding,切词的目的就是要获取关于该词的词典信息,作为进一步分析的基础。现在分了词了,却没有对应的词典词条,那不是白分?这就是我说的悖论。 今天遇到一个好玩的:上交所有 ...,分词为 上交所/有。 白: 交叉歧义。长词优先。 李: 我实习生说 错了,她坚持改过来:上交/所有 原来她心里想的是:上交 所有 不义之财。我说难道你不知道,上交所 有 个 大名鼎鼎 的 白老师? 白: 严正声明:上交所没有不义之财。 李: 此地无银啊?明儿让她进来给白老师赔罪。上交所 在90后的头脑里是个未登录词,未登录的或可免责。如一不留神道破天机,纯属意外。 吕: 哈哈哈 金: 有趣 巴: 学生菜鸟一枚,特来给白老师赔罪。 请各位老师多多指教啦~ 白: @巴拉巴拉 应该找上交所的CFO,我前CTO不管这段。 巴: 哈哈哈哈,总之是妄言了,先赔罪总是对的。 白: @巴拉巴拉 这群有意思,可以偷到很多艺 【相关】 【立委科普:歧义parsing的休眠唤醒机制再探】 【语义计算:李白对话录系列】 【置顶:立委NLP博文一览】 《朝华午拾》总目录
个人分类: 立委科普|4041 次阅读|0 个评论
【语义计算沙龙:从“十年中学文化课”切词谈系统设计 】
liwei999 2016-8-22 12:52
我: 毛老啊,1966-1976 10年文革,是我十年的中小学,我容易吗?10年中学文化课的时间不到一半,其余是学工学农学军。学赤脚医生 学开手扶拖拉机。 为什么是 【十年中】【学文化课】不是 【十年中学】【文化课】? Guo: @wei 单就这句,确实两可。但你后面有这么多的学…… 至少对这个例子,统计,深度神经RNN之类还是有merit的。当然,这两种解析其实也没本质的区别。不必多费心思。 我: 怎讲?因为“学”频率高 所以“中学”成词就不便?统计模型在这个case怎么工作显示merit呢?愿闻其详。 大数据说 有五年中学 有六年中学,极少见十年中学,反映的是中学学制的常识。但是这个知识不是很强大,很难作数,因为这不是 positive evidence。如果句子在 “六年中学” 发生边界纠纷的时候 得到来自大数据的直接支持,那是正面的 evidence,力量就很强。负面证据不顶事儿,因为它面对的是 【非六】(或【非五】)的大海,理论上无边无沿,那点儿证据早被淹没了。 Guo: 统计分long term / global vs short term / local. 你讲的大数据,其实是在讲前者。 现在热的深度神经,有些是有意无意地多考虑些后者。例如,深度神经皇冠上的明珠LSTM即是Long Short Term Memory。虽非显式地求取利用即时统计,那层意思还是感觉的到的。 我: @Guo 恩。这个 local 和 global 之间的关系很tricky 这个貌似歪打正着的parse应该纯粹是狗屎运,不理论。 白: N+N的得分本来就低 有状语有动词的更加“典型” N+N是实在没招了只能借助构词法解决零碎的产物 有状语有动词时谁还理N+N。不管几年中学,也抗衡不了这个结构要素。就是说,同样是使用规则,有些规则上得厅堂,有些规则只能下得厨房。如果没有上得厅堂的规则可用,随你下厨房怎么折腾。但是如果有上得厅堂的规则可用,谁也不去下厨房。 我: 这里不仅仅是 N+N 的问题,在绝大多数切词模块中,还没走到N+N这一步,因此这个问题实际上可能挑战不少现存的切词程序:十年/中学/文化课 or 十年中/学/文化课 ? 有一个常用的切词 heuristic 要求偏向于音节数均匀的路径 显然前者比后者均匀多了。 白: 句法上谈多层,也是“狗/咬吕洞宾”, 不是“狗咬/吕洞宾” 我: 真正的反例是交叉型的。 句法怎么谈层次 其实无关 因为多层的切词不过是一个技术策略,(通常)本身并不参与 parsing,最终的结果是 狗/咬/吕洞宾 就行了。其实 即便论句法 SVO 层次 在汉语中还是颇有争论的 不像西方语言里面 V+NP 的证据那么充分。 白: 这有点循环论证了 我: 目前的接口是这样的 多数系统的接口是。切词的结果并不存在层次,虽然切词内部可以也应该使用层次。肯定有研究型系统不采用这样的接口,但实用系统中的多数似乎就是这样简单。 白: 都保留也没啥,交给句法处理好了,谁说一定要分出个唯一结果再交上去,很多系统接受词图而不是词流了。对于神经网络这种天然接受不确定性的formalism而言,接受词图并不比接受词流多什么负担。 我: 数据结构多了维度,对于传统系统,涉及面蛮大的。词不仅仅是词,词本身不是一个简单的 object。以前的系统词流就是string 或最多是 token+POS list 对那样简单的结构增加维度还好。 白: 词和短语一样可以给位置加锁解锁 竞争位置的锁 我: 不错,词是一切潜在结构的发源地,蕴藏了很大潜能,甚至在设计中,应该让词典可以内建结构,与parsing机制一体化。这种设计思想下的词 增加维度 就是带着镣铐跳舞 不是容易处置好的。nondeterministic 是一个动听但不太好使的策略。否则理论上无需任何休眠与唤醒。 白: 可以参数化,连续过渡。处理得好,管子就粗些。处理不好,管子就细些。极端就回到一条线。一个位置允许几个词竞争锁,可以参数化。超出管子容量的,再做休眠唤醒。 我: 多层系统下的 nondeterministic 结构,就好比潘多拉的盒子。放鬼容易降鬼难,层次越多越是这样。也许机器学习那边不怕,反正不是人在降服鬼。 白: 其实一个词多个POS,或者多个subcat,机制是一样的。不仅有组合增加的一面,也有限制增加的一面。不用人降服鬼,鬼自己就打起来,打不赢没脸见人。只要制定好“见人”的标准,其他就交给鬼。 我: 这就是毛主席的路线 叫天下大乱达到天下大治。文革大乱10年国民经济临近崩溃的边缘,但没有像60年那样彻底崩盘,除了狗屎运,还因为有一个绝对权威在。这个权威冷酷无情 翻脸不认人。今天红上了天的红卫兵造反派 明天就下牢狱。 白: 鬼打架也是有秩序的,不是大乱,是分布式表示。 我: 这样的系统大多难以调试 等到见人了 结果已定局 好坏都是它了 斯大林说 胜利者是不受指责的。 白: 局部作用,高度自治 我: 鬼虽然是按照人制定的规则打架。具体细节却难以追踪 因此也难以改正。当然 这个毛病也不是现在才有的 是一切黑箱子策略的通病。 白: 不是黑箱子,是基于规则、分布式表示、局部自治。打架的任何细节语言学上都可解释。理论上,如果词典确定,所有交集型分词歧义就已经确定,是词流还是词图,只是一个编码问题。如果再加上管子粗细的限制,编码也是高度可控的。 我: 刁德一说 这茶喝到这儿才有了滋味。看好白老师及其design 白: “10年”说的究竟是时长(duration)为10年的时间段,还是2010年这一年的简称,也是需要甄别的。 【相关】 【置顶:立委NLP博文一览】 《朝华午拾》总目录
个人分类: 立委科普|2852 次阅读|0 个评论
【一日一parsing:休眠唤醒的好例子 “电视新看法”】
liwei999 2016-7-7 21:58
白: IPTV首页广告语“IPTV,电视新看法”。 需要休眠唤醒的好例子。 我: 对,这个 hidden ambiguity 与 “难过”、“好过”一样,可以也应该休眠唤醒。如果真想做的话,就在“看法”的词条下,在句法后做一个词例化规则: 查一下“看法”(默认词义:viewpoint,有个 human 的坑)的 Mod 来唤醒第二条路径(词义)。 查 Mod 的条件有宽松两个选择,可以根据大数据测试的质量来权衡定夺: (1)宽的话,如果 Mod 不是 Human,那就唤醒 (2) 窄的话,如果 Mod 是“看”的搭配词(看电影、看电视、看戏、看热闹、看耍猴 etc),那就唤醒 白: 作为一个词的“看法”有两个坑,“谁”对“什么”的看法。“谁”即使锁定到human和“电视”不搭调了,还有“什么”可供填充。所以,单纯从一个坑的不匹配,还不足以翻盘。需要“看-电视”这样的强搭配来推波助澜里应外合。 我: 好! 唤醒的是句法层面的定中关系(默认的是词典的合成词,可以看成词的黑箱子,也可以看成是词法内部的定中关系):“看-法”(而不是“看法”),语义落地在 MT 上的表现就是选择第二个译法:way of 看。因为搭配找着了,MT 也就可以把“看”的翻译从默认的“see”改成搭配的“watch”: IPTV,电视新看法 ==》 IPTV, a new way of watching TV (而不是 TV’s new viewpoint) 这个思路是没有问题的 虽然需要花点儿力气。至于选择做还是不做 那是另一个问题。 在“难过” vs “难-过” 这样的case上,我们做 sentiment,是选择了去做,用到上述休眠唤醒的招术,把表达主观负面情绪的默认的“难过”解读,语义落地为表达客观负面情形的“难-过”。见 【 立委科普:歧义parsing的休眠唤醒机制再探 】 。 梁: “IPTV,电视新看法” 这句话,连我都休眠了好一阵,刚刚被唤醒。 语义落地到 MT, 是 “ IPTV, a new way to watch TV” ? so it is either, 一种看电视到新方法, or 一种对电视的新的看法? ”看法“ could be “opinion”? 我: 广告跟段子一样,故意弄这些,为了俏皮,加深印象。 可喜的是,至少我们寻到了解决这类段子似的俏皮话的计算机实现的路径。 休眠唤醒的事儿,以前在语义落地的时候“自发地”做过,但从来没有总结到现在的高度,可以有意识地推广运用。这是在本群与白老师等探讨的收获。 hidden ambiguity 和段子这类的parsing,以前一般都认为是难以企及的语言难题。至少现在不是那么遥不可及了。 梁: 想想这事是挺有趣。“看法”,本来挺强劲的结合,硬是给左边的“电视”拆开了。这类暗中较劲,猜想、比较、争吵,分裂,结合,settle 的过程,人的大脑 parsing 的时候,可能也有这样的过程。据说人思考时经历一种微型达尔文过程。 白: 【转神段子】航拍记录显示,湖北已经基本都是湖,找不着北了。 看看如何休眠唤醒。 K: 他伸出双手,要露上两手。 我: 唤醒啥? “找不着北” 是成语 白: 湖北两个字,只剩一个字了 另一个字找不着了 元层次和对象层次的纠缠 我: 并不影响语义理解 白: 影响段子理解 我: 俏皮的定性 如果也是语义的一部分 可以利用机械扫描匹配 来发掘 无需与句法层发生纠缠 白: 总之是要吃回头草 我: 不属于核心语义。核心语义是 湖北这个地儿现如今到处是水 方向辨别不清了 白: 核心语义没发生颠覆或荒诞化 只是附加了一层元层次上的俏皮。段子理解,有颠覆型的也有附加型的。 我: “伸出双手 露上两手” 同理 同机制 也可以扫描匹配发掘 后半部也是成语 唤醒的是成语的非成语解读。这与切词中的 hidden ambiguity 同理。 白: 俏皮也是附加。还有我之前举的例子,“贾宝玉托举林黛玉,纯粹是多此一举”。先导词语素的重叠使用。 K: 电视的新看法 看法有了非成语语义属于唤醒 我: Longest principle 默认一个多语素词的黑箱子性质,但在特定的上下文中 可以唤醒句法透明的解读。 K: 露上两手 多此一举 是否与之类似呢?唤醒了手与举的非成语语义? 白: 是 我: 就是。词法的内部关系 唤醒为句法的外部关系。哪怕词法句法是一脉相承 平行的,句法解读与词法解读 在语义和概念层面是很不同的。英语类似的 hidden ambiguity 有blackboard 解读为black board K: 感谢二位老师 我理解 成语语义的整体性与成语内部结构的潜在可分解性会影响休眠唤醒 比如 新看法 作为成语有其常用语义,但其内在结构可分解,(新(看(法))),这种结构分解为 看法 增添了新的语义。这与分词中的组合型歧义有关联。何时分,何时合,可能单在分词层面难以完成,有什么好的解决办法吗? 白: 先说没有外部刺激是不该拆开来的 然后再说外部刺激可能有哪些特征 比如,重复。 【相关】 【 立委科普:歧义parsing的休眠唤醒机制再探 】 【 泥沙龙笔记:NLP hard 的歧义突破 】 【新智元:parsing 在希望的田野上】 【置顶:立委NLP博文一览】 《朝华午拾》总目录 立委NLP频道
个人分类: 立委科普|3932 次阅读|0 个评论
再谈应该立法禁止切词研究
热度 5 liwei999 2015-6-30 07:27
毛: @wei 有没有现成的中文 NLP 开源软件项目? 毛老那么有闲啊,不打算写书了?蹚中文这浑水。历史的经验,淹死的多,stuck 的更多。一般都是 stuck 在切词或短语之中,离 deep parsing 还八丈远呢。 所谓中文信息处理,三四十年来,一多半的resources投入了所谓切词研究。所以,我写过 博文,呼吁立法禁止切词研究 。 雷: 呵呵,功夫不够,方向也有问题 一个子领域吞噬过多的资源,似乎还是个无底洞的话,不是领域的错,是人的错。 毛: @wei 没有,我没有这个时间精力,退休后想看的东西也已太多。我只是听你们这么讲就想作为“天下大势”知道一下。 里面的原因之一是,切词后面的步子怎么走,心里没底,也看不到全景。那么,没完没了地折腾切词,正好给自己一个不思进取的理由。 雷: 是统计的错, 或过分追求数学模型 切词与POS类似,做到一定程度,没有再做下去的价值。你做个98%,我做个98.5%,so what? 在实际现场,一个模块的适应能力,开放性,协调性,比那些个数字 benchmark,不知道要重要多少。 POS for POS sake,tokenization(segmentation)for tokenization's sake,不知道误导了多少年轻人。 雷: @wei 完全同意。全体的事,不是局部用力 切词基本沦落为游戏了。研究到今天,它既不能真正推进科学,也没有啥用处。 早在 n 年前,就有这方面的集大成者,从理论到实践,都讲透了。此后的切词基本就是消耗能量,混一些发表。所以说,应该立法禁止。 雷: @wei 哈哈,立委立法 我是认真的。 我做中文系统的时候,抛弃了 Basis 切词以后,很快就跨过了切词,根本没觉得切词是瓶颈。 当然,你在任一特定时刻拿放大镜看我的结果,一定会发现偶然会有所谓 “切词错误”。微观上,这个现象还有,但宏观上,这个不是问题。因为除了上帝,没有一个 (NLP)系统是完美的。也就没有必要要求每一个模块的完美性。 关键的关键是:(1)这个错误多大程度上影响了系统的目标;(2)有什么补救或快速维修的办法。 在这两点上有把握,那么这个问题就不是问题了。 【相关博文】 科学网—应该立法禁止切词研究:=) 【置顶:立委科学网博客NLP博文一览(定期更新版)】
个人分类: 立委科普|5785 次阅读|8 个评论
中文处理的模块化纠结
热度 1 liwei999 2014-6-25 08:47
模块化也不是万能的 作者: 吴礼 日期: 06/19/2014 05:48:40 模块化的确有很多优点,但很多时候达不到整体优化的效果。在通信行业,有个ISO七层模块化的模型,用了二三十年了。提出 来的时候是个大创造,因为它使得各个厂家可以制造系统的不同部分,而只要接口符合要求就能相容工作。但事实上,没有人制造只在一层工作的产品。所以基本上那七层就是分成两,三个模块。而近年来,cross layer optimization成了一个热门研究题目。 天下大势,分久必合,合久必分,源自性能与成本(开发和管理)两个要求的交替上升。 两年前开始上中文的时候,感觉有挑战性,因此蛮刺激,憋着一股劲儿。中文处理的问题,我硕士和博士项目都做过研究,当然那都是混学位的玩具系统,试水而已。后来一直做英文NLP工业研发,但对中文处理的思考10多年来不曾停止。两年前终于有机会名正言顺地着手做,当时的自我感觉是有九成把握。不敢说100%,因为想得很美的事情,不真去试总是不放心,而且此前很多人尝试过,无功而返。 经过大约半年的奋战,那10%的疑惑就消解,有了突破,后去就是工作量的事情了。终于敢拍着胸脯说,英文做到的自动分析和抽取挖掘,中文一样可以做到。感觉一下轻松多了。唯一可惜的是平台还不够大,不能更深地 put a ding in the universe.(可老帮菜朋友说得也有道理,为什么不能生活得更环保,尽可能不给世界留下痕迹呢?) 那 10% 的挑战就是吴礼提到的模块化不是万能钥匙的问题,这在中文处理比在英文处理中显得尤为突出。第一个鬼门关就是中文的切词(tokenization)、词性标识(POS) 和短语抱团(chunking)这三个传统模块的接口怎样处理的问题。因为无法切割清楚,很多人陷入泥坑。这三个基本环节处理不好,就甭谈中文深度分析(deep parsing)和抽取了。但这确是一大难点,尤其对一根筋的理呆。不是为文科贴金,理工出身的喜欢直线思维,往往容易中招。年轻生手就更难以跨越了。 挑战和突破是相对短暂的区间,前后都是拼的耐力。然而,微观上耐力重要,宏观上突破更重要。没有突破,耐力与一头牛无异。而耐力最终可以用钱去买、去实现,而突破常是可遇不可求,要的是眼光,也有运气。 大型软件工程中的模块化是铁律,怎样强调也不过分。但模块化不等同于可以忽视客观世界中的相互依赖的千丝万缕。这对矛盾看得越透,分寸拿捏越容易到位。模块化设计时抓大放小,模块接口和调适时不忘细节,才是辩证法的正道。 而如是设计研发以后经过大规模测试,现在终于可以说,我等绕过了暗礁险滩,在功能切割的模块化和你中有我相互依赖的矛盾怪圈中,达到了一种和谐。 共产主义也不过如此吧。可以骄傲一哈。 【相关】 《新智元笔记:NLP 系统的分层挑战》 2015-12-09 【置顶:立委科学网博客NLP博文一览(定期更新版)】
个人分类: 立委科普|4967 次阅读|3 个评论
中文处理的迷思之二:词类标注模块是句法分析的前提
热度 1 liwei999 2011-12-28 16:59
词类标注(Part-of-speech Tagging: POS)是汉语句法分析的前提么? 没有这回事。 如果说为了模块化开发的方便,中文处理系统先行词类标注,再行句法分析,这种类似于多数英语分析器的架构从工程上看确实有一定的道理,但是词类标注并非句法分析的前提。 点破这一迷思的最直接的例证就是完全可以设计一个跳过POS模块的中文句法分析系统,事实上笔者目前研发的中文系统就跳过了这个环节。 有问:没有词类,怎么可能施行句法分析? 回答是:谁说没有词类?词典里给出的任何类别标注都是一种“词类”。的确,没有这些“词典的类别”信息,句法分析就没有抽象度,就难以编写规则来parse千变万化的语句。 POS 模块的本义在于词类消歧,即根据上下文的条件标注唯一的一个语法词类,譬如把同一个“学习”在不同的上下文中分别标注为名词或动词。前面说过,这样做有工程上的便利,因为如果词类标注是准确的话,后续的句法分析规则就可以简化,是动词就走动词的规则,是名词就走名词的规则。但这只是问题的一个方面。 问题的另一面是,汉语中的词类歧义特别严重(语法学界甚至曾经有云:词无定类,入句而后定),不但很多词都可以是名词或动词,而且动词和形容词的界限也很模糊。三大类实词在汉语中如此界限不分明,这曾经被认为是中文信息处理寸步难行的最大障碍。歧义如此严重的语言如果实行两步走的架构,有可能陷入错误放大(error propagation)的怪圈,即,词类区分的错误进一步造成句法分析的灾难。这是因为有些词类区分的条件在局限于 local context 的 POS阶段尚未到位,POS 模块过早地标注了错误的词类。 根据 keep ambiguity untouched 的经验法则,遵循 adaptive development 的基本原则,跳过 POS 的环节,让句法分析直接建立在词典信息的基础之上,是解决上述矛盾的一个有效方法。具体来说就是,只利用词典里面的静态类别信息来做分析,无须倚赖专有的POS模块先行消歧。如果一个词既可以做名词,又可以做动词,那就把两个类别同时标注到这个词上(另一种有效的做法是,只标逻辑动词,不标名词,因为差不多所有的词典动词都可活用为名词,给逻辑类动词在词典标注名词基本增加不了新的信息,这些选项都是系统内的协调的事儿)。编写句法规则的时候,对于兼类词(譬如动名兼类词 “学习”)与单纯词(譬如纯名词“桌子”)根据条件的宽松分别对待即可。 需要说明的是,笔者并不反对先POS后Parser的中文处理策略,只是指出POS并非Parser的先决条件,还有一种句法直接建立在词典之上的一步走的策略。顺着这个思路,一步半的策略也许更好。所谓一步半,就是做一个简单的 POS 模块(算是半步)把词类区分中比较大路容易的现象标注好,并不求对所有词类施行标注。 【 中文处理的迷思之一:切词特有论 】 【 中文处理的迷思之二:词类标注是句法分析的前提 】 【 中文NLP迷思之三:中文处理的长足进步有待于汉语语法的理论突破 】 【置顶:立委科学网博客NLP博文一览(定期更新版)】
个人分类: 立委科普|6802 次阅读|1 个评论
中文处理的迷思之一:切词特有论
热度 7 liwei999 2011-12-28 13:33
电脑的中文处理业界有很多广为流传似是而非的迷思。在今后的随笔系列中,准备提出来分别讨论。 迷思之一:切词(又叫分词,word segmentation)是中文(或东方语言)处理特有的前提,因为中文书写不分词。 切词作为中文处理的一个先行环节,是为了模块化开发的方便,这一点不错。但它根本就不特有。 任何自然语言处理都有一个先行环节,叫 tokenization,就是把输入的字符串分解成为词汇单位:无论何种书面语,没有这个环节,辞典的词汇信息就无以附着,在词汇类别的基础上的有概括性的进一步句法语义分析就不能进行。中文切词不过是这个通用的 tokenization 的一个案例而已,没有什么“特有”的问题。 有说:中文书写不分词,汉字一个挨一个,词之间没有显性标识,而西文是用 space(空白键)来分词的,因此分词是中文处理的特有难题。 这话并不确切,语言学上错误更多。具体来说: 1 单字词没有切分问题:汉语词典的词,虽然以多字词为多数,但也有单字词,特别是那些常用的功能词(连词、介词、叹词等)。对于单字词,书面汉语显然是有显性标志的,其标志就是字与字的自然分界(如果以汉字作为语言学分析的最小单位,语言学上叫语素,其 tokenization 极其简单:每两个字节为一个汉字),无需 space. 2 多字词是复合词,与其说“切”词,不如说“组”词:现代汉语的多字词(如:利率)是复合词,本质上与西文的复合词(e.g. interest rate)没有区别,space 并不能解决复合词的分界问题。事实上,多字词的识别既可以看成是从输入语句(汉字串)“切”出来的,也可以看成是由单字组合抱团而来的,二者等价。无论中西,复合词抱团都主要靠查词典来解决,而不是靠自然分界(如 space)来解决(德语的名词复合词算是西文中的一个例外,封闭类复合词只要 space 就可以了,开放类复合词则需要进一步切词,叫 decompounding)。如果复合词的左边界或者右边界有歧义问题(譬如:“天下” 的边界可能歧义, e.g. 今天 下 了 一 场 雨;英语复合副词 in particular 的右边界可能有歧义:e.g. in particular cases),无论中西,这种歧义都需要上下文的帮助才能解决。从手段上看,中文的多字词切词并无任何特别之处,英语 tokenization 用以识别复合词 People's Republic of China 和 in particular 的方法,同样适用于中文切词。 咱们换一个角度来看这个问题。根据用不用词典,tokenization 可以分两种。不用词典的tokenization一般被认为是一个比较trivial的机械过程,在西文是见space或标点就切一刀(其实也不是那么trivial因为那个讨厌的西文句点是非常歧义的)。据说汉语没有space,因此必须另做一个特有的切词模块。其实对英语第一种tokenization,汉语更加简单,因为汉字作为语素(morpheme)本身就是自然的切分单位,一个汉字两个字节,每两个字节切一刀即可。理论上讲,词法句法分析完全可以直接建立在汉字的基础之上,无需一个汉语“特有”的切词模块。Note that 多数西文分析系统在Tokenization和POS以后都有一个chunking的模块,做基本短语抱团的工作(如:Base NP)。中文处理通常也有这么一个抱团的阶段。完全可以把组字成词和组词成短语当作同质的抱团工作来处理,跳过所谓的切词。 Chunking of words into phrases are by nature no different from chunking of morphemes (characters) into words. Parsing with no “word segmentation” is thus possible. 当然,在实际操作层面上看,专设一个切词模块有其便利之处。 再看由词典支持的tokenization, 这种 tokenization 才是我们通常讲的切词,说它是中文处理特有的步骤,其实是误解,因为西文处理复合词也一样用到它。除了实验室的 toy system,很难想象一个像样的西文处理系统可以不借助词典而是指望抽象规则来对付所有的复合词:事实上,对于封闭类复合词,即便抽象的词法规则可以使部分复合词抱团,也不如词典的参与来得直接和有益,理由就是复合词的词典信息更少歧义,对于后续处理更加有利。汉语的复合词“利率”与英语的复合词 “interest rate” 从本质上是同样的基于词典的问题,并没有什么“特有”之处。 【相关博文】 《 立委科普: 应该立法禁止分词研究 :=) 》 【置顶:立委科学网博客NLP博文一览(定期更新版)】
个人分类: 立委科普|13914 次阅读|11 个评论
《科普随笔:汉语自动断词 “一次性交500元”》
liwei999 2011-10-14 17:41
《立委随笔:汉语自动断词 “一次性交500元”》 (2824 bytes) Posted by: 立委 Date: April 27, 2007 10:56PM 请教一下立委,这过滤词的语法能提高吗。 (15409) Posted by: oztiger Date: July 12, 2006 11:03PM 我初看xj这帖子,很不明白 北大法学院 怎么会变成 北 大法 学院,想想又挺好笑。然后想是否xj毕竟不是专业的,可能过滤法不够智能。特意用百度去搜北大法学院,竟然死掉,看来网上长城也没解决这个问题。 正好就近就是一个专家,问问老李有没有现成的code识别中文字词断句。 说真的看来老李的专业前景无限。我不是说老李去帮网上长城打补丁,只是想想正火的data mining里面肯定也要解决这个问题,不然搜出来意思都变了 ===================================================================== 这是切分歧义问题。目前汉语自动分词的水平可以解决 (15421) Posted by: liwei999 Date: July 13, 2006 01:30AM 90%以上这样的歧义区分问题。现成的code应该有,不过往往很笨重,overhead不小,不是很容易integrate。 My friend Dr Guo has a demo Chinese tokenizer at: He is an expert in this area. 比如: Chinese Tokenization Demo Enter a Chinese string and hit the Run button, then tell me how I can do better for you! Input 很 不 明 白 北 大 法 学 院 怎 么 会 变 成 法 轮 大 法 的 大 法 Output 很 不 会 变 成 的 大 法 ===================================================================== 涨了见识。 (15422) Posted by: oztiger Date: July 13, 2006 02:11AM 我是什么都想知道一下,真翻开论文看了几段又懒了,但总算知道了一下目前解决这种问题的思路。他能把‘结合成分子’正确断出来不容易。 不过你跟他反馈一下,我让他的程序断‘一次性交500元’(不准笑!正经的科学研究),结果是 一 次 性 交 5 0 0 元,跟我的原意不符。 另外网上长城为什么不采用你们这样的最新技术之类的,他们把北大/法学院当成大/法来屏蔽还是挺落后的。可是我用google搜大/法,第八个网页就已经是北大/法学院了,怎么他们的算法也那么差? ====================================================================== 没有断错呀,至少把最常见的意思断出来了。 (15423) Posted by: liwei999 Date: July 13, 2006 02:34AM 引用: oztiger 不过你跟他反馈一下,我让他的程序断‘一次性交500元’(不准笑!正经的科学研究),结果是 一 次 性 交 5 0 0 元,跟我的原意不符。 你真开玩笑,程序又不是道德法官,怎么知道这个年头还会碰上你这么一个正人君子并揣摩出你的原意呢(何况是不是原意也很难说,又不是你肚子里面的蛔虫)。他的程序是以统计为基础的,从统计上说,你的“原意”绝对是少数派,在 threshold 以下,机器学不出来。 ===================================================================== 是有小毛病 (15424) Date: July 13, 2006 02:56AM 如 input 一次性交款500元 Output 一 次 性 交 款 5 0 0 元 但 Input 一次性交费500元 Output 性 交 费 5 0 0 元 立委按: 其实 “ 一 次 性 交 款 5 0 0 元” 也合乎汉语语法。 【补记】原作者反馈: PS. 一 次 性 交 5 0 0 元 一 次 性 交 款 5 0 0 元 性 交 费 5 0 0 元 I never responded to this. Actually please notice that I have a space between 性 and 交. Furthermore, please notice the difference between the last one (where I have 性 and the first two. What behind is, I have the assumption (a truth I think) that ALL (well, except for 葡萄, 玻璃 and the like) multi-character 'words' are ambiguous (so-called hidden ambiguity) and hence have to be handled with dictionary at 'application' time ( 在‘用’字上狠下功夫 ). This is consistent with your 词汇主义 and your rule-of-thumb keeping ambiguity untouched. I actually pushed that one step further by keeping ambiguity only one level (that is, you only need to look ONE level deeper). This is consistent with your 自底而上 but more concrete/specific -- whenever I see potential ambiguity at my level, I keep them there (as in 性 交 and then 断链. I mean I agree with you fully. And by today if I have a bit more added info in dictionary, I think I can do 'shallow parsing' better. 很 不 会 变 成 的 大 法 At that time I have entity but no event. Fun to talk about these! 【置顶:立委科学网博客NLP博文一览(定期更新版)】
个人分类: 立委科普|4527 次阅读|0 个评论

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

GMT+8, 2024-5-29 08:14

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部