【李白对话录之11:parser 的三省吾身】

李:
白老师有关于深度分析的名言曰:

parser三省吾身:有坑填乎?有盘翻乎?有subcat相谐乎?

填坑乃细线条句法,翻盘为语义重新计算,subcat 相谐引入本体常识。

宋老师提出的例子很有意思,属于语义翻盘:

Jogger’s nipple happens when a runner’s shirt rubs against his exposed chest.
google译为 慢跑者的乳头发生在跑步者的衬衫摩擦他暴露的胸部时。

宋老师说:其实,”Jogger’s nipple“应该译成“ 慢跑者乳头”,具有专指意义,可以看作临床医学的术语。汉语中,“慢跑者乳头”和“慢跑者的乳头”一字之差,决定了前者是术语,后者为普通的短语。但是,如果说“慢跑者乳头会被擦伤”时,只能理解成(慢跑者(乳头 会被擦伤))

这个一字之差 很合理啊。这与 hidden ambigity 同,是 context 强拆词典词。为了维持词典的优先或默认地位,这种强拆就是我们讨论过的休眠唤醒问题。这与 “难过” sad 被唤醒为 difficult to cross 是一个套路。可以用词驱动的方式 局部重新洗牌。

按照 “难过” 的处理思路 此例不难。大体是第一遍粗线条parsing的时候 不check语义限制条件,所以得出 这种疾病 会被擦伤 的逻辑动宾关系,大面上的 parse 是不错的,尽管不 make sense 因为疾病 与 擦伤 不搭。到后面的模块 或者是语义落地的模块,我们可以再做局部的 parsing 调整。正因为它有两种可能性,才使得词驱动的反悔策略可以成功。这个策略的成功已经在我的sentiment语义落地模块得到应用和证实。我专门有一篇博文,详细解说这种局部parsing反悔而使得语义正确落地,否则“难过”就是主观的负面情绪,可我的系统最终结论为客观的困难。“这条小河很难过” 于是不同于 “这个小孩很难过”。sentiment系统做到这个程度 没听说过第二家,但的的确确是可行的。它基于的机制就是与白老师讨论过好几回的休眠唤醒,而不是 nondeterministic 带着瓶瓶罐罐跑。原则上 只要是可以词驱动的这类现象 都可以做。

白:
方法论上,就是纵向不确定性(词汇歧义)和横向不确定性(填坑歧义)不要搅在一起。先撇开结构(但不排除非结构的各种信息包括subcat的使用)确定无歧义的词汇(WSD),再聚焦横向不确定性。当纵向自己冒出更加相谐的其他候选或者横向遭遇结构性不顺或者二者兼而有之的时候,启动WSD翻盘,即休眠唤醒。这里的潜台词是,随着填坑的进行,WSD一直在继续,类似阈下联想。但这种继续,只是横向填坑的结果单方面抛给纵向WSD,但是不到翻盘启动,WSD只不过瞎联想而已,并不反作用于横向填坑。

李:
白老师是哲学家 善于总结和抽象。

白:
段子就是这么产生的
包袱就是这么抖的
直到WSD的最后一根稻草打破僵局,启动翻盘

李:
人也是这么个理解过程,叫 恍然大悟。恍然前 其实在标配休眠。
所以说 以前很多人认为 hidden ambiguity 是中文分词的死穴、无解,那是因为误把分词当成了一个独立的死模块。 明明是 context parsing 的催眠唤醒的任务,硬要怪罪和强加给分词。现在清楚了 这个问题有解,但解不必在分词层面,解隐藏在词驱动规则里面,不到一定的时候 不 activate。这与以前的 exhaustive parsing 的方案虽然原理都是借助 parsing 之力,但却适应了 real life 系统多层模块化开发的需求。(我在博士论文中提过用 chart parsing 通过 exhaustive candidates 解决一切切词任务,包括 hidden ambiguity 的,是把切词看成 parsing 的一个有机成分,这个解决方案理论上可行,但难以 scale up。)

白:
parser三省吾身:有坑填乎?有盘翻乎?有subcat相谐乎?

李:
笑喷。差点喷在手机屏幕上

李:
说 subcat 是命根子 等价于说教科书上的 cat(POS)为基础的 grammar 太粗线条,很误导,只是 toy,无法对付真实语料。subcat 与词典主义是一致的。

白:
两个粒度
没得可选时,pos很给力。选择太多时,pos就是累赘了。

李:
hierarchy: literal — subcat — cat
subcat includes sub-sub-cat and hownet taxonomy

