【李白之13:所谓话题或大小主语的句式】

白:
“我讨厌那种窗户不透亮的房间”
“我喜欢家不在本地的女朋友”
“他期盼着进入一个放学不留作业的学校”
@崔佳悦 欢迎

李:

欢迎@崔佳悦 虽然词库目前未登录 好在 ne 还是对了。

1. “秦汉胡同学员作品展” 里切词有错,可是 NP 对了,应该不影响parsing该NP涉及到的句子大局;

2. “蒙太格” 不在词典,更甭提“蒙太格语法”这个术语了,但是 NP 还是没错;

3. “逻辑语义学研究”,初期 parse 成主语 S,到了语义中间件(不是白老师那种中间件,是句法后的语义模块)发现是逻辑宾语 O,但并未删除初始的主语结论(其实是有意为之,因为这个更新不是百分百把握,留下初始结果可以增加语义落地 recall,不过是一个儿子两个老子而已的可以容纳的 non-deterministic 的结果);

4. 从事的主语应该是【human】or 【institution】,现在错了,这个可以在语义模块更正的,如果磨细活的话。

5. 最后的话(怎么听上去像瞿秋白先烈就义前的心灵忏悔?): 所谓鲁棒,就是步步为营,不求完美。有知识就细柔一点,没知识就大老粗。

白:
“我不喜欢穿没有领子的毛衣。”

李:
人在外 领导血拼 估计没问题 等回家测试
人在外 == body 在外
不是领导ing shopping 而是陪领导 shopping
估计what没问题 等回家测试what
这个要问白老师 语义中间件搞不定。
估计【白句的测试结果】没问题 等回家测试【白句】
白句是what 问一问小冰
据说小冰是目前对discourse最能耐的妞儿了。

白:
窗户那个,看不出细节
如果“不透亮”一个坑,而且被“窗户”占了,而“房间”又不属于“那个小集合”,那么“房间”回填“不透亮”应该遭遇阻碍而且不能不了了之。不知道伟哥怎么摆平的。别告诉我就是不了了之了。

李:
做 sentiment 的 这个都摆不平 就完蛋了:窗户不透亮 是 negative 中最具情报价值的信息,我们叫做 actionable insights,比纯粹情绪的宣泄价值大太多

白:
“没有”两个坑,把问题掩盖了。再来:“我最喜欢吃皮儿薄的饺子。”
估计和窗户一样
毛衣、饺子、房间,都是俩爹。

李:


这个、这个 -- 差强人意了点儿。
可毛主席说了,吕端大事不糊涂。大局不错。

白:
领子、窗户、皮儿,都有坑
在图上把俩爹找齐了才漂亮

李:
哪两个爹?
皮尔 是 薄 的 S, 也是 饺子 的 part?
part-of 关系可以作为支持,不必作为 output,因为这个在 ontology 已经预定了

白:
饺子,皮儿一个爹,吃一个爹。

李:
吃是爹,饺子是宾语儿子。
至于饺子与皮的关系,这是一种不易的本体知识,不是动态的语义,有何必要?HowNet 里面就给了这个关系,这是宇宙真理,放之四海而皆准。没有情报价值。

白:
句法层面不需要知道是part-of,只需要知道有坑

“这些饺子皮儿太厚”,饺子的爹是谁?
是“太厚”,不通。是“皮儿太厚”,违反了词负载结构的原则,答案只能是“皮儿”,而且人家俩的关系就摆在那里。

李:

一个大主语,一个小主语而已,层次不同。
做 sentiment 的,对于这样的描述: 皮儿太厚,非常敏感,因为请报价值大。这是一种抱怨,而且抱怨具有 actionable 情报。下次包饺子,就要注意擀皮儿的人了。

白:
我就是不满意这个大小主语的说法
本来可以做得更好,而且是举手之劳

李:
目前这个做法 很合理啊。
你看看 “皮” 虽然也是 S, “这些饺子” 也是 S,但两个 Ss 明显层次不同

白:
“张三不知怎么搞的亲戚那么多。”
亲戚不是part-of,但有坑的特点是一样的

李:
从短语结构即可看出:"皮"几乎就是词法 open morphology 而 "饺子"则是句法。

白:
亲戚也是词法?
sentiment里面所谓的aspect,在句法里都可以显性处理,不用走曲折道路。

一个性质,完全平行的句子,被处理成了不同样子。

李:


这些扩展的主谓结构,处于词法句法边缘地带,是句子一级的句法的一个单元。违反了词负载结构的原则,也没什么。

白:
硬盘也是?
这台机器不知怎么搞的硬盘总坏。

李:

说是 open morphology 也差不多:硬盘总坏;身体好;性格糟糕;屏幕太宽;价钱死贵 。。。。。。

白:
本来可以纯句法处理的,只要更新一下观念

李:
现在的处理办法, 经过太多的测试,一直感觉很顺溜
语义落地,特别是落地到 sentiment,真地是一顺百顺
展示这样的sentiment 的短语结构的结果 也很漂亮。容易理解,情报丰富。

白:
在句法上把坑显性化,只会做得更好

“硬盘总是坏的机器不要买”
“秘书过于漂亮的老板不好当”

李:
这个 这个 这个 。。。。这个 这个。。。

反正这样玩法,白老师铁心要玩残它。不过:
“硬盘总是坏的采购员不要买,好的采购员可以买”

白:
这个例子好。

问题是我有更好的方法

