《李白宋121:中文分词歧义及其包容》

分词结果应该长什么样?

最新原创出炉,白老师又有佳作,话题是中文“分词”。

李:请教@白硕 ,“线状补丁”列表的遗漏掉的词汇就是一个 list of words?所说的优先级来自何处?优先级本身是不是也表示出来?根据优先级需要 cut 一刀,否则就是 exhaustive tokenization 的查词典全覆盖了,这一刀在哪里截住有说法吗?

另外: 如果只剩下“难过”一个整体,离合词的寻找就是一个伪命题,更无需说“小河”和作为一个整体的“难过”在语义上是不相谐的。这个说法 逻辑上/语义上 没问题,但从大数据现场看,“小河难过” 的相谐性不是子虚乌有,而是可验证的。只要数据足够大,都可以和谐:1. 过河;2 过小河; 3 难过河; 4 难过小河

白:如果是未经分词的大数据或者未经人工校对的已分词的大数据,你根本不知道那个出现是“难过”还是“难+过”,从而,你也无法给出二者相区别的统计数据。

李:最简单的高频ngrams共现,应该可以确认上面4种相谐。不需要知道 “难过” 是不是 一种 “过”,还是一种 “难”。有意思的是,大数据的语言模型越来越舍弃分词了。gram 都是立足于 characters(字)这种没有争辩空间的基础之上。对分词(错误)完全免疫。换句话说,分词 irrelevant 了。其可行,是因为大数据不怕 redundancy,非逻辑系统也不需要概念单元。甚至欧洲文字明明有空格帮助分词,也有系统开始立足于纯粹的 character(字符,字母和空格等)之上,舍弃“词”的拐杖。最明显的好处就是模型的鲁棒性。错别字 手误 不再是挑战。

最近用机器翻译的时候发现,漏掉几个词,或者某个长词只写了一半,系统照样翻译正确。有时候把几个英文词连在一起写,把空格去掉,也一样出来正确的结果。

白:机器翻译跟精准解析几乎无关。容错也不是元组表示独有的功劳。

李:那是。但是非机器翻译用的模型也都是这个趋向。

是两条路上跑的车,确实不必混在一起谈。

白:我们关注的是,不做“难过”和“难+过”的区分,能走多远?能成为一种常态?如果需要区分,而且是通过“反哺”来区分,那么如何给“反哺”保留最必要的信息?

李:这个问题也琢磨过。

区分可以原子化和词典化,而不是在词典外的系统层面,感觉是相当可行的。就是说,难过 看成是一个单元(词条),两个 senses(概念)。这就对外看上去没有区分,对内转化成了 WSD 的问题。 词典标注的 sense1 就是 sad,sense2 是 “某种” cross。sense2 与动词 “过” 的标注一致。有了词典内部的标注,这个区分就自圆了。

白:这是组合歧义,交叉歧义呢?

难道“文化学+到手”和“文化+学+到手”是同一个“五字词”的两个sense?

李:其实也不是不可以想象的。才 5-gram,总有一天 5-gram 之内的问题 原则上 都可以词典化。起码高频的 5-grams 可以越过传统词界限的束缚。

文化学到手:sense1=“文化学+到手”;sense2=“文化+学+到手”

好处是一旦歧义被“包住”了,敌我矛盾就转化为人民内部矛盾。都是自家人,什么事都好商量。甚至商量不了,解决不了,也可以搁置,不影响外交关系。这个思路感觉是有益的。

以前有个“错误放大”(error propagation)的理论担心。这个理论夸大了局部问题的全局后果。其实如果应对得当,局部问题解决不了,就包住它,也是可以的,影响不到全局。

白:感觉:1)五个不一定够;2)遇到bug现场打包改词典比retrain还不靠谱;3)随着词典的增长,组合歧义/交叉歧义也在增长,这个过程都不一定收敛。4)如果必须牵涉语义,打包过程中语义的组合还是要靠能产性解决而不是靠个案解决,换汤不换药。

你过去做词典的人写词项的定义就ok。现在写多元组的定义,是若干个词项定义的特定形式的组合,在公司里都不见得是同一个工种。等于让修理工当装配工。