白:
沿上下位链条有一个统计分布,并不是任何一个节点的传播强度都相同。
非常有意思的一个问题

比如说到“猴子”,可能其典型的上位词是“灵长类”,而“哺乳动物”“动物”“生物”这些上位词就不那么典型。也不一定就是直接上位最典型。比如“豹子”,可能“猫科”并不典型,而“野兽”更加典型。如果要做无监督学习,典型性分布是一个必须解决的问题。典型性还会“条件化”。比如上下文中有“吃”,则“动物”上位就会强化。说“产卵”,则卵生上位会强化。

这样才能把词典中的subcat标签如所愿地变成非标注语料的自动标签。也就是说,实现正确的subcat embedding, subcat embedding是比word embedding意义重大很多的一件事,难度也不在一个数量级上。如果subcat embedding成功,意味着从此告别苦力,进入自动化标注时代。

李:
subcats (sets or clusters of words from any angles) or taxonomy 链条中的所谓典型 nodes,说到底,是作为语言特征,它是不是有区别性。

早早年做 MT 有个例子很有意思。说英语的 down 有一个用法和义项,与 along 同,翻译成汉语是 “沿着”。需要什么条件才翻译成 沿着 呢?研究了 data 发现,原来是它后面的名词都有一个特征,可以叫做“线条性”,于是这个特征就成为语言使用和理解中有意义的 feature 了:

down the street
down the line
down the pipe
down the corridor
etc

down + NP【线条性】 –》 沿着 NP

那么 along 呢? along 基本没有歧义,于是就不需要这个条件了:

along + NP –》 沿着 NP

生物学上的 taxonomy 不一定具有语言学上的区别性特征,其中的有的 nodes 典型,具有语言意义,有的 nodes 就没有语言学意义。人、鬼、神、妖 很不同的。但是语言使用上,其搭配关系大同小异。

白:
所以闭门造taxonomy是不管用的
标签造出来就是为了区别的
如果不知道谁对区别敏感,就吃力不讨好

李:
完全从大数据去 clustering,也不好说结果就好使;闭门造车拍脑袋也容易偏差。最好还是二者的某种结合。

回到那个【线条性】的区别性feature来。一旦总结出来,我们就可以穷尽词典,根据这个特征给每一个具有线条性的名词标注。从此就可以说 down 的这个用法,我们基本搞定了,没有 sparse data 的顾虑了。如果没有总结出这个 feature,并在词典里面穷尽它,SMT 和 NMT 能自己学出这个 feature 并对 sparse data 免疫吗?它能够从 down the street 举一反三到 down the line 吗?—- 假如后者是 sparse data,训练数据里面没见的话。

白:
等会儿,两个问题要分开。词典标“线条性”特征是一件事,写不写规则是另一件事。用学习的方式,学down 和“线条性”subcat之间的搭配,机器学习方法是没问题的。
走半步,做词典里的subcat标注,另半步交给机器,这很正常。

李:
有理。不过,难点在发现“线条性”是一个值得标注的东西。假设人已经词典标注了,机器学习出这种条件,是自然的。还有一种就是不管3721,把几万个能想到的 features 都标注上,然后让学习自动筛选区别性特征,选出 top 1000 features 其他的舍去。然后,词典维护的负担就大大减轻了,只要把注意力集中在 1000 个最具区别性的概念上就可以了。其实 1000 以外的 features 也没啥概括性了,经验告诉我们舍弃没问题。反正后面还有 literal 做底。literal 做底的就是我们说的强搭配。

白:
语言学家灵感所至,想出一个“线条性”来,当然是一个好的启发。但是对于学习来说,有好的启发就很好了,不需要语言学家干脏活累活调规则。所有工作集中到词典,剩下的交给机器。

李:
HowNet 和 WordNet 里面都有万以上的 features,我们都知道者万以上的 features 其实只有千这个量级的子集最有意义。具体是哪些有意义,目前是拍脑袋。这个选取工作应该是机器来做的。

白:
作用还不仅此。
有时一词多义,不是所有义项都有“线条性”含义,比如thread作为“线程”解,其“线条性”就很弱。string当弦乐器解的时候其实已经没有线条性。所以一个外部条件,可以只和词典里一部分义项勾搭,把另一些义项冷落在一边,形成事实上的WSD,就通过subcat做。WSD和用搭配筛选固化结构,一石二鸟。义项支持结构,结构支持义项,形成正反馈。环形支持,不是单边支持。