李:
白老师的问题不是我的问题,但白老师的麻烦却是我的问题。(哈,cf:【李白对话录之10:白老师的麻烦不是白老师的】

白:
有自由度了。中间件该出场了。
如果没有自由度,还轮不到中间件呢

李:
中间件是这样的:没有它 parser 一样行走,而且多数情况下走得还不错。
这就是 parser 第一步要做到的目标。
然后,随着中间件不断丰富,parsing 不断细化、语义逻辑化。这是 parsing 的第二步目标,是 semantic parsing 的终极目标,但不是语义落地的必要条件。

白:
当然。但句法不同,伪歧义表现不同,中间件出场的条件自然也不同。
伪歧义多点少点死不了人,断链子就不同了

李:
无论是 白老师的中间件的 integrated or call-on-the-fly 的做法,还是我的 pipeline 的语义模块的做法,本质是一样的。

白:
我在质疑句法本身,而不是parsing。

李:
现在的情况是,第一步目标几乎达到了,靠谱了。第二步还在断续补足中。
句法的目标只能是方便语义落地。如果较好地支持语义落地,那么就是一个好的句法(representation)。

白:
这里的“方便”往往夹杂着对软件和数据legacy的考量,着眼点不在“地”而在“落“
如果没有legacy,反而更容易着眼于“地”。成功是失败之母。因为任何一种成功都有固化自己的冲动。

李:
评判 syntax 是一个困难的事儿。譬如说吧 虽然我们可以批判 penn tree,抱怨它设计得糟糕透了。但是 换一个人制定标准 估计也好不了太多,我们还会批判它。我可以一口气数落 penn tree 的10大错,而且可以条条是道。所以,在认识到这种评判的困难以后,我们可以退一步说,至少我们评判一个 syntax 的表达,着眼点是多大程度 多么明显地 有助于或妨碍了 语义落地,而不是从一个句法算法的一致性与否的角度。

白:
还是那句话,落地是有潜台词的,站在什么legacy的山上唱什么歌。最后是legacy主导一切,落主导一切,地是啥反而可以不care了。

李:
那是。我是站在 sentiment,或 IE 的legacy 上。

白:
不对,IE/sentiment还是地,不是落。

李:
地 就是 IE (sentiment 也是 IE),落就是 subtree patterns 的 matching白硕:

白:
subtree自身的局限决定了落的局限
我大概4-5年前放弃subtree的。
我当时起名叫 ppt:partial parse tree

李:
结构匹配
聚焦就是这么来的。
叫不叫 tree 无所谓 实际是个 sub-graph,我们以前也叫 svo search or svo retrieval or svo matching,有了这个 老鼠爱大米 就可以挖掘出来了。

白:
“他死去多年的消息终于曝光了”“他死去多年的弟弟终于平反了”

李:

这个是经典 minimal pair 了
同位subcat

白:
“专家对这种方法的意见还是不靠谱。”
“还是”歧义了。

李:

“还是” 还不是问题,“对” 是个隐患。
【对 np 的 n】 ,np or pp?

谁的意见?
专家的。
什么意见?
对这种方法的意见
什么不靠谱?
意见不靠谱。
谈的 topic 是?
专家。

专家作为虚的 topic 和 实的 mod 都 decode 了,parser 也算兢兢业业了吧。
流氓耍到了这个境界,也可以立牌坊了,正所谓:功到雄奇即罪名,流氓耍尽成英雄。

【相关】

 

【李白对话录系列】

中文处理

Parsing

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

《朝华午拾》总目录

 

 

【李白之12:修正乔老爷的保守派自由派之辨】

白:
“他们把总裁开掉的人训了一顿。”“他们把总裁开掉的人吃了一顿。”

我:
总裁开掉的那些人吃了一顿。
把总裁开掉的那些人吃了一顿。

“他们把总裁开掉的人吃了一顿。”属于合法非法边缘,语感上别扭:“他们”与“人”coreference,很多人不接受。

白:
同位语

我:
觉得别扭。
这些句子真心难。
试一试 parser。别扭的说法出来了(第二句),顺溜的句法反而走歪了(第一句):

白:
吃的宾语相谐条件太明显不满足。

他们戴着大盖帽的人很强势
他们把子曰诗云挂在嘴边的人对民间俚语一点兴趣都没有。

我:

“他们戴着大盖帽的人很强势”这句稍微好一点,不过这类句子总体别扭是因为有更简约明了的说法在竞争:

他们戴着大盖帽的人很强势 --> 戴着大盖帽的人很强势
他们戴着大盖帽的那些人很强势 --> 戴着大盖帽的那些人很强势

这个“他们”不仅多此一举,而且平添理解困难。

白:
理解是不应该裁定是否别扭的
生成可以

我:
道理是。但是别扭决定了统计性弱,因此理解系统忽略它后果不严重,甚至总体更有利(减少了弄巧成拙的可能性)。可惜,我们目前坏在没有忽略它。因为 local SVO 很正,想忽略也不容易呢。即便想降低 recall,减少对罕见例子的鲁棒性,也不容易,除非费力刻意为之 。。。

白:
我是在探索方法论问题:不回头的matcher需要看多远。

我:
知道,这是"消息"类的延长线。不过这个同位复杂了,需要回头。不好办。弄巧成拙的可能很大。

白:
如果必须在一个阶段内将错就错,那么等trigger到来之际,强行上车的乘客挤掉之前在车上的哪个乘客,还会不会翻掉更早的盘。

代词相当于有个坑,虽然和谓词隔了一层,但毕竟和“信息”类不同。
非代词同位结构不能这样用。

我:
道理明白。
道理是道理。那什么是什么。

as expected,前一句虽然对了,对得不开心。歪打正着,这不是第一次遇到了。在非设计的成功里,设计者不可能开心。而这一路不好设计。

前句各就各位,一路通畅。正因为此,后者只好把“把”落到定语从句的 head N 身上,又因为“把”的句法强势,“。。。那些人”成了盘中餐。哈,荒诞不过如此,但parsing 的逻辑线条却是清晰的。

白:
这里有个逻辑顺序问题。“把”怎么摆布,是有余地的,“吃”做逻辑宾语的语义不相谐,却是没余地的。应该句法不到山穷水尽,语义不相谐的不要登场才是。

我:
这个说法实践中很容易把人带进坑的。
换句话说,白老师自己有一个路数,按照这个路数,这个说法没啥问题。可是 followers 如果不是那个路数,或不明白那类路数,把这个说法当原则去指导实践,九成以上就掉坑里了。比较容易 follow 而大面上不错的原则还是乔老爷的句法独立原则的修正:句法不到山穷水尽,语义相谐的不要登场才是。对比白老师原则:句法不到山穷水尽,语义不相谐的“不”要登场才是。

白:
实践中,语义不相谐又被采纳的基本是活用性质的修辞,它们都发生在“高确定性、低相谐度”那个区域。如果明明是活用性的修辞用法,但却发生在低确定性区域,只能证明句法本身出问题了。

我:
对啊。
“高确定性、低相谐度”那个区域是不小的一个区间。因此句法独立的做法也不是完全要推翻,适当使用还是有益的。

白:
@wei 这个乔老爷原则用在英语上。
汉语不灵。

我:
明白。但还是一个度的问题。
完全实行乔老爷,根本就没有语义相谐或不相谐的事儿,语义被句法踢得远远的,老死不相往来。Note 我的原则是对乔老爷的修正: 句法不到山穷水尽,语义相谐的不要登场才是。可见,在这个原则下,语义登场了,语义句法融合了。
白老师的原则也是融合,也是对乔老爷的修正或反叛。但一字之差,就是保守派和自由派之争。我的说法:作为原则,不到不得已不动用语义。不得不动用的话,动用相偕,而不是不相谐。这个说法是有一贯性的:(1)不到不得已不用语义,差不多就是让句法来主导,暂时不管谐不谐,这等于语义不谐但句法不错的已在网中,因此也就没有再查不相谐的必要了。毛姑姑,这样可以搞定英语的90%+,汉语的 80%+,那么剩下的句法搞不定的,句法出错的,就用语义相谐来细化(句法角色细化为逻辑语义:譬如 确定 agent 主语 vs instrument 主语)或修正(包括休眠唤醒)。这条路稳妥一些,至少感觉跌进坑的可能减少一些。

 

【相关】

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

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

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

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

【李白对话录之10:白老师的麻烦不是白老师的】

【李白对话录之九:语义破格的出口】

李白对话录之八:有语义落地直通车的parser才是核武器

【李白对话录之七:NLP 的 Components 及其关系】

【李白对话录之六:如何学习和处置“打了一拳”】

【李白对话录之五:你波你的波,我粒我的粒】

【李白对话录之四:RNN 与语言学算法】

【李白对话录之三:从“把手”谈起】

【李白隔空对话录之二:关于词类活用】

《李白对话录:关于纯语义系统》

中文处理

Parsing

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

《朝华午拾》总目录

 

【李白对话录之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博文一览】

《朝华午拾》总目录

 

 

【研发心得:sentiment 的诡异】

我:
domain 很有意思,今天 study 客服的数据,发现我们现系统 tag “loyal customer” as positive,但实际上几乎总是 negative 抱怨。因为很多人(包括我自己,譬如跟电话公司打交道的时候)的抱怨总是这样开始:
I am your loyal customer for n years, blah blah [complaints: how can u treat me like that]

还有一些有意思的发现:new 这个词并不是啥褒义词,第一即便原义有一丝褒,但太弱,用得也太多。更重要的是,这个词最常出现在 promotion 的广告里面。客户情报里面很少用它表示褒义。那么 brand-new 呢?似乎稍微褒一些,但也很灰色,放过它可能更好。还有一个词 叫 available,以前以为是好话,其实用起来很 tricky:说 no Pepsi available, 不是说的 Pepsi 的坏话,很可能是说的好话 ,抱怨的是这么好的东西怎么没提供呢。诸如此类,不看 data 不知道。

白:
这么好的数据,不神经,糟蹋了

我:
大而言之,语义是泥坑;具体到 sentiment,几乎就是粪坑了。跳进去不仅可能被淹死,还会被呛死。

我等着神经在shentiment上来一个绝活。

目前为止,对手的 sentiment 全部用的学习,用没用 神经 就不知道了,但他们的 data quality 实在不敢恭维。

还有就是: I would kill for Pepsi,这样的说法是强烈的褒义:NND 为了 Pepsi 让我杀人都可以。这个倒不难逮住,无论是 pattern 去拿它,还是数据够了去训练出来它。

白:
可怜的米国人

我:
记得还有这么一句: Hell no man, pepsi or die. 这是对 pepsi 的极度褒扬:没 Pepsi 毋宁死(与自由同价: 不自由 毋宁死)宋柔:

宋:
@wei 可见,要做情感分析,对于所处理的语言必须有相当强的语感。国内的人做英语的情感分析恐怕不容易。

我:
昨天说了 sentiment data 的貌似诡异的事儿,明明说的是正面的词“loyal customer”,却几乎总是抱怨,至少是客服领域:原来人在表达情绪的时候,不仅会正话反说,而且还会先退一步。

今天再说一个案例:care about(关心) 一般认为是正面的动词,甚至关心钱财,从正面角度也可以说明这个企业懂得为 stake holders 创造价值,可能是一个兢兢业业的好企业吧。但是在客服领域,绝大多数场合,这却是抱怨的开始。

"All AT&T cares about is money. Worst service ever."
AT&T is one of the most GREEDY companies I have ever saw. All they care about is the $$$$$.
"there aledged customer service is beyond ridiculous, they seem to care more about being paid than helping there customers"

等于说:你他妈只认钱,贪得无厌。

顺便一提,我也是 AT&T 很多年的“loyal”customer,完全认同上面的抱怨。看这家公司的账单,那真是跟天书一样,变着法儿跟你要钱。昨天来账单,我的电视涨了近30元,原来是 promotion 到期了,我就 call 他们,说,我们基本不看电视,时间和视屏都耗在网上了,不过是多年的习惯而已,你怎么一个月 charge 我 80 多刀,比互联网的 70 多刀的 charge 还大?你不给 discount,我就掐了电视算了。不过真要掐电视,领导怕不同意,如今的乐视盒子小米盒子啥的,节目虽多,还是不那么灵光,有时连不上。

结果客服说,现下没有新的 promotion 可以提供 discount,不过不久会有。说你要是电视少看,那就降一级吧,从 TV-family 降级为 TV-basic,那个才 19 块钱,来 20多个频道,你们也该够了。于是,我就降级了,然后一查看,说是TV 19 块,其实是 50 多块。什么 HD 费10快,receiver 费 15 块,录像费,等等等等。这种企业真该死。可是美国电信企业,好人不多,也就懒得挪动了。互联网+++ 再发达一些,这 cable TV 就该自生自灭了。

【相关】

舆情挖掘

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

《朝华午拾》总目录

【语义计算:没有语言学的计算语言学,NLP的亚健康现状】

我:
大而言之,实词(对应概念)之间,只要发生句法关系,逻辑语义上就有个说法。
作为总原则去操作,句法标签总带着一个逻辑语义标签的做法,是有益无害的(最多是逻辑语义那边不增加新的信息,给个 dummy 的逻辑符号,assuming 句法标签对于语义落地足够了)。
但反过来,我们都知道,有不少逻辑语义是建立在没有句法直接联系的实词之间的 所谓 hidden args, 语义中间件的主要任务就是挖掘出这些 hidden 的逻辑语义关系来。
还有一个突出的区别:对于句法 dependency,大体上要遵循一个老子的原则。而对于逻辑 dependency,这一条就废了:一个儿子有多个老子,对于逻辑是天经地义。因此这树形图也就变得诡异了。

白:
定语从句就是多个老子,用坑的话说,就是填一送一

我:
定语从句的老子儿子相互循环,直接对抗 acyclic 的天条,那是 DG(Dependency Grammar) 的 formalism 引起的。DG 有一万个好,在这一点上还是露出了皮袍下面的“小”来。不过虽然君臣父子乱套,看上去挺窝心的,实际操作使用上也无大碍。要是单单为了这一点就采纳了叠床架屋的短语结构,不值得。

白:
我不认为树或者DAG是动不得的天条。语义那头已经是这样了,句法why not

我:
我无异议。不过多数语言学家和逻辑学家看不惯乱伦。

白:
而且我现在的填坑体系里根本就没有树。天生允许多爹,允许loop

我:
总得有个数据结构 某种 internal representation 作为 output。我的老印搭档在实现这个 graph 的时候,遇到 loop,以前是 error,系统罢工。后来改成 warning。实践中我发现,这个 warning 对于 debug 还是有用的。遇到定语从句这种 loop by design 就忽略警告。但很多时候,那个警告帮助指出了多层规则系统的不合理之处。人的脑子蛮可怜,再有经验的语言学家,也看不过三步。因此在编码规则的时候,容易陷入局部思维。看到 warning 时候“回溯”,往往恍然大悟,原来全局上看,有些东西是不合理的,需要协调。

biao:
哥儿几个在这死磕语法似乎很难看到什么时候是出头之日。

liang:
据说,我们都是乘着“计算”这趟历史快车。跟着时代走。

白:
做股票可不是这样说哦,都是在讲“抄底”。

这要回归到一个老问题,状态机的学习。从非确定有限状态自动机到RNN只有半步之遥。从正则表达式直接编译到RNN的路径是畅通的。所以,规则和学习两条路都可以到达RNN。说得清的用规则,说不清的用学习,谁也不碍着谁。

我:
有数据的用学习 缺乏数据的用规则。

另外 说语法没有出头之日 是小看了咱语言学家。等到 dl 先打败我的 parser 再说不迟。想起奥巴马与希拉里当年党内初选,希拉里老说奥巴马做副手不赖,可以与她搭档跟共和党竞争。奥巴马笑说,你一路输在我后面,说什么呢?当然,这些与潮流相左的话没人当真。一律当成妄人或民科的鼓噪而已。好在在应用现场,最终还是系统说话。

白:
对标注来说,上量,和自洽,是同一个问题的两面。

我:
我信服dl的power 但文本标注和domain化的挑战 貌似没看到根本的突破。知识瓶颈 kills a cat。

白:
对我来说不存在两条路线竞赛不竞赛的问题。那个东西该长什么样是更重要的,这点一旦定下来,怎么弄成那个样都行。比如说,肯定不是树。所以树库再庞大也那个。

我:
端对端的理念是不要那个:不要结构 不要语言学。

白:
那只是表象 只不过把问题转化为中间黑盒子长什么样而已。

我:
问题是 结构的目的 是帮助克服domain化的挑战。没有结构 每一个nlp的应用就是一个独立的问题,就需要无止境的带标数据,到哪里去克服这个知识瓶颈呢?一千个应用需要一千种带标大数据。在我这里不需要 因为结构化了;我只要少量的数据样本 让我知道任务的定义即可。专家天生懂得举一反n,谁叫我们是人呢,linguists,domain specialists ......

白:
这真的是表象
因为黑盒子不是仅仅学习可以得到,对规则进行编译一样可以得到。

张:
李白的discourse 省略太多,求Wei的分析

白:
所以关键是黑盒子本质上有没有容纳结构的能力。黑盒子长的模样不对,容纳结构就不力。之所以一任务一标注一训练,是因为不了解黑盒子容纳结构的通用能力。
也是因为这样拆分有利于持续发论文

wang:
白老师今天高见,“句法关系不是树结构”,领教!但是常规大部分句子,用树结构表示还是可以表达清晰的,除非您列出的那些刁钻的句子。我认为那是语言学家功课还没有做好,这些看似异类的句子(其实是现实合法句),还没有语言学家的事先分类归属。我现在的观点(也许以后会改变),句法处理过程中可以不是树结构,但是最终结果还是树,而不能出现环。

我:
无所谓啦。
社会网络里 任何人都可能与任何人发生关系 何况语词?

白:
环必然会出现
定语从句在汉语中是个并非偏门的表达方式

我:
他喜欢的女孩
什么女孩? -- 他喜欢的女孩
他喜欢谁? -- 喜欢女孩

白:
这个环形结构的思想大约在1998年就形成了。当时是在范畴语法的框架内表述的。后来一直想把范畴语法发展成可用的mechanism,遇到诸多困难。最近几年才转向,把当时的一些精华嫁接到依存语法中来,弄了个不伦不类没名没姓的坑论。@梁 @赵 都有涉及这项工作。看到伟哥也果断打破树结构,拥抱俩爹,非常欣慰!董老师的框架,箭头方向和我一致:萝卜指向坑,修饰语指向被修饰语。伟哥的方向,随依存体系,反过来的。伟哥省略了小词。而在我的坑论里面,小词负载很重要的结构,“的”是构成定语从句环路的最核心节点。不仅“的”,像“地”、“得”之类也负载结构,也挖坑。

wang:
看来白老师这是深酿多年的酒了哈!希望这理论能取个好听的名字。更希望早日形成系统,发挥应有力量。

我:
【坑论】,不蛮好?
环形不明白的 问利鹏 。他自从解雇了小蜜 就聘了自家领导做手下,并与新手下约法三章:一切服从领导。

我:
说到填坑,HPSG 里面有个说法:
对于 args,当然是 head 挖坑(subcat),期待(expect)那些 args 填坑。是 head 找 args。但对于 mods,一切反过来,不是 head 找 mods,而是 mod 去找 head。
所以对于词例化的 HPSG,修饰语的词也挖坑 挖的是让 head 去填的坑。

刘:
为什么mod不能做head而把动词作为arg?

我:
但实际上我自己在 parsing 的操作中,两条路线都走过:
做过 head 去找 mods,大不了多几层,或来个循环。也做过 mod 去找 head。

mod 做 head 从语义表达上,是本末倒置吧,至少人看着不舒服。真要做,也可以做,可是 mods 是数量不定的,除非是短语结构,一层一层嵌套上来,让最远的 mod 做总 head。否则 怎么表达多 mods 对于同一个 vp 的填坑要求呢?能想到的办法就是让同一个 vp 或 s 可以有 n 个 mods 的老子(说的是依存关系的表达)。总之,一般认为还是 谓词 做 head,既做 args 的 head 构成 arg structure 作为语义核心,也做 mods 的 head,表达边缘的语义(修饰限定)。

白:
这里有模糊地带。
比如,马上种树,必然种树,肯定种树,会种树。
副词和情态动词的边界 情态动词就被认为是动词填情态动词的坑

范畴语法就是mod做head,比如形容词是n/n,你喂给它一个n,它吐给你一个经过修饰了的n。

副词就被认为是给核心动词戴帽子。我曾经坚持了很长时间喂一个吐一个的思路处理修饰词,后来证明有害无益。后来把方向扭过来了。

我:
喂一个吐一个的做法 早早年我导师刘老师就是这么做的。所谓名词组抱团(就是我们说的 chunking),就是从head N 开始往左一个一个的吃。情态动词与副词 有类似也有不同。说情态动词是 head 后面的动词是 dependent,这种处理有其优点。主要是情态动词与主语往往有一致关系,而且也常带有谓语的时体信息
但副词不同,让副词做 head 就有些反客为主了。

白:
这个地方是范畴语法和依存语法的重大差别。

我:
情态动词与后面动词,谁主谁副,很有说头。从句法上,情态动词做主,因为上述理由,最合适。从语义上(谓词的ontology),当然是后面的动词,因为情态动词是功能词,反映的是语法意义,概念意义很虚。当主语与谓语需要check语法上的一致关系的时候, 应该 check 情态动词。而当主语与谓语需要 check 语义一致关系(最典型的是主谓搭配关系)的时候,就必须 check 后面的动词。这是两个矛盾的要求。一般都在一个体系内部协调解决,确保情态动词与后面动词的 acessibility,适应不同的需求。

有时候想,白老师这个群里交流的这些体会、经验、理论和实践,算不算 CL 和 NLP 方面的学问呢?要说是学问吧,好像这种学问没处发表。(语言学的刊物那边或许有一些 room,但掌管语言学的学者,对语义计算好奇多于了解和欣赏。)计算语言学这边吧,一律的学习啊学习,或者深度啊神经,根本没人拿这个学问当回事儿,或者也听不懂。

这真是一个有意思的怪象。
所以我说岂止是隔行如隔山 同行也隔山。锤子不同,虽然做的是同一个事儿,也还是隔锤如隔山。白老师这样两边都不隔的,绝对是熊猫。

这种亚健康状态,终有一天会被领域认识到。

【相关】

科学网—计算语言学的尴尬

【语义计算:从神经机器翻译谈起】

【科普随笔:NLP主流的傲慢与偏见】

【科普随笔:NLP主流最大的偏见,规则系统的手工性】

【NLP主流的反思:Church – 钟摆摆得太远(1):历史回顾】

【Church – 钟摆摆得太远(5):现状与结论】

中文处理

Parsing

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

《朝华午拾》总目录

【从V个P到抓取邮电地址看 clear patterns 如何抵御 sparse data】

前几天的例子:V个P (挣个毛、挣个求、挣个妹,等)
P={P,屁,头,鸟,吊,jiba,妹,鬼,......}
可以看到,小数据为依据的规则系统,有时候比大数据训练的系统,可能更加有效:更精准,更能对抗 sparse data 从而提高 recall(具有 clear patterns 性质的语言现象,可以一网打尽,完全没有 sparse data 的困扰),模拟语言现象更加直接,因此也更加容易debug和维护。

在 IE 历史上,直到 MUC-7,当时表现最牛的 NE 系统 NetOwl 就是基于 pattern rules 的,几乎所有的统计对手都拿它作为拼杀的对象。NetOwl 从 SRA spinoff 出去想以 NE 为技术基础,进行商业运作,一开始在分类广告业拿下了一些业务,终究不能持续赚钱,后来被 SRA 收回,逐渐销声匿迹了。后来追随潮流,系统里面也混杂了机器学习的模块。

从此在学界就再也见不到规则系统了,哪怕是对于规则非常适用的某些 NE 任务:譬如 时间,数量结构,等。可见潮流之厉害,貌似所向披靡。但事物的本质和本性并没有改变,对于自然语言中的具有 clear patterns 的现象,依据小数据,经过人脑的归纳,行数据驱动去开发规则系统,仍然是如上述高效而高质量:工业界默默实行的人、团队和系统并不鲜见,只不过大家心知肚明,只做不说而已。

相对应,发动群众去标注大数据,然后用大数据训练一个系统如何?这是主流的默认、honored 的方法。如果数据足够大,其质量的确可以接近或匹敌规则系统。当数据量不理想的时候,就捉襟见肘了: 或者 underkill (由于 sparse data,漏掉很多统计性稍弱的变体)伤害 recall,或者 overkill (smoothing 过度,把不该抓的现象抓进),影响了precision。

什么叫有 clear pattern 的语言现象呢?举个例子,抓取邮政地址,这个工作我自己作为一个 fun project 做过。美国地址大体是 门牌、街道、城市、州、邮政编码,最后是国名,patterns 相当地 clear,可你可能无法想象上述 pattern 的构件变体之多,有些变体绝对是 long tails,再大的数据量也难涵盖其组合爆炸的本性。

如果你收集了一个巨大的美国地址库作为训练集(大数据),你完全可以设计一个学习系统来做这件事儿。而另一边,虽然也是 data driven,但只需要小数据样本,然后经过人的大脑去举一反三进行开发,最后到 raw data 的大数据中去验证反馈。可以拍胸脯的是,后一种办法做出来的系统绝对是高质量易维护,几乎天生地具有 sparse data 的免疫性。

云:
@wei , 地址parsing属于reg expressions就能搞定的事,我们大数据分析经常要做的事。这个和NLP没有多大的关系。 这是一个context free的grammer, 相对简单。

我: finite state, 是 regex 就搞定,但不少人还是训练。这是其一。
其二是,自然语言复杂性比起相对简单的地址识别,不过是多了几层而已。都可以 finite.  譬如,subcat 说需要 主语、宾语,还要一个宾语补足语,这与地址说需要一个街名、城市名和州名,也差不多。

云:
不一样的,
1. 街名
2. 城市
3. 州名
各自独立,互不依赖。
而主谓宾相互有上下文关系

我:
比喻都是跛脚的。anyway 二者都是 finite 装置可以搞定。地址由于其组件的独立性,利用 macros 调用,可以一层搞定,也可以不利用 macros 多层搞定。NL 通常要多层 finite 装置搞定。

其实我要说的是,自然语言看上去千丝万缕,复杂无比,但本性上、大面上是背后具有 clear patterns 的 monster。为什么自然语言有 clear patterns (所谓句法)在背后?乔姆斯基归结为 UG,是从娘胎里带出来的。有意思的是,语言学家看自然语言,看到的是章法,甭管这个章法多么地扑朔迷离。而没多少语言学训练的NLP工作者,往往看到的是一团纠缠不清的迷雾。

 

【相关】

中文处理

Parsing

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

《朝华午拾》总目录

【从IBM沃森平台的云服务谈AI热门中的热门 bots】

我:
哥仨老革命在去 IBM 的 traffic 中 去大名鼎鼎的沃森(Watson)系统探秘

洪:
讲者是这位印度籍女士:http://researcher.watson.ibm.com/researcher/view.php?person=us-vibha.sinha:

郭:
比较有意思的是她后面讲的三点:

1. LSTM based intent recognition and entity extraction

2. "tone" recognition
这里tone指的是从一句话(书面语)反应出的说话人的喜怒哀乐和处事方式等

3. personality recognition
主要基于心理学的分类,用200到2000条tweets训练


她重点强调的是,通过增加tone和personality的识别,人机对话可以有更高的可接受度。

我:
唐老师 诸位 汇报一下昨天的听闻。上面 郭老师也总结了几条,很好。我再说几点。
话说三位老革命慕名而去,这个 meet-up 一共才来了20几位听众吧 大概湾区此类活动甚多 marketing 不够的话 也难。据说北京的 AI 沙龙,弄个花哨一点的题目 往往门庭若市。

1. 没有什么 surprises 但参加沙龙的好处是可以问问题和可以听别人问问题,而主讲人常常在回答的时候给出一些书面没有的数据和细节。否则的话,各种资料都在网上(最后的 slide 给了链接),要写利人似的调研报告,只要不怕苦,有的是资料。

听讲的另一个好处是,主讲人事先已经组织好材料讲解,可以快速了解一个项目的概貌。

2. 特地替唐老师问了他钟情的 Prolog,问你们有用吗,在什么模块用。主讲人说,没有用。我说有报道说有用到。她说,她没听说,至少在她主讲的已经产品化的这个沃森 chatbot 的组建 toolkit 里面没有 Prolog。当然她不排除某个小组或个人 在沃森的某个项目或模块用到。IBM 对 AI 的投入增大,在沃森的名号下的各种研究项目和小组很多。

马:
我问过了IBM中国的,在沃森参加电视节目版本中没有用prolog,但是后续的版本中,确实用到了prolog

陈:
它是很多services构成,用不会奇怪,尤其是某些既有系统

我:

3. 现在不少巨头都在 offer 这样的 toolkit,问微软 offer 的 cortana 的 toolkit 与你们沃森的这套有啥不同。回答是,非常类似,不过她自认为沃森质量更好。亚马逊也有类似的 offer。

所以回来路上,我们就谈到这个 bots 遍地开花的场景。郭老师说,现如今谁要想做一个领域内的 bot,或自己的 app 做一个 bot 接口,根本就不需要编程。只要准备好领域的 experts,把数据准备好,用这些巨头的工具箱就可以构建一个出来。也一样可以 deploy 到 messenger 或嵌入其他场景,这几乎是一条龙的云服务。

当然 用这些服务是要交钱的,但主讲人说很便宜很便宜的,郭兄说,真用上了,其实也不便宜。便宜与否放一边,至少现如今,bots 的门槛很低,需要的不是软件人才,而是领域数据的人。于是,我看到一种前景,以前毕业即失业的语言学家、图书馆业人士,将来可能成为 AI 的主力,只有对数据和细节敏感的人,最终才是 AI 接口的血肉构筑者,反正架构是现成通用的。这个细想想是有道理的。这是沃森 API calls 的价格。

我:
这就回到我们以前议论过的话题。AI 创业,如果做平台或工具箱,初创公司怎么敌得过巨头呢?我觉得几乎是死路。

大而言之 做平台和工具箱创业的,历史上就没见过什么成功案例(不排除做了被收购那种,那也是“成功”,如果你的技术有幸被巨头看中:其实昨晚介绍的沃森系统的一个重要组件 AlchomyLanguage 就是收购的,洪爷知道收购的来路和细节)。

白:
麦当劳玩法,方便,质量可控,但绝非美食,虽然是“美”食。

我:
不错,这些巨头的 offerring 都是麦当劳式的流程。创业的空间,从工具角度,可以是中华料理的配方辅助工具之类。不过,还是那句话,最好绕过平台本身创业的思维,而是用巨头的工具或者自家建造匕首去做领域的 AI,这样的创业应该具有更大的空间和更多的可能性。

对于 NLP(AI之一种) 我写过 n 篇博文强调,所有的 offshelf 的平台和toolkit(譬如 历史悠久的GATE),甚至一个小插件(譬如 Brill Tagger or some Chinese word segmenter)都不好用。可以 prototyping 但如果稍微有点长期观点 要建一个大规模的NLP的应用,还是一切自家建造为好。当然,自家建造的门槛很高,多数人造不起,也没这个 architect 来指挥。但最终是,自家建造的胜出,从质量上说(质量包括速度、鲁棒性、精度广度、领域的可适应性等关键综合指标)。

巨头的工具箱的产品 offers 一开始也不赚钱,但他们的研发积累已经做了,且还在不断投入,不产品化成工具箱不是傻瓜吗,赚多少算多少。如果真到了AI bots 遍地开花的时候,他们凭借巨大的平台优势,赚钱也是可能的。小公司这条路没门吧。如果你的 offer 的确 unique,譬如是中华料理,譬如是伟哥的 parsing,你可能会吸引一批使用者。但想赚钱必须有规模,而 component tech 或平台工具之类,在小公司的环境中,是成不了规模的。所以不要想赚钱的事儿。

赚钱靠的是产品,而不是工具,这是AI创业铁律。

当然,通过平台或工具打出影响,做 marketing,曲线救国创业,另当别论。
回到 meet-up:

4. bots 构建的核心当然是 conversations 的训练工具。IBM沃森的工具用的是深度神经。

对于 bots,input 是确定的,就是用 bots 的人的输入。自然语言的语音也好 文字也好,语音反正也要转化为文字 所以我们面对的就是人机接口中的“人话”,理论上无止境 千变万化。

bots 的 output 呢?

在目前的框架里,在绝大多数实际场景,这个 output 都是以极为有限的集合
最典型的案例是为 apps(天气、股票、时间之类) 做 bots 作为 apps 的人机接口,
其 output 就是 app 里面的 commands 集合。于是 bot 产品定义为从无限到有限的映射,这是一个典型的分类场景。于是沃森提供这个深度学习为基础的工具帮助你训练你所需要的 classifiers,这是标准做法 无甚新意。

数据越多,分类质量越好。千变万化的死敌是稀疏数据。好在对于 bots,数据的收集会是一个边使用边加强的过程。如果你的 bots 开始有用户,你就形成了正循环,数据源源而来,你不断打磨、训练,这些都是可以 streamline 的流水作业,就越来越好。Siri 如此,Echo 也如此。

白:
分类本身是不带参数的,而bots的应对必须是带参数的,这是硬伤。
拿分类来做对话是看得到天花板的。

我:
I cannot agree more :=)