李:我的感觉不一样:1)5个够了(99.999..., 就是小数点后到了第几位);2)遇到 bug 现场打包其实是靠谱的,如果只求快速包扎,我们一直就是这样做的;3)收敛是个理论问题,现场的问题是,有没有办法让(高级)用户在现场自己搞定。就是说,系统从来不是一锤子买卖,只要用户自己觉得不是绝路,有逃生的希望,就可以。

白:不可能的。

一个词项乃至N个词项组合对应的标签,客户怎么搞得定

李:预设是精准解析,才会得出不可能、不可持续的结论。但精准解析与分词一样,都是手段,不是目的。从目的和现场看,个案解决或止损,是没有啥问题的。至于要不要统筹解决,那是另一个层面的问题。

白:谈商业是另一种谈法。

李:统筹解决与个案解决是并行的,后台研发不断考虑统筹的问题。前台现场提供个案解决的用户友好工具。个案解决有个回路,反馈到后台,保不准类似的个案问题在下一个 release 中就不必个案解决了。

白:“纽约周三再开放,到中国直飞机票没有,转飞就难说了。”

直飞/机票 vs 直/飞机票

宋:用“大词”就解决了。一般来说,交搭型歧义用大词解决,离合型歧义用词义解决。

李:其实两种歧义都可以大词典应对之,前者是内部解决,后者是内部包容。二者都被“大词”包裹了。包裹的好处是抓大放小,一致对外。甚至连内部发生不可调和矛盾的现象(例如 NP/VP 兼容大词,学习材料/红烧牛肉),也可以包裹得严严实实。如果 “指挥” 可以包裹两个 senses,就没有理由不能让 “学习材料” 包裹两条内部子图路径。

以前提过的一个论点是,NLP 的大部分工作都可以绕开 WSD 来做,说的就是只要能包裹住歧义,绝大多数工作都可以继续,舞照跳,马照跑。

包裹了以后,还解决不解决内部矛盾呢?其实,90%以上的内部矛盾就一直包裹到死,夫妻吵吵闹闹一辈子的有的是,一样过日子。如果恰好在 NLP 应用现场,被包裹的歧义是关键所在。于是会有不到 10% 的内部矛盾,可能需要根据需要重新打开包裹,来解决矛盾。而这种解决也还是词典驱动的。

白:“大词包”的构建绝不可以转嫁给客户,要做,你NLP厂家自己做。这是底线。

李:底线要看商业模式。NLP厂家赋能应用集成商或直接赋能高级用户这种 component technnology 的商业模式,其实没有成功案例(历史上,美国曾经的NLP industry leader Inxight 以自己的 LinguistX 赋能客户,挣扎了10多年,终归于失败)。既然此路迄今不通,那么NLP也就成了应用厂商的内部使用工具和平台。在这样的条件下,NLP厂家和应用集成商合二为一,直接面对客户。这时候,大词包需要根据领域场景和客户的资源去做领域移植,就是顺理成章,不得不做的事情。

大词包一点也不玄妙,用户词典里面充满了大词包。自动领域词典习得得到的结果,多半也是大词包。加载这些大词包资源,是NLP领域应用不可忽略的必要环节,怎么强调也不过分。至于大词包内部如何构建微结构,那自然是个技术活儿,想转嫁用户也转嫁不了。幸运的是,多年实践表明,其实“构建大词包内部微结构”这种事情,在应用现场很多时候是不必要的。如果必要,如何合理分工,增强领域词典的维护和保证数据质量提高的等等问题,有很多另外的办法,难以尽述。

 

【相关】
 
 
 

 

发布者

立委

立委博士,问问副总裁,聚焦大模型及其应用。Netbase前首席科学家10年,期间指挥研发了18种语言的理解和应用系统,鲁棒、线速,scale up to 社会媒体大数据,语义落地到舆情挖掘产品,成为美国NLP工业落地的领跑者。Cymfony前研发副总八年,曾荣获第一届问答系统第一名(TREC-8 QA Track),并赢得17个小企业创新研究的信息抽取项目(PI for 17 SBIRs)。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据