李:
“WSD和用搭配筛选固化结构,一石二鸟。”
这就是我以前说过的,为什么 IE 可以绕过 WSD,因为 parse 基础上的 IE 语义落地根本不需要独立的 WSD 模块作为支持,因为 WSD 在 IE 过程中自然实现了。当然前提是 deep parsing 支持的 IE,而不是主流那种没有结构支持的 IE。一般而言,一个词有多义不可怕,可怕的是多义没有结构去制约。如果对于最终的语义落地,总是以 parsing 作为跳板的话,这种多义的困扰就自然消失了。

白:
当然,也少不了反悔
有subcat干扰的反悔总是比较艰难的。只需三省吾身。

李:
实际上,IE 落地不仅可以容忍词多义(WSD),也可以容忍结构歧义。因为到了 IE 的份上,domain 已经聚焦到要落地的语义。这时候,词驱动因为聚焦变得可行。因为词驱动变得对于歧义可以容忍而不失精度,这就是 deep parsing 是语义落地核武器的奥秘所在。

自然语言最让人困扰的问题是歧义性。恰恰在这个最困扰的地方,parsing + IE聚焦 使得对于歧义可以免疫的词驱动的 approach 变得切实可行。 不少人因为只知道 IE 是学出来的,不需要句法和结构,无法理解 parsing 的核武器性质。结果是 今天的 IE 与明天的 IE 被看成是两个独立的任务,具有各自的知识瓶颈。但在 parsing + IE 的架构里面,这就不再是独立的任务了,而是80%+ 相交的任务了。说白了就是,结构不够(结构歧义)词来弥补,词不够(歧义)结构来制约。要恰好赶上词的多义与结构的多义在给定的IE语义落地任务中重合,并且这种重合影响到落地的质量,很不容易呢。换句话说,如果是两条腿走路,想出错都难,想质量不高都不容易。一条腿是结构,哪怕是歧义的结构。一条腿是词(nodes),哪怕是歧义的词(当然这词所代表的不仅仅是词,还有其上的 ontology)。两条腿走路踏空掉悬崖去的例子,学者研究过,不能说没有,但真实应用中完全不足为虑。

我的黄学长(Wilks 的门生黄秀铭)在他的 Prolog MT 的博士论文中特地举了这个两脚踏空的倒霉案例,为了彰显 Prolog 回溯消歧的本领:tough coach, 第一条腿是结构:定中关系,很幸运这条腿本身没有结构歧义。第二条腿是词义,两边都是常用词,义项比较多。结果是,加上了结构以后,还留下了两个语义相谐(ontologically appropriate)的可能性,不能完全WSD消歧:  1. 严厉的教练;2. 牢固的马车。 原则上在这个 local 结构的 context 里面,这个罕见的多义案例是无解的,需要更大的上下文来消歧。要我说,拉倒吧,难得一错,认栽吧,否则不像是人造的 intelligence 呢。

白:
大数据说谁就是谁了
哪有那么纠结

李:
那倒是,不就是个 bigram 嘛。类似的例子如果远距离,不知道大数据会不会稀疏到不能定夺。譬如:The coach that has been there for years is known to be really tough.

白:
我理解WSD和分析器使用语义中间件是个动态递进的过程:随着分析的进展,原来远距离的会拉近,原来WSD的结论也会翻盘。

【相关】

《泥沙龙笔记:parsing 的休眠反悔机制》

【立委科普:歧义parsing的休眠唤醒机制再探】 

【立委科普:结构歧义的休眠唤醒演义】

 

【李白对话录系列】

中文处理

Parsing

【置顶:立委NLP博文一览】

《朝华午拾》总目录

 

 

发布者

liweinlp

立委博士,自然语言处理(NLP)资深架构师,讯飞AI研究院副院长。前 Principle Scientist, jd-valley, 主攻深度解析和知识图谱及其应用。Netbase前首席科学家,期间指挥研发了18种语言的理解和应用系统。特别是汉语和英语,具有世界一流的解析(parsing)精度,并且做到鲁棒、线速,scale up to 大数据,语义落地到数据挖掘和问答产品。Cymfony前研发副总,曾荣获第一届问答系统第一名(TREC-8 QA Track),并赢得联邦政府17个小企业创新研究的信息抽取项目(PI for 17 SBIRs)。立委NLP工作的应用方向包括大数据舆情挖掘、客户情报、信息抽取、知识图谱、问答系统、智能助理、语义搜索等等。

发表评论