这里其实是有历史渊源的。IBM 做问答,一直是把问题简化为分类。18 年前我们在第一次 QA 竞赛(TREC-8)中交流 就是如此,这么多年这个核心做法一直不变。当时我们的QA成绩最好,得分66%,沃森的系统印象是40%左右,他们的组长就追在后面问,我们思路差不多呀,都是 question intents(我们叫 asking points,比多数 intents 其实更聚焦),外加 Named Entity 的support。我说我们还用到了语言结构啊。

直到今天他们仍然是没有句法分析,更甭提深度分析。他们当年的 QA 就是基于两点:
1. 问句分类:试图了解 intents;2. NE。有了这两条,通过 keywords 检索作为 context,在大数据中寻找答案,对于 factoid questions 是不难的(见【立委科普:问答系统的前生今世】)。这就是沃森打败人类的基本原理,一点也不奥秘,从来没有根本改变。现在这一套继续体现在其 bots 工具箱 offering 里面。

洪:

昨晚Watson讲座听,
今早广告已跟进。
IBM可真下本,
今天我试Bluemix云。

我:
2.  因此 conversations 训练,其核心就是两条:一个是 intents classification (这个 intents 是根据 output 的需求来定义的),一个 NE,不过 NE 是他们已经训练好的模块(NE有一定的domain独立性),用户只是做一些微调和增强而已。

顺便插一句,这几天一直在想,AI 现在的主打就是深度神经,所有的希望都寄托在神经上。但无论怎么神经,都不改 supervised learning 的本性:所以,我的问题是:你怎么克服缺乏带标大数据的知识瓶颈?

ok 你把机器翻译玩转了。因为 MT 有几乎无限的 “自然” 带标数据(其实也不是自然了,也是人工,幸运的是这些人力是历史的积累,是人类翻译活动的副产品,是不需要开发者花钱的 free ride)。可其他的 ai 和 nlp 应用呢,你还可以像 MT 这样幸运 这样享用免费午餐吗?

现在想,紧接着 MT 的具有大数据的热门应用是什么?非 bots 莫属。
对于 bots,数据已经有一定的积累了,其最大的特点在于,bots 的使用过程,数据就会源源而来。问题是 这些数据是对路的,real life data from the field,但还是不带标啊。所以,bots 的前景就是玩的跟数据打仗:可以雇佣人去没完没了地给数据做标注。这是一个很像卓别林的【摩登时代】的AI工厂的场景,或者是列宁同志攻打冬宫的人海战术。看上去很笨,但可以确定的是,bots 会越来越“智能”,应对的场景也越来越多。应了那句老话,有多少人工,就有多少智能。然而,这不是、也不应该是 唯一的克服知识瓶颈的做法。

毛:
嗯,有多少人工,就有多少智能。这话说得好。

我:
但这个景象成为常规 也不错 至少是帮助解决了一些白领就业。是用高级的专家知识去编写规则来提高系统质量,还是利用普罗标注去提高质量,从帮助就业和维稳角度看,几乎蛮力似的深度神经对于标注大数据的无休止的渴望和胃口,对于社会似乎更为有利。为了社会稳定和世界和平,我们该看好这种蛮力。我们做深度分析和理解的专家,试图尽可能逼真地去模拟人的智能过程,但对蛮力也应该起一份敬意。

将来的AI,什么人都可做:1. 你发现一个领域的 AI 需求; 2. 你雇佣一个对这个需求可以形式化定义的设计家; 3. 你调用巨头的一个通用的 AI 工具箱(譬如 TensorFlow) 或面向专项产品的工具箱(譬如 bot 的沃森工具箱) 4 你雇佣一批失业但受过教育的普罗,像富士康一样训练他们在流水线上去根据设计家的定义去标注数据、测试系统,你于是通过 AI 创造了价值,不排除你的产品会火。因为产品火不火已经不是技术了,而是你满足需求的产品角度。

3. 但是 正如白老师说的 这种用分类来简化问题的 AI 产品化,走不远。它可能满足一些特定领域的特定的需求 但是后劲不足是显然的。其中一个痛点或挑战就是,这种东西走不出三步,三步以上就抓瞎。如果你的应用可以在三步之内就基本满足需求,没问题。

bots 最显然的有利可图的应用场景是客服。一般而言,bots 取代和补充客服是大势所趋,因为客服的知识资源和记忆,根本没法与我们可以灌输给 bots 的知识来相比。利用知识去回答客户疑问,人不如机,是可以想见的。但是 观察一个好的客服与客户的交互 可以发现,三步的交流模型是远远无法满足稍微复杂一点的场景的。三步的说法是一个比喻,总之是目前的工具箱,对于较长时期的对话,还是束手无策。

bots 对用户话语的理解简化为 classification,以此为基础对用户的回答就不是那么简单了。目前提供的做法是:因为 intents 是有限的集合,是 classification 的结果,那么对于每一个 intent 可以预知答案(存在数据库的 hand-crafted text snippet)或回应(譬如展示一个图,譬如天气app的今日天气图表)。 这些预制的答案,听上去非常自然、生动甚至诙谐,它们都是领域专家的作品。且不说这些预制的 snippets,如何根据classification hierarchy 本身需要做不同组装,在存于数据库里面的核心应答的预制以外,还可以加上情感的维度,还可以加上 personalized 的维度,这些都可以使得对话更加人性化、自然化,但每加一个维度就意味着我们开始接近组装式策略的组合爆炸后果。三步、三维以上就无法收拾。

我问主讲人,你的这些预先制定好的应答片段,按照你的工具的组装方式,不就是一个 decision tree 吗?回答是,的确,就是一个 decision tree 的做法。然后她说,有不少研究想突破这种应答模式,但都是在探索,没有到可以产品化工具化的阶段。

郭老师说,谁要是有本事把人机的 “自然对话”能够延长到 20 分钟,换句话说 就是突破图灵测试,谁就是 AI bots 的真正破局者。如果你证明你能做到,巨头会抢着来高价收购你的。这是所有做 bots 的所面临的共同挑战。

据说小冰最高记录是与单一的人谈了九个小时的心。但那不是真正的突破,那是遇到了一个异常人类。正常的人,我的体会是两分钟定律,你与小冰谈话 超不过两分钟。我试过多次,到了两分钟,它所露出来的破绽就让你无法忍受,除非自己铁心要自我折磨。其实 工业界要求的连续对话,不是小冰这种闲扯。而是针对一个稍微复杂一点的任务场景(譬如订票)如何用自然对话的假象去把相关的信息收集全,来最大限度地满足客户需求。

累了,先笔记和评论如上。其余还有一些有趣的点儿可以讨论,以后再说。这是交给我们唐老师的作业。

郭:
Amazon’s $2.5M ‘Alexa Prize’ seeks chatbot that can converse intelligently for 20 minutes

洪:
亚马逊正设大奖,
chatbot赛悬赏。
对话若超廿分长,
两半米粒到手上。// 2.5M

【相关】

立委科普:问答系统的前生今世

Amazon’s $2.5M ‘Alexa Prize’ seeks chatbot that can converse intelligently for 20 minutes

微软小冰,两分钟定律

中文处理

Parsing

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

《朝华午拾》总目录

【语义计算:从神经机器翻译谈起】

我:
机器翻译所蕴含的厚重和神圣,在新一代是不可理解的

刚入行的时候做的是外汉机器翻译,一直不大敢碰汉外,原因是汉语语法不好形式 化,感觉太难了,当时想,这辈子怕都没指望了。 现如今,汉语语法还真没有见到多少大规模形式化能实用的,按照以前的路子,那汉外机器翻译必然寸步难行,因为汉语分析是前提,然后才是转换和生成。

可谁能想到,机器学习越来越牛,人工翻译的双语资料作为人类活动的副产品,几乎“天然地”源源不断而来,这就成就了深度神经机器翻译。什么分析,什么生成,统统绕过去,端对端直接施行转换。Google Translate 因此可以在同一个模型架构下,支持几十种语言的互译。这简直就是神迹。可却是技术的事实。尤其不可思议的是,以前认为最难的的汉外翻译,反而进步最大(至少汉英是如此)。 译文再不济,也给你个大概齐,不仅立等可取,而且还完全免费。比你学两年外语,带上词典死磕还一头雾水要强多少。除了天堂,天下哪里有这样的美事?

机器翻译(MT)是自然语言处理(NLP)领域历史最悠久的应用方向,从上 个世纪50年代初发轫,承载了中外几代不知道多少人的青春和梦想,也包括青年时代的立委。如今,梦想化为现实,嵌入式机器翻译在互联网无孔不入,已经成为普罗大众手中招之即来挥之即去的便捷工具,每时每刻在默默服务着千百万互联网用户。女儿学汉语用它,学西班牙语用它,去日本动漫网页也用它,用到对它熟视无睹,把机器翻译视为理所当然。只在翻译错得离谱的时候才意识到它的存在,不时报以嘲讽:真笨。可机器翻译呢,谦谦君子,玉树临风,虚怀若谷,无怨无悔。对于已经天然成为女儿这代人生活一部分的机器翻译,我满腹机器翻译的历史和掌故,却不知如何给她诉说。耳濡目染,她从我断续的话语中似乎隐隐觉得机器翻译对于她父亲的一生具有特别的意义,可是我还是无法象对同辈人那样娓娓道来,如数家珍,传达出我内心深处的机器翻译所蕴含的那份厚重和神圣。不仅仅是代沟,是技术的跨越式发展造成了两代人迥然不同的视角,令人感慨。 from 【机器翻译万岁

刘:
@wei 深有同感。科学技术的发展真是出人意料,做梦也想不到机器翻译能到现在这个程度。我一个刚入门不久的学生跑NMT,轻松超过Moses十几个点,仅几年前,这还是天方夜谭,要是超出Moses五个点绝对可以发最高等级的论文、拿博士学位了。
而且现在用现有的深度学习工具编NMT程序,代码量跟SMT相比都很小,不像写一个SMT程序,要花大量时间处理小的细节。深度学习的工具本身太强大了。同一套工具,稍加修改,既可以做机器翻译,也可以做语言识别、图像识别。
深度学习并没有解决所有问题,但为我们解决一些难题提供了全新的框架,带来了新的希望,潜力还远远没有挖掘完,这给我们这些搞研究的也带来了巨大的机会

我:
很羡慕ing @刘 那天与讯飞的院长谈这事儿,他也是超级兴奋,说以前以为大约四五年会有全方位的大突破,神经在大系统大应用上全面开花。现在他确信只要2-3年就可以了,到时候很多事情会超出我们的想象。他是这样描述的,非常由衷。感觉是作为一线领航者,他看到一种排山倒海的科学潜力正在转化为技术力量,面对巨大机会忍不住激动。这很感染人。这种心态我可以体会。

biao:
@wei  所以,哥儿几个在这死磕语法似乎很难看到什么时候是出头之日。

科大讯飞的确有过人之处。起码它的语音输入可以让你节约大量时间。
前几天有人在这里抱怨说输入码字太累。实际上现在语音输入完全可以帮助你非常轻松的输入,而且效果很好。
上面这两段话完全是讯飞语音输入的。一个字没有改,十几秒钟搞定,非常轻松。

刘:
我不敢预测哪些问题能解决哪些不能,但总体的进步是可预期的

我:
说语法没有出头之日 是小看了咱语言学家 等到dl打败我的 parser 再说不迟。
事实是 迄今全世界最牛的 dl syntaxnet 仍然是我手下败将
另一个事实是 迄今没有sentiment系统在 open domain social media 这个几乎最难的 space,能赶上我们。Not even close :the margin is almost 20 percentage points apart

所以我跟讯飞院长说 你我是同一类人。不过你在舞台中央 我在野。但是论信心和对nlp的展望 心态和世界观惊人的一致。要不咱们互补、合作、合流,要不咱们就来个友谊赛,我就不自量力一哈。反正论年龄 我输得起 你们输不起 =)
(我输了 就钓鱼去 乐见ai一统天下于dl if they truly deliver as well as nmt did
可是 nmt 有data 而大多数 nlp 没有那么多clean labeled data 啊)

biao:
语法分析最大的问题是不灵活。鲜活的语言千变万化。一句话稍微变个说法,语法分析就抓狂了。

我:
根本不是这回事 你的理解有误

白:
死守固定语序才这样 但语法分析死守固定语序已经是老黄历了
你变个说法给伟哥试试 他会告诉你一个robust的句法分析器能做到什么

从“计算”角度说,黑盒子容纳结构的能力是最本质的。从“语言”角度说,结构应该长什么样,比其他的事情更值得关注。
两栖人

biao:
先分析一个名句:
”其为人也孝悌而好犯上者鲜矣。”

我:
如果变个说法 语法就抓狂 要这劳什子干嘛。语法的目的不就是为了对付变体吗

白:
大战风车,其乐无穷

我:
你弄句文言做啥?这个 sublanguage 里面没钱,开发他有卵用。
“卵” 属于 P 系列:是现代汉语口语的脏字否定限定词,== fucking no,社会媒体口语的这个 sublanguage 我们倒是对付了,不妨试试。

biao:
你的机器怎么知道它是文言文,半文言文,还是白话文?他们都是中文。

我:
不在一个频道 算了

biao:
“工欲善其事,必先利其器”。这是文言文还是白话文?大量的成语是文言文还是白话文?金庸的小说是文言文还是白话文?四大名著,是文言文还是白话文?鲁迅的文章是文言文还是白话文?
这些都是在现实生活中大量遇到的语言素材。绕是绕不开的。

白:
高频小体量,适合死记硬背。文言文句法上并不比白话文更难处理,某种程度上还容易。文言文没有白话文里那种NP、VP串烧。有词类活用,但有规律可循。

我:
文言文长句 相对少。排比 平行用法普遍 也是形式痕迹。还有些非常固定的文言句式 用到特定的文言虚字 可以借力。等退休以后 玩玩文言文应该是一个不错 time killer。文言词汇量大大减小,字基本就是词,但每个字的用法 包括活用或引申用法 就多一些。

白:
关键看WSD一选出错率会不会增大?

我:
有不小比例的wsd,等价于pos,pos搞定 就搞定:老吾老。及物动词的“老”是一个活用义项,词典可以绑架为“尊崇”、“孝顺”之列,与作为形容词的“老(old)”的本义,以及作为名词的“老(the old,senior,parents)”都不同。
文言处理也少了切词错误的干扰 基本没可切之词。字驱动的路子,有很多字典工作可做

白:
有些歧义是简化字造成,之前古籍并无。比如后,简化之前就有这个字,就是皇后的意思。以后的后,之前是“後”。做pos也好wsd也好,要考虑文本的基准。

我:
所谓更多的活用,可以在字典假想如果处于某种活用,它义项是什么,然后绑架,倒也便利。另外,现代汉语对虚词的省略 似乎大于文言中虚字的省略,这也是文言处理的便利,虚字的频繁使用,给确定句子成分的边界创造了条件。

weidong:
娱乐一下:陈亢问于伯鱼曰子亦有异闻乎对曰未也尝独立鲤趋而过庭曰学诗乎对曰未也不学诗无以言鲤退而学诗他日又独立鲤趋而过庭曰学礼乎对曰未也不学礼无以立鲤退而学礼闻斯二者陈亢退而喜曰问一得三闻诗闻礼又闻君子之远其子也
标点断句先

我:
试了一下我的 parser,满篇都是 Next ;=)

weidong:
没有引号连话到哪儿结束都猜半天

我:
索性也试试前面要求的测试


其为人Next 也孝悌,而好犯上者 Next 鲜矣。

以前学美国之音英语900句,都说有900句,英语的基本句型就搞定了。这些年,我都 unit tested 近两万句了。是不是差不多该搞定了?最近翻阅以前内部论坛的帖子,有这么一贴,好玩:

池子里说说无妨,万一明年中文核弹爆了,你们可以作证立委就是钱学森。
作者: 立委 (*)
日期: 2012/04/18 23:13:13
不说的话,将来被代笔,说中文核弹不是我的作品 ,找个旁证都找不到。 

换句话说,各路身怀绝技的侠客剑法可能不同,但有个共识:就是我们面临技术核弹大爆炸的前夕。至于AI泡沫,那是商业上的炒作,技术的发展与成熟只是给了它一个炒作的话题而已。

 

【相关】

机器翻译万岁

【语义计算:没有语言学的计算语言学,NLP的亚健康现状】

中文处理

Parsing

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

《朝华午拾》总目录

 

【Parsing 的命根子是 subcat,逻辑的和语言的】

细说起来有两类句型分类:一类是逻辑上的,一类是语言上的。二者相互呼应,前者是内容(output 目标,也隐含了语义条件),后者是形式(input 的句法条件)。

逻辑上说,一个谓词需要几个 arguments,是由这个谓词的意义决定的,譬如 “哭/笑” 这样的谓词概念,需要一个施事 argument 来表达谁哭了笑了,所谓不及物谓词。

“爱/恨” 这样的谓词需要两个 arguments (所谓及物谓词),表达 谁 爱/恨 谁了。
“给/赠与” 这样的谓词,需要三个 arguments,表达 谁 把 什么 给 谁 了。
“认为/声明” 这样的谓词,需要两个 arguments,其中一个是实体,表达谁的认为/声明,第二个 argument 要求一个 statement (嵌套的谓词结构),表达认为/声明的内容。

这种逻辑上的谓词子类的区分是语言通用的,因为它的根基是概念及其意义的完整性(谓词加上arguments就是所谓的argument structure,表达的是一个 statement)。

逻辑工作方面的集大成者就是董老师的 HowNet。

以上的逻辑谓词子类表现在不同语言,就是语言学上的 verb subcategories 及其 patterns。到了语言这个层次,辞典中一个动词的动词句型子类可以标示以下的subcategorization 的信息(及物不及物只是其简化标识,vt/vi, 牛津词典曾经用20多个子类标注每个词条的subcat,v1,v2, ..v21,...):

1. 能带几个 arguments
2. 这些 arguments 要求处于什么形态(主格,宾格,要什么介词,处于什么位置)

词典中这种子类信息的标注直接决定了一个parser的质量,是非常关键的预示信息。对于学习英语,熟悉这些句型信息也非常有用。我以前教英语的时候,经常要求学生看牛津词典或者朗曼词典后面的句型附录(朗曼的分类略有不同,印象是分了30多子类),务必熟悉这些句型的概念,然后在翻阅词典时候注意其标注。 一个词经常分成n个义项,每个义项下的subcat分类标注往往不同,回去翻翻词典就看到了。

这后一步的工作,英语和中文我一直在做,n年了。董老师的中文系统目前也在做。只做不说的白老师或其团队也一定在做。subcat 是 quality parsing 的命根子。大家具体做法可能不同,但大而言之,还是差不多的。就是我们以前说的句法词典化。

 

【相关】

中文处理

Parsing

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

《朝华午拾》总目录

 

【一日一parsing:自然语言太难了吗?】

今天微博同仁圈子里盛传下面这个年末搞笑的帖子,标题是 #自然语言理解太难了#,其实一点不难,可见即便是圈子内人,如果没深入做过parsing,有时也被表象迷惑。

#自然语言理解太难了# 转发段子:今年基本已经结束了,我刚在群里问了很多朋友今年挣钱了没?大多朋友都有挣,而且挣得五花八门:有挣个屁的,有挣个锤子的,有挣个毛的,更有甚者挣个妹的,简直奢侈之极!最恐怖的是挣个鬼的!有的还可以,挣个球,下午我碰见一朋友,问今年挣了吗?他望着天空喃喃自语:挣个鸟!
看吧,只要肯努力,什么都能挣到[坏笑]

liu:
乐呵乐呵,语言理解很不易啊。

白:
真心不难
基本上可穷尽

liu:
“挣”后面的惯常搭配和选择限制反而简单?

我:
早已解决

liu:
但是,“挣一辆车”就是它本身的含义了。

我:
简单确定的pattern 有限的词汇可填充项 这是 pattern 的拿手好戏

liu:
这倒是的,它的“能产性”不高。

我:
如果训练 有可能漏掉低频率填充项 sparse data
但对于确定性的 patterns 规则可以一网打尽。

liu:
蕴含、推理方面的理解反而是重要的?

我:
一辆车 走通则
屁屎鸟、妹妈奶奶等 走特定规则
我们做社会媒体分析的 这类玩意儿早涵盖了

白:
“规则+例外”的总描述长度最短,就踩到点儿上了。高频用变量泛化,低频用实例枚举。

我:
parse results

图上只是显示这个结构被抓着了,没有显示系统“理解”这种用法的内部表达:实际上这个 chunk 抓住时,系统也就知道头词是动词“挣”,也知道这是一个口语化的动宾否定式,用了脏字,模式匹配规则“绑架”了这一切。

WD:
放个屁 长个毛 真歧义

白:
不是只针对这些话,是一般性的philosophy
这件事跟“挣”关联弱,跟“个”关联强。

WD:
鬼都挣不着
跟”什么女人“类似,有所谓元语否定用法
就是拒绝前一句话的陈述恰当性 负面评价功能
什么一流大学=什么破大学
甲:挣了不少吧。乙:挣什么屁钱啊,都……

我:
“屁”“鸟”之类 有一个英语 no 的用法,是汉语的np 否定式。一般认为汉语没有 否定限定词 no,其实汉语有 不过汉语的 no 混杂着 负面情绪 用的是脏字。而英语的 no 很单纯。
屁事儿: Nothing
没见屁人。在 “没” 后 脏字成了 any,避免double negative 吧,英语也有:
Ain't see nobody == didn't see anybody

从这个例子说开去:“v个P”,P={P,屁,头,鸟,吊,jiba,妹,鬼,......}
从类似的现象可以看到,小数据为依据的规则系统,有时候比大数据训练的系统,更为有效:更加精准,更加能对抗 sparse data 因此而提高 recall(具有 clear patterns 性质的语言现象,可以一网打尽,完全没有 sparse data 的困扰),模拟语言现象更加直接,因此也更加容易debug和维护。

在 IE 历史上,直到 MUC-7,当时表现最牛的 NE 系统 NetOwl 就是基于 pattern rules 的,几乎所有的统计对手都拿它作为拼杀的对象。NetOwl 从 SRA spinoff 出去想以 NE 为技术基础,进行商业运作,一开始在分类广告业拿下了一些业务,终究不能持续赚钱,后来被 SRA 收回,逐渐销声匿迹了。后来追随潮流,系统里面也混杂了机器学习的模块。https://www.netowl.com/our-story/

从此在学界就再也见不到规则系统了,哪怕是对于规则非常适用的某些 NE 任务:譬如 时间,数量结构,等。可见潮流之厉害。反潮流者不得食,发不了论文,拿不到 grants,带不了学生,自然自生自灭。

但事物的本质和本性并没有改变,尤其是对于自然语言中的具有 clear patterns 的现象,依据小数据,经过人脑的归纳,数据驱动去开发规则系统,仍然是如上述,具有高效高质量。工业界默默实行的这类人、团队和系统并不鲜见,只不过大家心知肚明,只做不说而已。犯不着顶风作案。相对应,发动群众去标注大数据,然后用大数据训练一个系统如何?这是主流的默认 honored 的方法。如果数据足够大,其质量的确可以接近或匹敌规则系统。当数据量不理想的时候,就捉襟见肘了: 或者 underkill (由于 sparse data,漏掉很多统计性稍弱的变体)伤害 recall,或者 overkill (smoothing 过度,把不该抓的现象抓进),影响了precision

什么叫有 clear pattern 的语言现象呢?举个例子,抓取邮政地址,这个工作我自己作为一个 fun 做过。出来的系统请邮局员工测试过,他们啧啧称奇。美国地址大体是 门牌 街道 城市 州 邮政编码 最后是 国名,patterns 相当地 clear ,可你可能无法想象上述 pattern 构件的变体之多,有些变体绝对是 long tails 再大的数据量也不可能涵盖其组合爆炸的本性。如果你收集了一个巨大的美国地址库作为训练集(大数据),你完全可以设计一个学习系统来做这件事儿。而另一边,虽然也是 data driven,但只需要小数据样本,然后经过人的大脑去举一反三进行开发。可以拍胸脯的是,后一种办法做出来的系统绝对是高质量易维护,天生地具有 sparse data 的免疫性。

 

自然语言的并列: preference semantics at its worst

NLU、NLP 多年来还有一个公认的难点,就是并列结构(conjoined structure)。并列在思维逻辑里没有地位,它是语言表达的产物。并列是语言学中最不讲道理的程咬金,它总是横插一刀,而且任性,在任一层次。一切的 subcat arg structures 或 mod-head patterns 都必须为它让道,否则就堵塞交通,让 parsing 的路线断链。然而,如果没有并列,自然语言就会难以容忍地单调枯燥,尽失精简。

举个简单例子:

1027a

这句话逻辑上展开以后怎么样呢?

颈椎间盘突出症的最常见和最典型表现是一侧颈肩部及上肢的酸痛
==>
颈椎间盘突出症的最常见表现是一侧颈肩部的酸痛
颈椎间盘突出症的最典型表现是一侧颈肩部的酸痛
颈椎间盘突出症的最常见表现是上肢的酸痛
颈椎间盘突出症的最典型表现是上肢的酸痛

这才牵涉两个并列,一个句子出现五六个甚至上十个并列, 并不鲜见。语言不是逻辑。没有并列,语言面临组合爆炸式啰嗦。很难想象,传统的单层 parsing 系统,譬如教科书上经典的乔姆斯基式 CFG-based chart parsing,可以把各种并列处理妥帖。

Conjoin can be so f* hierarchical, even for a very deep, multi-level parsing system: conjoin remains a challenge if not very carefully/skillfully handled by a very experienced linguist 'cause the boundaries are tough to identify and they just appear at any levels at will.  The conjoined elements are semantically parallel but the parallelness, which ideally should be used as conditions to help identify the conjoined structure and its scope, is unfortunately in practice all relative and fuzzy, which can hardly be enforced. food can be conjoined with food, of course, but look at this:

我喜欢肥肉和哲学。

food and knowledge, totally different monsters of semantics, can also be conjoined, it is preference semantics at its worst.

OK, I am not going to elaborate on solutions, which should be a long article by itself.  This post serves as an introduction of this linguistic monster, to arouse the awareness of linguistic challenges in natural language parsing.

 

【相关】

中文处理

Parsing

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

《朝华午拾》总目录

 

【立委科普:如何自动区分同一批词表达的不同意义?】

这是上一篇自然语言理解(NLU)博客【如何自动识别同一个意思千变万化的表达】的姐妹篇。看上去似乎是同一个语言理解问题的两面,但实际上这个问题在自然语言领域的产生,很大程度上是因为一袋子词(bag of words)方法的流行引发的。此话怎讲?

本来,同一批词表达不同的意义是自然语言作为人类表达手段的题中应有之意。举个简单至极的例子:张三,李四,爱。是张三爱李四呢,还是李四爱张三呢?同一批词显然可以表达不同的意思。再如,用 “好”、“喝”、“酒” 造句,结果发现六种排列组合都是地道的汉语,表达了不同的意义:

好喝酒: love drinking alcohol
好酒喝: good alcohol to drink
酒好喝: the alcohol tastes good for drcinking
酒喝好: drink your alcohol to your satisfaction
喝好酒: drink good alcohol
喝酒好: drinking alcohol is good

好 (good/love/verymuch)、喝酒(分离词),两个词,三个字,四个义项,各种纠缠,不同语义。

大而言之,人类语言的词汇是相当有限的,表达日常用语99%+ 的词汇不过在万这个量级,而利用这些词来表达的不同意义是无限的。这种有限材料表达无限语义的本事就是所谓语言能力,这种能力的核心机制早已不再是谜,就是大大小小的文法(grammar)规则。自然语言深度分析(deep parsing)和理解,乃是利用词汇和文法去解析(decoding)语句的语义,区分不同意义蕴含在语义解析之内。主流机器学习的路线与传统的符号逻辑路线(又叫规则路线)的不同之处在于对词汇和文法资源的利用不同。前者最流行的一袋子词的模型利用了词汇,其对文法规则的模拟靠的则是粗鄙简陋的ngram近似(譬如,bigram 的“I love” 间接反映了主谓规则,“love you”则模型了动宾规则)。正因为主流的近似方法对于语言结构的模型太过粗鄙简陋,这才导致了不少主流系统难以区分“同一批词表达的不同意义”,这是所有一袋子词为基础的模型的命门。而这个问题在符号逻辑路线的 deep parsing 这边,从一开始就是直接的目标,一切 deep parsing 规则的建立都是直接模型人的语言理解过程。换句话说,主流的一袋子词技术虽然可以对文本的粗线条分类有效果,但面对同一批词的不同意义却容易捉襟见肘。而传统的规则路线利用 deep parsing,在这个问题面前显示了核弹般的威力。

好,我们撇开没有语言结构的一袋子词模型来看这事儿,问题于是简化为自然语言的经典问题:如何自动消歧?在讨论自然语言歧义的时候,我们总是预设的是同一批词或同一个词(某些消歧在中国老一辈NLPers,我的导师辈中因此也叫“同形区分”),因为不同词及其组合的意义不同是天然的,没有消歧的问题。

消歧的话题以前陆续谈过很多,大体的要点总结如下:

1.  同一种表达可能产生歧义是自然语言区别于计算机语言的重要特点,也是自然语言分析理解的难点所在。

2. 自然语言歧义一般分为两大类,所谓表达的多义就是这两类歧义的交织。一类是用词的多义(WSD,word sense disambiguation),一类是结构歧义(典型的结构歧义包括所谓 PP-attachement,譬如英语文句中的宾语后面的介词短语既可能是宾语的定语,也可能是谓语的状语)。

3. 结构歧义不难识别(identify),但消歧却不易,有时需要动用语言外知识,包括常识等。

4. 比较成熟的结构歧义的应对方法包括:(i)parser 通过 enriched subcat 的手段, 把某些关键的常识及其ontology暗度陈仓引进,在parsing过程中消歧; (ii)parser 只识别歧义,输出非限定性结构(non-deterministic structures),消歧留待语义中间件模块,甚或等到领域的语义落地模块再进行(很多时候这个消歧任务自行消解,没必要进行,因为歧义空间不在语义落地的聚焦雷达上);(iii)parser 采取默认路径,歧义的可能先行休眠,让词驱动的encoding埋下种子,等到后面的模块在一定的条件下唤醒。

5. 词汇消歧 WSD 是 NLU 的一个难点,但好在它总体上不影响 parsing,建议不在 parsing 和语义中间件时期做,可以留到语义落地的阶段,这样处理的好处是绝大多数 WSD 都不需要做功,因为他们不在语义落地的聚焦雷达上。

6. 留在聚焦雷达上的 WSD 任务,往往可以与语义落地手段融合起来同时解决,这个 practice 至少对信息抽取的语义落地有效。

累了,也差不多扯完了。年底了,觉得有文债似的,自己跟自己过不去,赶着跑着写这些劳什子,既充不了论文,也评不了教授。人真是奇怪的动物,骨子里都有雷锋的基因。Happy reading,不枉我辛苦码字。

 

【相关】

【立委科普:如何自动识别同一个意思千变万化的表达?】

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

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

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

泥沙龙笔记:NLP hard 的歧义突破

【立委科普:NLP核武器的奥秘】

【立委科普:语法结构树之美】

【立委科普:语法结构树之美(之二)】

NLP 迷思之四:词义消歧(WSD)是NLP应用的瓶颈

中文处理

Parsing

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

《朝华午拾》总目录

 

【语言学家妄论深度学习和AI,旨在 invite questions】

与董老师调侃AI泡沫,不过泡沫归泡沫,这次ai热让我们看清了几点:

第一是 大数据里面有名堂 不全是虚的。

第二是 长远一点看 ai 和 nlp 在领域里可以解决实际问题
譬如 我们做的客户情报产品 虽然发现市场没有预想的那么大 但价值是确认了

第三是 深度神经是技术突破 真东西 虽然目前被神话了。至少在 nmt 中 我们看到了以前达不到的质量。语音方面已经提升了整个产业的水平。

第四是 nlp 与大数据结合 让我们看到很多可能。虽然并不是每一种可能都可以满足某种社会刚需 但nlp大规模实用的大门已经开启 就看谁的市场角度对路了。

有一位风头正健冲在世界最前沿的深度学习大牛好友,看了我最新的博文如何自动识别同一个意思千变万化的表达】, 回说:李老师你还没有理解深度学习啊,深度学习做这件事儿(识别一个 statement 的千变万化的语言表达)其实比较简单。

我不懂深度学习,那是肯定的。说这件事儿很简单,我有点存疑。至少目前所有做 bots 和问答系统的人,都在 fight 这个挑战,不能说已经完美解决。当然,Siri 这类显示了在 apps 上的应用,令人印象深刻。

Anyway,我的回答是,我们属于同类,心态和世界观是一样的。手里有把得心应手的锤子,世界就变成了钉子。区别只是锤子的不同,我不懂你的锤子,你也未必使得了我的锤子。术业有专攻,隔锤如隔山。但我确认,我的锤子可以对付这个钉子。

咱们还是来个友谊赛吧,否则这个世界多么单调。

无监督学习除了 clustering 在某些特定场景可以得到应用外,基本还是 research 的探索性质吧,没人指望它能大规模应用。clustering 到 classification 还有不小的距离,总得有某种监督或人参与才靠谱吧。那天我说,学习界啥时把机器放到raw data 的语言大海里,机器就跟小孩一样学会了语言,那才是牛逼翻天了。否则的话,你有你的知识瓶颈(巨量带标数据),我有我的知识瓶颈(专家经验),谁的瓶颈更大难说着呢。

深度神经学习前,semi-supervised 的研究很热。至少从研究角度,那个领域是令人兴奋和期待的。说的是以最少的监督(种子啥的少量带标数据,或者人工的规则做引子),结合 raw data 去试图引导系统按照指定的方向做事儿。听上去在轨道上,至少不是所谓完全的无监督那种让人觉得不靠谱。还有就是白老师的语义计算主张,不必用带标数据,但要用丰富的词典信息,结合 raw data 做 parsing,也用到深度学习模型RNN啥的,听上去也是可行的。这是因为词典信息里面已经隐含了深入的人工监督(语言学知识和用法),各种 expectations 譬如 subcat,然后到大数据里面去定位。

微博上有人问除了图像和语音,文本NLP方面,深度学习有突破吗?我的记忆中,至少n月前,相当普遍有说,深度神经在文本遭遇瓶颈(by 看到瓶子有一半是空的人),或文本有待突破(by 看到瓶子有一半是满的人)。由于DL乐观主义流行加上全世界的CL牛人都憋足了劲儿地攻关努力,据说最近收到的答案是:文本也很突破了。

于是我正面反面各问了一下,拷贝于下,在此一并求教方家:

谁能给个神经在文本NLP中突破的清单就好了, 看 so far 到底哪些是真突破,哪些仍是瓶颈?先起个头,突破似乎表现在:

1 NMT,例如谷歌翻译,特别是中到英,的确突破性发展了(百度声称更早神经了,但翻译质量远不如谷歌NMT令人印象深刻,虽然在前神经时代,百度的中文方面的SMT比谷歌强);

2 SyntaxNet 至少在新闻正规文本上,parsing 比前突破了,已经达到 94%,虽然离应用还远,虽然不是声称的世界第一

关于神经在文本NLP上的瓶颈或缺陷也抛块砖:

1. 迄今的突破都是 supervised 的,倚赖的是 insatiable 的巨量带标数据: 带标数据于是成为知识瓶颈;

2 对于众多领域和文体,神经系统基本没有适应性,除非假设有海量领域数据可以重新训练成功;

3 几乎所有 unsupervised 尝试都是研究性质,离应用还远;

4 模型庞大带来的costs:训练和运行对计算资源的高要求

5. 迄今的端对端系统的神经应用,未见用到语言结构或理解,隐含层里的葫芦据说人也解不透;

6.  貌似黑箱子,有说 debug 不易(统计模型黑箱子不易debug的毛病以前是公认的痛点,不过最近有深度学习大牛一再强调,这个箱子一点也不黑,debug 也容易,此瓶颈存疑);

端对端除了 NMT,还有哪些投入大规模应用的文本处理系统?似乎还在探索中,成熟的不多。在IE和QA领域,不久应该会有某种突破,因为这两个领域的系统基本是端对端,只要somehow(人海战术?)得到了大量的带标数据,突破是可以期待的。不过,在这些方面,高明的规则系统已经有了很好很快的解决方案。不信,可以到时候拉出来遛遛。

 

【相关】

It is untrue that Google SyntaxNet is the "world's most accurate parser ...

【李白对话录之八:有语义落地直通车的parser才是核武器】

【谷歌NMT,见证奇迹的时刻】

【泥沙龙笔记:语法工程派与统计学习派的总结】

【新智元笔记:两条路线上的NLP数据制导】

《立委随笔:语言自动分析的两个路子》

Comparison of Pros and Cons of Two NLP Approaches

中文处理

Parsing

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

《朝华午拾》总目录

 

【立委科普:如何自动识别同一个意思千变万化的表达?】

自然语言理解(NLU)的很多应用需要找到解答下列问题的算法:如何自动识别同一个意思千变万化的表达?譬如,问答系统或自然语言的任何人机接口,第一个问题就是如何理解不同用户千变万化的问题,以便从某个库里检索出合适的答案来。主流流行的做法仍然是绕过结构和理解,根据关键词、ngram以及 some word expansion,建立一个模型来计算不同问句的相似度。这种显然是偏离人类理解,最多可算是近似的做法被认为是理所当然,甚或唯一的算法,因为符号逻辑和语言规则那一套貌似模拟人类理解语言的做法早已从学界退出了历史舞台:学习界要竞争连对手都没有,只能自己跟自己玩。

以我骨灰级计算语言学家的身份,本篇就来专门谈谈这个问题的符号逻辑。都说语言学家迂腐得可以,云山雾罩,对牛弹琴。不信这个邪,你就是工程或学习的大牛,今儿个我也要把语言学的琴给你弹明白,不明白不收钱。(当然,明白了也没打算收钱。有心给小费的话,请转而打赏给任何公益项目为荷。)

我们把上述问题分解如下,更复杂的 cases 大多是这些部件的不同组合而已。

(1) 同一个意思的不同表达主要体现在用词的不同上,例如:

我没钱。
我很穷。
我买不起。
我就是个屌丝。
我银子不够。
我手头很紧。

(2)同一个意思的不同表达主要体现在结构的不同上,例如:

我没有那么多钱
钱我没有那么多
我钱没有那么多

同一个意思的不同表达所用的词不同结构也不同也是有的,那不过是上述两种情形的交织而已。任它千变万化,所牵涉到的变量是可以映射的。以上述场景为例,变量是:【human】【lack】【money】。其底层结构是:【lack】(【human】,【money】)。词典级的映射是:

【money】:钱,银子,美钞,RMB,¥,$ ......
【lack】:缺乏,没有,缺少,不够
【human】:我,你,他,人,.....
【lack】(,【money】):穷,穷酸,买不起,手头+紧,......
【lack】(“人”,【money】):屌丝

以底层结构为起点反推(乔姆斯基所谓生成),以上面的词典信息为驱动,加上一些简单的句法约束,包括容忍 optional 的随机成分(譬如加入程度“很”或强调“的确”,时态“已”等等),符号逻辑可以用计算文法(computational grammar)一网打尽语言的不同用词或结构的千变万化,不是清晰可见了吗?

一网打尽的前提是起点是一个定义明确的 logical statement,如果起点不确定,我们面对的是语言海洋,那就不好说了。因此,我一直跟人说,对于领域的问答系统,譬如,起点是 Q&A 的档案或者起点是一个 app 的可能的 commands,利用符号逻辑的自然语言理解技术,建造一个几乎一网打尽的自然语言接口,是完全靠谱,可以拍胸脯的事儿。

这里面的原理就在语言海洋的千变万化被聚焦了(据说深度学习也有了类似的时髦概念 叫 attention,在 IE 领域,这个概念已经有 20 多年的历史了,IE 本身就是 NLU 的聚焦)。聚焦以后仍然有很多变式,让人眼花缭乱的不同说法,但是这些变化逃不过如来佛的手掌。聚焦的最大特点是 vocabulary 急剧浓缩,加上语言学文法的约束(此篇省略其细节,明眼人自可想象,这绝对是 tractable 的任务),貌似的千变万化于是被一张无形的符号逻辑网罩住。

顺便一提:很喜欢张学友一首歌,叫【一张无边无际的网】,说的是情网,用来代表文法也很贴切。文法就是NL的无边无际的网。我们做计算文法的人 为什么乐此不疲,因为是在编织这张无边无际的网。尽管如此,仍然需要语义聚焦,才好最佳落地。

 

【相关】

立委科普:问答系统的前生今世

【deep parsing,deep learning 以及在对话和问答系统中的应用】

中文处理

Parsing

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

《朝华午拾》总目录

 

 

【泥沙龙笔记:弃暗投明,明在何方】

我:
just had a small talk with Tanya on US election, she was super angry and there was a big demonstration against Trump in her school too

行:
@wei
在我们这个群里,我们都见证了立委清晰的预测了川普对希拉里的领先优势。与传统媒体相比,这次社交网络所反映的民意更准确。也许更为重要的是分析整个选举过程中与时间相关的一些关键变量。
不过有一个问题和缺点,这个分析没有反映美国的选举人制度,事实上希拉里克林顿所取得的选票高于川普。如果能有回缩的地域分析,特别是,摇摆州的地域分析,比如说佛罗里达等的回溯

我:
是的。这次其实是千载难逢的机会,因为太多人关注,太多人 bet,应该认真当成一个项目去做,精心设计。

利:
不光是美国人关注,我们在国内也非常关注

行:
证明了新工具的力量。这也是这次川普当选的最正面的事件。

我:
我这种票友性质地玩,只是显示了大数据里面的确有名堂
但不是震撼性的。

利:
我跟美国的朋友们说:不管谁赢得了总统,都是大数据分析赢了

行:
等我有钱了,我来投你。

毛:
对,我也想过这个事,难点恐怕在于网上的信息恐怕难以分清出自何地?

我:
票友性质不是说的技术:技术是deep,靠谱和专业的,我从来都不小看自己;票友是说我对 domain (政治、大选)是票友 ,到现在对选举人制度还是模模糊糊,它到底怎么工作的

行:
lP地址不是相对能反映地域吗?

我:
推特是最大最动态的数据源,我们有推特的地理,应该大体足够从地理上区分了
我们也有种族,还有年龄和性别等信息。

行:
强烈建议回溯一下摇摆州。挖矿!非常值得进一步挖掘。

我:
没那个精力和兴趣了,公司缩水,也没有几个兵了,日常的琐务也要做
大数据不好赚钱。烧钱倒是哗哗的。

行:
需要设计出一个能赚钱的商业模式。技术是根本,但不是全部。

毛:
如果能把地理年龄这些结合进去,那你的系统大有前景。

Nick:
同意,伟哥可以写本书:
how is a presidential election won or stolen?把选举人票考虑进去

我:
有兵的时候,鸡毛蒜皮我不管,我爱怎么玩怎么玩, 到头来连兵都保不住,还玩个球啊。一个教训,不要把技术开发得过头。小公司的构建内,任何一个部门都不宜超前太多,超前了,就意味着末路的来临。

Nick:
@wei 早就叫你弃暗投明

我:
弃暗投明倒有个明啊 一厢情愿哪里行。

技术并不是越深入越先进越好,by nature 作为科学家,我们总是想越深越好
结果是产品来不及消化,技术总吃不饱,最后最先裁剪的就是技术 呵呵 反正也消化不了全部,你再优秀也没价值 其实是有前车之鉴的:《朝华午拾 – 水牛风云》
十几年再来一次,仿佛时光倒转。

一个机构作为一个整体,必须保证大体相称的发展水平,才可相谐。一个部门太出色,overperforming,其他部门无法消化,也就成了目标。譬如研发,要质量我给你最好的质量,超过“世界第一”,要广度我给你整出20个世界主要语言的深度分析 (deep parsing),cover 语言数据的 90+%,要领域化可以在两周内 deliver 一个 domain 所需的情报单位(一种关系,或一个事件),只要定义明确,产品的情报挖掘的瓶颈永远不在这个自然语言研发部门。结果呢,部门需要为部门的太好表现付出代价。这个世界就是这样诡异。

话说回来,一套技术在同一个公司挥洒了10年还没走人,对我这样害怕变动的人,公司也已经相当不易了。对得起我,我也对得起它了。当年没有我的技术,公司早死翘翘了。如今有了技术不能起飞,也怪不得我,公司从上到下,在这一点是共识:论技术和由此而来的数据质量,我们绝对领先对手。市场做不起来,打败不了对手,是技术以外的因由,我无能为力。另一方面也可以说,市场不成熟,技术变钱不是那么简单 market economy 决定的。

白:
NLP部门因为表现太好而不受欢迎,听起来是天方夜谭,如果不是伟哥亲历,谁信呀……

我:
反正我信。
我们吃不饱有日子了。一直都是我们催产品经理,而不是相反:求求你,给我们一个任务吧。产品经理说:就根据客户反馈小修小补吧。我们的数据质量已经行业领先很久了,一直是领先。

白:
用嘴投票还是用脚投票,这是一个问题

我:
新的 specs,或者出不来,或者出来了,我们 deliver 了,产品却实施不了。

严:
@wei 还是觉得公司产品方向太窄了,这么好的技术被局限在这么窄的应用范围。董事会老是要Focus。

邓:
听起来CEO应该负很大的责任啊

我:
据说是市场太小了,或饱和了。产品在一个 niche market,这个社会媒体大数据挖掘的market一度被疯狂追捧和夸大。几年下来发现,价值得到验证,市场也确实存在,但是就是不够大。拓展其他 market 需要有眼光的产品老总。对于“高新技术”,有眼光的产品老总比熊猫还稀少。高新技术比较适合做大公司的花瓶,其价值在于花瓶的股市效应。或者,适合一个巨大平台,帮助连接顾客和厂家: 这个可以产生真正的价值,譬如 Facebook。高新技术对于创业其实很难,第一缺乏资源(不能吃一辈子VC),第二缺乏平台(连大数据都要花大价钱购买,更甭提顾客与厂家的network了),第三缺乏熊猫。好不容易都凑齐了,最佳的出路也就是有幸被巨头看重收购了事。这个概率不到十分之一吧。也就是说,你哪怕有再牛的技术,你这辈子活过了三个人的寿命,有机会创业10次,你可能创业成功,如果成功是以被收购作为标准的话。如果成功是以上市成为独角兽作为标准,那么你需要的机会数是下一个量级,五年一个轮回,你大概需要活500岁才可撞上狗屎运。

老总的眼光各有自己的局限,譬如,原来一直做 b2b saas 的 就一直沿着以前的经验和熟悉的领域想技术的用场。超出经验领域之外 是很难的。产品创新不再是技术的创新,而是产品层面不断加 features,越加越多。为了讨好不同的客户。结果是 90% features 基本没人用,产品也因此变得让人眼花缭乱了。为什么 agency 喜欢这样的产品?因为他们是 power users, features 越多,他们越爽。其他客户面对众多 features,只会晕菜,反而起反作用。

NLP 的真正威力是把数据转为情报,如果一个产品只需要一种情报,譬如舆情,无法消化其他可能有用的情报,NLP 就处于语义落地吃不饱的地位。你吃不饱,你的价值就丧失。

我:
洪诗人有空可以为nlp写一首挽歌,为nlp超出产品一叹。

悟:
李氏唐朝西游记
维度无穷NLP录
立宪定法三权六
委身侍主天地合
@wei 我先抛砖引玉, 见笑了

我:
这砖抛的,狂赞。
【相关】

Final Update of Social Media Sentiment Statistics Before Election

Trump sucks in social media big data in Spanish

Did Trump’s Gettysburg speech enable the support rate to soar as claimed?

Pulse:tracking US election, live feed,real time!

【大数据跟踪美大选每日更新,希拉里成功反击,拉川普下水】

【社煤挖掘:大数据告诉我们,希拉里选情告急】

【社煤挖掘:川普的葛底斯堡演讲使支持率飙升了吗?】

【社煤挖掘:为什么要选ta而不是ta做总统?】

Big data mining shows clear social rating decline of Trump last month

Clinton, 5 years ago. How time flies …

【社媒挖掘:川大叔喜大妈谁长出了总统样?】

【川普和希拉里的幽默竞赛】

【大数据舆情挖掘:希拉里川普最近一个月的形象消长】

欧阳峰:论保守派该投票克林顿

【立委科普:自动民调】

【关于舆情挖掘】

《朝华午拾》总目录

【语义计算沙龙:坐而论道 on 中文 parsing】

董:
刺死前妻男友男子获刑5年 死者系酒醉持刀上门 -- 百度新闻
Stabbed her boyfriend man jailed for 5 years, the drunken knife door --百度翻译
Stabbed his ex-boyfriend boyfriend was sentenced to death for 5 years the Department of drunken knife door -- 谷歌翻译
不知道这样结果是什么智能? -- 人工?鬼工?骗工?

白:
也是醉了

董:
我主要是要探讨“连动”--酒醉,持刀,上门。这三个动词在知网词典里都是有的。 酒醉 -- {dizzy|昏迷:cause={drink|喝:patient={drinks|饮品:{addict|嗜好:patient={~}}}}}
持刀 -- {hold|拿:aspect={Vgoingon|进展},patient={tool|用具:{cut|切削:instrument={~}},{split|破开:instrument={~}}}}
上门 -- {visit|看望}
酒醉的上位可达:“状态”;持刀的上位可达“行动”,但它与“拿”不同,它是“拿着”,所以定义描述里多了“aspect=Vgoningon”;最后是“上门” 它是“行动”。于是我试下面的规则:
DefineVP1 0712 CN[*pos==`verb`,*def_h=={act|行动},*syl==`2`];L1[*pos==`verb`,*def_h=={act|行动},*def_s==`aspect={Vgoingon|进展}`,*syl==`2`]$L1[*log==`preceding`]@chunk(CN,L1)# // 酒醉持刀上门;
DefineVP1 0722 CN[*pos==`verb`,*def_h=={act|行动},*syl==`2`];L1[*pos==`verb`,*def_h=={state|状态},*syl==`2`]$L1[*log==`preceding`]@chunk(CN,L1)# // 酒醉持刀上门;
心里还是不踏实,因为没有大数据的支持。想听你们的意见。其他例子如:骑车上街买菜遇到一个老同学;

白:
直观感觉,状态的标签不是太好贴。比如,拿着刀子砍人,拿着是状态;抡起斧子砍人,抡起就不是状态?隔着玻璃射击,隔着是状态;打开窗户通风,打开算不算状态 ?
买菜和遇到老同学,谁是前景,谁是背景?谁是主线谁是旁岔,很难说。像伟哥这样一律next最省事。
打开保险射击,打开保险就不是状态

我:
伟哥于是成为懒汉的同义语 。工业界呆久了 想不懒都不成。我曾经多么勤勉地一条道走到黑啊。Next 的好处是拖延决策 或者无需决策。可以拖延到语义中间件,有时也可以一直拖延到语义落地。更多的时候 拖延到不了了之 这就是无需决策的情形。

白:
董老师说的就是语义落地啊。花五毛钱打酱油,花五毛钱打醋。花五毛钱该贴啥标签?
要不是语义落地谁费这事儿。

我:
花 money vp
这个是 subcat 可以预测的模式。凡是subcat可明确预测的句型 通常都不是事儿。给标签于是成为 system internal 的内部协调。

白:
关键是不知道该有多少标签,如何通过粒度筛选、领域筛选、时空背景筛选,快速拿到最有用的标签。

我:
通常的给法是:money 是 o (object),vp 是 c (complement),这是句法。
句法之上这几个节点如何标签逻辑语义 也可以由 subcat 输出端强行给定。譬如 可以给 vp 一个【结果】的标签,vp 是 “花钱” 的结果。
subcat 的实质就是定义输入端的线性模式匹配 并 指明如何 map 到输出端的句法和逻辑语义的结构。这种词典化的subcat驱动简化了分析算法 而且包容了语义甚至常识。

董:
我是因为首先要解决句法关系引起的。例如:欢迎参观;争取投资,就是VO关系,而不是参观游览。也就是说,两个或更多的动词连着时,如何排除歧义?试着只给两个标签:动宾、连动。

我:
一般而言 动宾 是动决定的,连动可以是第一个动决定, 也可以是随机的组合。后者有一个与conjoin区分的问题。
“欢迎” 在词典subcat 中决定了可以带 “参观” 这样的宾语,就事论事 这个“欢迎-参观”的关系几乎是强搭配,与 “洗-澡” 类似。
连动也有词典 subcat 决定的,譬如 “去” vp,“驱车” vp,“出门” vp。
词典决定的东西 没有排除歧义的问题 就是词典绑架 通过 subcat。只有随机组合才有歧义区分的问题。而动宾的本质是不随机,原则上不存在歧义 一律是强盗逻辑 本质就是记忆。可以假设 人的动宾关系是死记在词典预测(expectation)里的,预测实现了 动宾就构建了 这符合 arg structure 的词典主义原则。

董:
负责挖坑,负责浇水,负责填土。。。动宾关系;

我:
负责 vp
为 vp 负责
后者是变式

董:
这么看来,动宾还是连动还是修饰(限定),都由词典解决了。统统做进词典里,就可以了。明白了。

我:
词典主义。随机度太大的组合比较难做进词典。所以一方面尽量做进词典,另一方面 来几条非词典化的规则 兜个底。
随机性而言 似乎 修饰大于连动 连动大于动宾。

白:
如果只有这三个标签,当然做进词典是首选,就怕落地时要的不止这三个。

董:
33724688194454877

这是我刚才试的一个句子。我们为每个节点预留10个子节点。动词与动词也得包括这些。

我:
进不进词典 主要不是有几个标签 而是这个标签的性质。
语言学的理论比较文科,说的东西有些模糊,但大体还是有影子的。
语言学理论中一个最基本的概念区分就是 complement vs adjunct,这是句法的术语,对应到较深的层面 就是 argument vs modifier。一般而言,arguments or complements 都是词典的主导词可以 subcat 预测的。HowNet 从语义层面对 args 已经做了预测。语言学词典(譬如英语的计算词典,汉语的计算词典等)就是要相应地从具体语言的句法表达方式的角度把 subcat 预测的 complements 定义出来。至于 modifier 和 adjuncts,他们的组合性随机,词典就难以尽收。最典型的就是普世的时间地点状语等。世界上的所有事件都是在时间和地点中进行。

白:
跑步去公园,去公园跑步。前者去公园的路上都在跑步,两个事件在时间上重合;后者只有到了公园才开始跑步,在时间上只是先后衔接。
如果语义落地需要对此作出区分,该有什么标签?怎么词典化?
动词为其他动词挖坑的情况都不难处理,难的是压根儿没有标配的坑。这是从ontology的事件根结点继承下来的。

我:
跑步去公园,去公园跑步。
先说第二句:【去 + NP + VP】 这是可以词典预测的,万一预测不准,可以 fine-tune 条件,譬如:【去 + 地点 + 动作】,总之是词典预测的。既然词典预测了,那么该给什么标签就不是问题了。给什么都可以,要什么给什么。
再看第一句:跑步去公园。
去公园 不是问题 这是一个动宾 VP 是词典预测的:【去 + NP】 或 【去 + 地点】。
问题于是就成为 “跑步” 与 VP(人类动作)之间的关系。 这种关系在哪里处理,词典可以不可以预测?

白:
吃口饭去单位,又是接续关系不是重叠关系了

我:
这个的确有些 tricky 但不是无迹可寻。

白:
跑会儿步去公园,也是接续关系了。

我:
偷懒的办法就是有一条非辞典化的模糊的规则 Next 连接二者。
费劲的办法也有:一个是 “跑步去” 词典化 作为“去”的变体,“跑步”是对“去”的方式限定。

白:
现在的问题是,句法上承认next,语义上细化next

我:
另一个词典化的做法是,在“跑步”词条下,预测 movement 的动词 VP, 【去NP】 、【来NP】 、【到达NP】 等等 都符合条件,可以跟在“跑步”后面。

白:
为啥跑步加了时态,限定就失效?

我:
这个预测的subcat里面的句法规定是:
1. 本词不许有显性时态,不许分离;
2. 后面的 VP 必须是 movement;
3. 输出端:本词作为后一个 VP 的限定方式(句法叫方式状语:adverbial of manner)。
Binggo!
至于为啥?这个问题,系统可以不回答,系统可以是数据驱动的。
系统背后的语言学家可以一直为了 “为啥” 去争论下去,系统不必听见。总之是让 “跑会儿步去公园” 不能在此预测pattern中实现。词典化实现不了,那就只好找兜底的规则了,于是 Next 了。【限定】与【接续】的区别由此实现。前者是词典强盗,后者是句法标配。

白:
在词典之外搞几个标签模版也不难,句法上都对着next,只不过依据前后subcat细化了,这有多困难,而且清爽。

我:
亦无不可。差不多是一回事儿。一碗豆腐,豆腐一碗,就是先扣条件还是后补条件的区别而已。无论前后,总之是要用到词典信息,细线条的词典信息。

白:
看上去不那么流氓

我:
先耍流氓【注1】,还是先门当户对,是两个策略。
很多年前跟刘倬老师做专家词典。他是老一代无产阶级革命家,谆谆教导的是不能耍流氓,要门当户对,理想一致了才能结合成为革命伴侣。后来到了美国闹革命,开始转变策略,总是先耍了流氓再重新做人。其实都是有道理的。

白:
@董 跑步和上班是先后关系,跑步和去是同时关系。

董:
这句分析后,有两个“preceding”,不符合我们理想的结果。我们要的是“跑步”是“去上班”的manner 才好。因为我们要准备用户提出更多的信息要求。例如:系统要告诉用户,我平时是HOW去上班的。

我:
刘老师做系统是在科学院殿堂里面,可以数年磨一剑,we can afford to 不耍流氓。来美国闹革命拿的是风投的钱,恨不能你明天就造出语言理解机器人出来,鞭子在上,不耍流氓出不了活。形势比人强,不养童养媳成不了亲,不抓壮丁打不了仗,于是先霸王,然后有闲再甄别。

董:
是的,我们现在连科学院殿堂都不是,而是家庭作坊,可以慢慢磨。其实已经磨了20多年了。

我:
我还记得当年我们为了一个不足100句的英语sample,翻来覆去磨剑磨了两三年,反复地磨平台、磨算法和磨规则。当时的董老师已经大数据(现在看也不是大数据了)开放集测试“科研一号”【注:中国MT划时代的第一款工业产品“译星”的前身】了。

董:
我们给我们的现在开发的中文分析的目标是:看看能最大限度地挖掘出多少信息。

我:
董老师20年磨出的 HowNet 打下了语言分析的牢固基础。现在是把普世的 HowNet 细化为具体语言的句法规定。路线上是一脉相承的。换个角度看,董老师在 HowNet 中已经把普世的 Subcat 的输出端统一定义了,现在是要反过来再进一步去定义具体语言的句法表达形式,也就是输入端的pattern和条件,然后把二者的映射关系搭上,大功即告成。先深层结构 和 UG,然后回过头来应对每个语言的鸡零狗碎的形式。

董:
这倒是的,我们这个中文系统还没到半年,就有点模样了。词典22万义项,规则近4000条。当然,要真正交给用户,那还有一段磨的。

我:
蛮 impressive。我们开发四年多了,但绝对没有 8x 的规则量。

董:
这回我们不做中英翻译,因为英语生成我们做不起,又没有大数据的。其实做出来也只是给别人添砖加瓦,多一个陪着玩的。这种事情我们不玩的。

我:
对,MT 从大面上就拱手相让吧,数据为王。 符号逻辑和规则路线现在的切入点就是应对数据不足的情境:其实数据不足比人们想象的要严重得多,领域、文体等等,大数据人工标注根本玩不起。不带标的 raw 数据哪里都不缺 但那比垃圾也好不了多少。

宋:
"中国对蒙出口产品开始加征费用"

白:
这个哪里特殊?

宋:
中国对(蒙出口产品)开始加征费用, (中国对蒙)出口产品开始加征费用

白:
进口出口,应该站在自己立场吧

宋:
出口是自己的立场,但也有两种解读:蒙古出口,中国对蒙古出口。我一开始理解为后者,看了内容才知道是前者。

我:
这个 tricky,在争抢同一个介词“对”:对 np 征税;对 n 出口。
远距离赢。

白:
常识是保护自己一方的出口,限制非自己一方的进口

我:
远距离原则有逻辑 scope 的根据。但是具体看 很难说 因为汉语的介词常常省略。scope 的起点用零形式 并不鲜见。
“对阔人征税” 可以减省为 “阔人征税”;“对牛肉征税” 可以简化为 “牛肉征税”。但 “对蒙古出口”,不可简化为 “蒙古出口”。本来也可以简化的,但赶上了 “出口” ,逻辑主语相谐。“牛肉” 与 “征税” 没有这种逻辑主谓的可能,于是“对”可省 而NP的逻辑语义不变。

白:
势均力敌时,常识是关键一票

宋:
这个例子在我所看到的语境下是远距离赢,在别的语境下则不一定。因此,分析器是否应当给出两个结果,然后在进一步的处理中再筛选?

我:
给两个结果 原则上没难度,但后去还是麻烦。

白:
其实关键是什么时候定结果,几个倒在其次

我:
"中国对蒙出口产品开始被加征费用"

加了一个 被 字 哈哈 可能是蒙古对中国的反制。

白:
两个对,有一个和被不兼容

【注1】所谓parsing耍流氓,指的是在邻近的短语之间,虽然他们之间句法语义关系的条件和性质尚不清晰,parser 先行把他们勾搭上,给个 Next 或 Topic 之类的虚标签,类似未婚同居,后去或确认具体关系,明媒正娶,或红杏出墙,另攀高枝,或划清界限,分手拉倒。

 

中文处理

Parsing

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

《朝华午拾》总目录

【李白对话录之10:白老师的麻烦不是白老师的】

我:

突然想起一句话 怕忘了 写在这:

“白老师的麻烦是 他懂的 我不懂 我懂的 他懂。”

谁的麻烦?

乔姆斯基说 麻烦是白老师的

菲尔默说 麻烦是我的

后一种语义深度分析的结论是如何得出的?

语义要多茁壮 才能敌得过句法的标配啊。

而且这种语义的蛛丝马迹并非每个人都有捕捉的能力 它远远超出语言学 与一个人的背景知识和领悟力有关

遇到这种极深度的人工智慧 目前能想出来的形式化途径 还是词驱动比较靠谱 如果真想较真探索的话

“麻烦 问题 毛病” 这类词有两个与【human】有关的坑

一个是标配 表达的是所有关系 possessive

另一个是 about 要求填坑的是 【event】或【entity】 后者自然也包括 【human】

白:

“他的教训我一辈子忘不了”

谁被教训?

我: 哈。

回到前面, 近水楼台的 【human】 “白老师” 是标配。

另一条词驱动的可能路径自然休眠。因为词驱动 也就埋下来唤醒的种子。

上下文中遇到另一个 【human】 candidate “我”,加上其他一时也整不清楚但终究可能抓到的蛛丝马迹, 于是休眠唤醒 了。

白:

好像sentiment在休眠唤醒中起比较重要的作用

我:

此句是一例 本来是褒 可不唤醒就是贬了。

白:

标配的麻烦,把负面情感赋与那谁,等到后面说的都是正面,纠结了,另一个human就有空子钻了。

我:

对对对

这个 trick 我们做了n年 sentiment 摸索出来了就在用。典型案例是: “Thank you for misleading me”

Thank 里表达的抽象的褒 由于遭遇了 misleading 的较为具体的贬 而转化为讽刺。

还有:“你做的好事儿 great”。这里 great 的讽刺也是有迹可寻的。

白:

more specific expressions承载的sentiment优先

我:

遇到过两次记者采访,两次都被问到 你们教给机器 sentiment,机器可以理解正话反说 和 讽刺 吗?

我的回答是:这是一个挑战 但其中的一些常见的讽刺说法 是可以形式化 可以捕捉到的。举例就是上面。

白:

具体override抽象。

我:

yes yes yes

白:

如果二者纠结,具体承载的sentiment才是基调,抽象的反向sentiment不是抵消而是修辞手法的开关。

我:

我一直在强调,sentiment 的世界里面,主要是两类东西:一类是情绪的表达,一类是情绪背后的理由。

有些人只表达情绪,但有些人为了说服或影响别人,好恶表态的前后,会说一通理由:you make a point,then you need to support your point with arguments

所谓 sentiment analysis 很长一段时间 领域里面以为那是一个简单的分类问题:thumbs up thumbs down。这个浅陋而流行的观点只是针对的情绪,而面对情绪背后千变万化的理由 就有些抓瞎了。可是没有后者,那个sentiment就没啥特别的价值。

所谓讽刺,只是情绪的转向,正话反说。具体的理由是不能转向的,否则人类的交流就没有一个 protocol 而可以相互理解了。褒贬里面具体的东西 我们叫 pros and cons, 那个东西因为其具体,所以语义是恒定的,不会轻易改变。

情绪却不同。人是一个奇怪的动物,爱极而恨,恨极而爱,都有。甚至很多时候 爱恨交织 自己都搞不清楚。表达为语言,就更诡异善变。

英语口语中 sick 是强烈的褒义情绪,shit 和 crap 等词也不是贬义,bad ass is very positive too:

“The inside of a prius is bad ass no lie.” 是非常正面的褒奖。

人类在情绪表达中说反话,或者由于反话说常了 community 都理解成正话了,这种情形也屡见不鲜。

关键词的褒贬分类系统遇到这种东西不傻眼才怪:当然如果input很长,可以 assume 这类现象只是杂音,整个关键词分类还可以靠谱。但一旦是社会媒体的短消息,这种语言模型比丢硬币好不了多少。

汉语中 老婆太喜欢老公了 喜欢到不知道怎么好了 就说 杀千刀的。

再举一个今天遇到的 sentiment 实际案例:
@Monster47_eNd nah, you have no idea how bad I would kill to eat taco bell or any kind of shit like that.
瞧瞧里面的 sentiment triggers: bad;kill;shit 三个都是强烈的 negative triggers
谈论的 topic 是 Taco Bell,一家流行的墨西哥快餐连锁品牌。
这条短消息通篇没有褒义词出现,因此没有理解、缺乏结构的关键词系统只能得出贬义的结论。但这句话其实是对 Taco Bell 异乎寻常的褒奖 用的是完全草根普罗的用语。

谷歌的神经翻译遇到口语化的句子也基本抓瞎,训练的数据严重口语不足(那是因为双语语料质量过得去的来源大多是正规文档,组织人力去标注口语,做地道的口语翻译,是一个浩大的工程,巨头也无能为力吧):
@ Monster47_eNd nah,你不知道我會殺了多少吃塔可鐘或任何種類的狗屎。

尝试“人工”翻译一哈:
@ Monster47_eNd nah,你不知道为了能吃上Taco Bell 的东东,我會怎样不惜代价(哪怕让我杀人都行)。

简单的译法是:
想吃 Taco Bell 这样的垃圾,我他妈都想疯了。

谁要再说 sentiment 好做,我TM跟他急。这无疑是 NLP 中最艰涩的果子之一。
【相关】

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

【立委科普:基于关键词的舆情分类系统面临挑战】

【立委科普:舆情挖掘的背后】

【李白对话录之九:语义破格的出口】 

李白对话录之八:有语义落地直通车的parser才是核武器

【李白对话录之七:NLP 的 Components 及其关系】

【李白对话录之六:如何学习和处置“打了一拳”】

【李白对话录之五:你波你的波,我粒我的粒】

【李白对话录之四:RNN 与语言学算法】

【李白对话录之三:从“把手”谈起】

【李白隔空对话录之二:关于词类活用】

《李白对话录:关于纯语义系统》

中文处理

Parsing

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

《朝华午拾》总目录