立委随笔:机器翻译,从学者到学员

学了神经翻译网课,感慨良多。回想一下觉得有些好笑:30多年前好歹也是科班机器翻译出身(社科院语言所研究生院机器翻译专业硕士,1986),大小也可以说是个学“者”。河东河西,现在乖乖成了机器翻译学“员”了。机器翻译翻天覆地的变化是有目共睹的。如果NLP其他方面的变化也达到机器翻译的程度,那才真叫不废江河万古流。

机器翻译课讲义编得真心不错。这一段讲解有点意思:

3. Trained model
During the training of the Teacher-Forced model, you provided the French sentences to the decoder as inputs. What are the decoder inputs when performing a new translation? You cannot provide the translation as an input because that's what you want the model to generate.

4. Decoder of the inference model
You can solve this by building a recursive decoder which generates predictions for a single time step. First, it takes in some onehot encoded input word and some previous state as the initial state. The GRU layer then produces an output and a new state. Then, this GRU output goes through a Dense layer and produces an output word. In the next time step, the output and the new GRU state from the previous step become inputs to the decoder.

就是说在训练神经翻译模型的时候,源语与目标语都在,都作为 decoder 的 inputs 来帮助模型训练。但是到了应用模型来翻译的时候,目标语作为 input 的条件不在了,那么怎么来保证目标语的影响呢?

讲义中所谓 recursive decoder 就是把目标语的语言模型带入翻译过程。这时候与训练的时候有所不同,不再是具体的目标语的句子来制约,而是用目标语预测下一词的语言模型来介入。这就是为什么神经翻译可以通顺地道的主要原因。因为有了目标语语言模型的引导。

神经翻译常常通顺有余,精准不足。这其实是一对矛盾的反映,本质上是因为 decoder 解码的时候,有两股力量在影响它,一个是源语encoder 编码的输入(上下文的 vectors),另一个是目标语语言模型(next word prediction)的输入,这两个因素一个管精准,一个管通顺,协调起来难免出现偏差或偏向。

尝试把上述讲义自动翻译(谷歌MT)后编辑说明一下:

培训模型在“教师强制”模型的培训过程中,提供给译码器的法语句子作为输入。当执行新的翻译时,解码器的输入是什么?您不能将翻译作为输入来提供,因为这是您希望模型生成的结果。推理模型可以通过构建一个递归解码器来解决这个问题,该递归解码器可以生成针对 “单个时间步长“(即:词) 的预测。首先,它接受一个热编码的输入词(这是指的源语输入文句的词)和一些以前的状态(这是指该词的上文隐藏层的内部表示)作为初始状态。接着,GRU 神经层生成一个输出(指的是下一词的向量表示)和一个新状态。然后,这个 GRU 输出通过全连接稠密层产生一个输出词(这是目标语下一词)。在下一个时间步长中,前一步骤的输出(目标语的词)和新的 GRU 状态成为解码器的输入。

目标语的语言模型是生成模型,生成模型本性就是发散的,可能步步走偏。制约它不走(太)偏的约束来自于根据源语文句编码的上下文状态。这里面还有个魔鬼细节,那就是原文句子的启动是反向的,reverse=True,就是说,原文句子的输入做了逆序操作:

sos we love cats eos --> eos cats love we sos

这样一来,当 sos(句首标志)作为解码器启动的初始单元的时候,伴随它的前文(上下文中的上文部分)不再是空(没有逆序的原句,前文是空的),而是整个句子的浓缩状态来支持它。这就说明了为什么一个 sos 的启动操作,可以依据前文生成下一个词,与 we 对应的 nous,后面就是“链式反应”了,直到生成句末标志 eos,完成一个句子的翻译。在这个递归的链式反应的每一步,每生成一个词,“前文” 就少了一个词,前文的状态因此也在步步更新作为下一步的输入,而所生成的目标语词也作为下一步的输入带入了目标语的生成模型,二者的相互作用造成了精准和通顺的妥协和平衡。目前看来,目标语的生成模型对于翻译的作用容易大于前文状态的作用,造成错译(张冠李戴、指鹿为马,人间蒸发,鬼影乍现等等问题)。但原则上,应该有办法去做平衡配置,就好比在精准和召回之间做平衡配置一样。

这一段讲义讲得蛮明白:

11. Generating translations
Now you can start recursively generating French words. First you define a variable fr_sent to hold the full sentence. Then for fr_len steps in a loop you do the following. First you predict a word using the decoder. Remember that, the inputs to the decoder are, a word from the French vocabulary and the previous state of the decoder. In the fist step, the input will be "sos" and the input state will be the context vector from the encoder. This model then outputs a word, as a probability distribution and a new state. The new state will be recursively assigned to de_s_t. This means, at every time step, the previous decoder state will become an input to the model. Then in the next step you get the actual word string using probs2word() function. probs2word() is a function that accepts a probability distribution and a tokenizer and outputs the corresponding French word. After that, you convert that word to an onehot encoded sequence using the word2onehot() function. This is assigned back to de_seq which becomes an input to the model in the next step. And you keep iterating this process until the output word is "eos" or, until the end of the for loop.

这是最后的实际译文的(词循环)生成过程。利用浏览器Chrome自带的谷歌翻译(plu-g-in)如下:

给点说明:

11. 生成翻译
现在您可以开始递归生成法语译文了。首先,您定义一个变量 fr_sent 来保存完整的译文句子。然后对于循环中的 fr_len 步骤,您执行以下操作。首先,您使用解码器预测一个单词。请记住,解码器的输入是法语【即目标语】词汇表中的一个单词和解码器的先前状态【即源语的前文】。在第一步中,输入将是“sos”【句首标志】,输入的状态将是来自编码器的(源语文句的)上下文向量。然后该模型输出一个(目标语)单词【在目标语词汇表中的概率分布】和一个新状态【上下文动态更新】。新状态将递归赋值给 de_s_t。这意味着,在每个(单词生成的)时间步,之前的解码器状态都将成为模型的输入【这是译文精准的源头】。然后在下一步中,您使用 probs2word() 函数(从所预测的词的词汇概率分布)获取实际的单词字符串。probs2word() 是一个接受概率并输出相应法语单词的函数。之后,您使用 word2onehot() 函数将该单词转换为 onehot 编码序列【把生成的词重新编码以便模型下一步使用:这是引入目标语生成模型的关键输入,它是译文地道通顺的保证】。这将被分配回 de_seq,后者将在下一步中成为模型的输入。然后你不断地迭代这个过程,直到输出单词是“eos”【句末标志】,或者直到 for 循环结束。

是不是很有意思?

欣赏一下课件的图示:

 
课程最后的讲义总结如下:
Got It!
1. Wrap-up and the final showdown
You've learned a great deal about machine translation and maybe a little bit of French as well. Let's have a look back at what you've learned.

2. What you've done so far
First, in chapter 1 you learned what the encoder decoder architecture looks like and how it applies to machine translation. You then played around with a sequential model known as GRU, or, gated recurrent units. In chapter 2 you looked more closely at the encoder decoder architecture and implemented an actual encoder decoder model in Keras. You also learned how to use Dense and TimeDistributed layers in Keras to implement a prediction layer that outputs translation words.

3. What you've done so far
In chapter 3, you learned various data preprocessing techniques. You then trained an actual machine translation model and used it to generate translations. Finally in chapter 4 you learned about a training method known as "teacher forcing" which gives even better performance. You trained your own model using teacher forcing and then generated translations. At the end, you learned about word embeddings and how they can be incorporated to the machine translation model.

4. Machine transation models
In this course, you implemented three different models for an English to French translation task. Model 1 was the most basic model. The encoder consumed the English words as onehot encoded vectors and produced a context vector. Next the decoder consumed this context vector and produced the correct translation. In model 2, the encoder remained the same. The decoder in this model predicted the next word in the translation, given the previous words. For model 3, we replaced onehot vectors with word vectors. Word vectors are much more powerful than onehot vectors and enables the model to learn semantics of words. For example, word vectors capture that a cat is more similar to a dog than a window.

5. Performance of different models
Here you can see the performance of those three models. You can see that the models trained with teacher forcing give the best results. You should note that the model that uses word vectors gets to a higher accuracy much quicker than the model that is not using word vectors.

6. Latest developments and further reading
Though you used the accuracy to evaluate model performance, there is a better metric known as BLEU which tries to imitate how a human would assess the translation. Another important thing to know is how out-of-vocabulary words are treated in productionized models. For example, Google cannot simply replace unknown words with a special token. To address this problem these models use a word piece model. A word piece model will identify most frequent sub-words in a corpus. For example, if the model has seen the words "low" and "newer", and has learned the sub-words "low" and "er", the model can represent the unseen word "lower". One of the most important developments in the field of NLP is the Transformer. Transformer is based on the encoder-decoder architecture. However it does not use any sequential models like GRUs. Rather, it uses something known as attention which is more light-weight than a GRU.

7. All the best!
I hope this has been a fruitful journey about machine translation and I wish you all the best.
 
【相关】
 

李维 郭进《自然语言处理答问》(商务印书馆 2020)

预告:李维《巴别塔影:符号自然语言处理之旅》(人民邮电出版社 2022)

《李白126:神经 attention 机制搞定代词指代的案例》

李:看到 attention 机制一个图示:

这可算是 attention 机制可视化以后,明确显示其解决了 pronoun coreference 的难题。看前后两句 it 与 animal 和 street 的关联强度就明白了:

1. The <animal> didn't cross the street because [it] was too tired.
2. The animal didn't cross the <street> because [it] was too wide.

这只是过程中其中一幅 attention 的图示化,图中没有显示其他两两 attentions 的图示(包括 it/animal/street 与 wide/tired 的两两关联度),看完就知道形容词(wide/tired)与 host noun(animal/street)之间的相谐性,是如何对 it 的 coreference attention 的影响力了。

这种两两配对的机制 简直令人发指地有效 而且有解释性,也不怕爆炸,反正所谓 multihead self-attention 机制都是可以并行计算的,大不了多上GPU,费些电而已。

白:怕不怕干扰?

李:不知道 不过就看到的这个结果,已经让人嫉妒得咬牙。好玩的插曲是,下面留言貌似还有个“理呆”傻傻地问:老师 为什么 it 与不相干的词 wide 有很强的关系?这位学生理解了 it 与名词的关系 却不能理解与形容词的关系,哈。

白:我们的观点是,it与其所指建立关系时,会把所指的本体标签复制到it这里来,然后跟tired/wide检查相谐性就是邻居之间的事情了。飞线不是白拉的,是有本体标签输入的。

特别是,飞线的建立,是在各个chunk内部的萝卜填坑都搞定的情况下才会发生。而内部填坑就意味着,it的分子萝卜已经被chunk内部的坑所同化,不相谐的百毒不侵。相谐的一路绿灯。

李:感觉是 如果句子处理满足下列条件,能穷举两两关系 而且有足够数据训练去计算这种关系,那么我们引以为傲的结构,其桥梁价值就会趋近于零,因为位置信息加语义相谐的 attentions,应该可以搞定这种 hidden correlations。这样说来,attention is all we need 即便从字面上看 也说的不错。

自然语言说复杂也复杂 但说简单也简单。简单在于,有无穷无尽的语料,预训练可以发掘很多语言知识。到下游应用的时候 单位开始变小,小到一句一词 大也不过一篇文章 对于 attention,这都不算事。(也有人现在尝试把 input 扩大到一组文件,来做跨文件自动摘要,结果也让人开眼)。

白:NN容纳了结构,正常。

李:可几年前,我们是不相信神经系统可以搞定 long distance(hidden) correlations 的,当时觉得非符号结构不能的。这个不服不行。 

白:

在这个模型看来,光刻机是“我们的”了。其实是“它的”。“我们”的间接宾语角色没有被揭示出来。如果没有那个“给”,这一切本来都是说得通的。

谁没告诉别人?

李:是 he,不是 we。嗯,这两例的确没搞定,也更 tricky 一些,有间接宾语干扰项。再等两年,等最新机制和方法慢慢渗透消化部署到商用神经翻译系统后再看看搞定了多少。总之,总体方向上是向好的,我觉得。越来越多的“非低枝果实”正在被神经吞噬,一个幽灵在地球徘徊......

 

 

【相关】
 

《李白梁严127:神经的要害在数据瓶颈与定点纠错盲区》

李维 郭进《自然语言处理答问》(商务印书馆 2020)

预告:李维《巴别塔影:符号自然语言处理之旅》(人民邮电出版社 2021)

《AI 随笔:观老教授Walid的神经网络批判有感》

昨天在 YouTube听了一个数小时的批判深度学习的小圆桌会,有点意思:

NLP is not NLU and GPT-3 - Walid Saba (可惜国内需要翻墙才能看youTube,我截屏如下)

是三个名校中青年学者对一位学富五车的老年教授,大家抱着尊重老专家的尊敬之心,与这位批判者深入交谈究竟神经网络的短板在哪里。

Walid 教授对于领域一边倒极为不满,凭着他对于电脑科学(早年好像是伯克利电脑博士)、传统机器学习和现代神经网络、符号AI、心理学、语言学等多学科的了解,讲述自己对于所谓 Bertology(就是 Bert 这类神经方法论)的批判,他的博客也有系列点评和批判。他是真有学问,所以批判中不时有闪光金句和洞见,但总体而言,说老实话,他的批判显得无力。

说来说去 他批判的焦点就是 embedding 词向量这样的数据结构虽然是伟大的发明 因为语言单位可以做各种信息计算了 但是说到底会遭遇无结构的天花板。他所谓的结构 不是指的文法结构 而是说 向量本身算来算去 无论求和 求product 还是 concatenate 这些信息操作的结果 他认为还是平面的 没有结构的。最终无论模型多大,也只是对于语言数据中可以观察到的词与词之间的某种角度的 similarity 计算而已,尽管可以捕捉语言中的 long distance dependency。

但是 语言理解有两个部分,他说,一个是说出来的 可以观察到的部分 一个是没说出来的脑补的 “我知道你知道(I know you know)”的部分。二者缺一不可,但是纯粹通过大数据训练的模型没办法得到后者,因此是跛脚的。

这个论点有其闪光之处,但是他说的太绝对了。

所谓数据里面学不到的后者 听了半天就是指的某种 ontology(本体知识),他有点遮遮掩掩,说自己几十年探索的最新创新还不想马上公布于众,又忍不住说其实就是一个 type ontology,并不复杂,规模也不大,2000 个基本概念,是四岁儿童都具备的先验知识。这其实就是 HowNet 的头部 features,也是 Longman 词典中用来定义所有词汇的大约 2000 基本词汇的某种映射物,他也许会有些不同的组织方式,不会相差太远。

总之,这些基本概念或 types 所构成的常识(他称 type checking,和 type unification)在语言理解中一直在下意识中起到脑补作用,否则人类的交流难以进行。既然人类是这样利用二者理解和交流的,电脑单单凭借大数据怎么可能模拟人类的语言能力呢?

我来批判一下他的批判(其实三位后学中的一位也不断礼貌地在反驳他的系列批判)。

蕴含常识的基本ontology确实有脑补作用,这个我们在白硕老师的语义计算群讨论过的无数案例中都有体现,但是铁口说这些东西是不可能从大数据学出来的,感觉偏差很大。他举例说 want 需要的 agent 是 human,这是四岁小孩子都知道的常识。其实大数据里面这种主语谓语的 type correlation 太普遍了,不可能不在大数据(预)训练中反映出来。

他还举了两个图片的例子,一个是女老师辅导学生的照片,一个一家三口的全家福,他说这两张图片的数据本身是没有区别的,都是成年人与孩子在一起的合照。他挑战说,因为数据本身没有区别,所以系统学不出来前者是辅导员与学生 后者是父母与孩子的关系。这个笑话闹大了 因为后学马上把两幅照片输入谷歌图片理解系统。结果是:第一张图 tutoring 的概率最高,第二张图 family 概率最高。

他实际上是犯了同样的错误 他以为数据中不存在的某种知识 其实在大数据的雷达上是有反映的。如果是小数据 可能的确找不到区别性特征或规律 数据大了就不同了。老教授这时候不得不说 你不能拿我举的个别案例说事,总之是有一种数据里面不存在的知识在起作用。这么说自然也有一些道理 但是感觉他批判的力度太弱,而且留给自己的批判空间也越来越小了。

说他有一点道理 是说大数据即便学出来常识 这些常识也是支离破碎的 没有内部的组织性和严格的结构 hierarchy,学出来的 onology 和人头脑里的 ontology (以及语义学家精雕细琢的ontology模型)总是有区别的。这一点需要承认,但很难说在语言应用现场前者的效果比后者差,本体知识与其他知识一样最终还是要落地的,要以落地赋能效益作为最终衡量。

他还举了一个有意思的例子,他说大学校园(campus)与大型商场群(mall),从物理角度观察几乎没有区别。但是人类的认知很容易区别二者。既然没有物理区别,机器怎么能够区别它们?这实际上是 tutoring 与 family 的放大版,实际上也经不起质询。二者的区别即便在物理层面也还是有蛛丝马迹。

总之,老教授的道理越来越难验证,他费了很大力气找出来的批判反例,其实大多不能构成神经网络的真正挑战。

他还举了一个 product 的例子,他说人类的ontology中有 product 的概念,可是千差万别的几乎任何东西都可以是 product,数据中怎么能区分这样的概念呢?人怎么认知的呢?人是把 product 与 manufature(制造) 结合起来的,“制造”的结果/宾语 就是 product,不管结果如何不同。同理,teacher 这样的概念离不开 teaching,先有 teaching 才会有其 agent 来做 teacher,形成这个概念的 type。这样的先验知识 他认为纯粹数据是学不出来的。因为学不出来 所以需要用到这种知识的认知理解过程 神经网络就是无能为力的。

总之,不能说他的批判完全没有道理,但是力度很不够,不足以批判神经系统的潜力。有些知识目前的神经系统也许没有捕捉,因此表现不出来,但很难说以后就没有。关键是,坚持 ontology 只能先验,不能反映在大数据中,这个论点是有问题的。常识在个例中通常是不说的,人吃饱了撑的,不会总是说出来人人都知道的常识:人要吃饭;枪可以杀人,等等。但是既然是常识,大数据的趋向中就会有反映,而捕捉这种趋向,是多维度的向量空间的拿手戏。常常是系统其实捕捉了,但因为向量表示如果不做可视化的用户友好努力,不变成人可以理解的符号或图示,我们不知道模型已经捕捉了。

他的有道理之处可能是在常识的深度推理、长链条的推理方面,目前的神经架构纯粹靠大数据可能局限于框架而学不出来,也用不起来。但大数据深度学习是一个进展变化迅速的上升领域,今天的无能就是明天的突破口,很难说推理这条路它一定跨不过去。这就好比几年前我们都觉得 coreference 和其他篇章的关联,神经网络应该是无能的,直到今天我们亲眼看到了神经系统在篇章方面的成就,这才改变成见。

这才十年左右的功夫,从CNN,到 RNN,到双向RNN,到LSTM,到 transformer,到各种 attention机制,深度学习的进步让人眼花缭乱,而每次进步都是真实可测的。以前看不上所谓的 transfer learning,觉得有点不实在,但超大规模预训练落地以后,产生了GPT3和盘古这样的庞然大物,NLP方面的 transfer learning 一下子变得触手可及了。今后几年这方面可以预见有越来越多的应用实践出现。

老教授还反复质问:心理学家、语言学家、逻辑学家这么多学者这么多代人艰苦探索语言和思维的奥秘,做了那么多的工作,难道这些人都是做无用功吗?你凭着大数据,一招打天下,只靠神经网络就搞定了人类认知?come on,give me a break

这种质询诉诸感情大于讨论问题,没多大意义。不同的路线和方法论虽然理论上不可能完全覆盖和超越另外的路线和方法论以及先贤,以此说一边倒对科学发展是不健康的,盲目迷信神经网络是不智的,两条路线可以取长补短,这些道理都没问题,但是以此来挑战新方法 还是需要拿出更加实在的立论和案例。老教授给人的感觉“虚”了些,有些倚老卖老,又有点像堂吉柯德战风车。精神可嘉。毕竟这种声音已经很少听见了,即便发声了,也很快淹没。乔姆斯基也多次批判过经验主义路线和机器学习,谁把他老人家当回事呢?都是我干我的,供着他或无视他,敬而远之。

时代大概就是这么前进的。连坚信“上帝不掷骰子”的爱因斯坦反对量子不确定性固执了一辈子,物理界还是达成共识认定老爱错了,普遍接受了现代量子理论。人不会因为曾经伟大,就可以改变潮流方向。

老教授的批判,其实还不如我们的批判深刻。我看到的神经网络的短板很简单:迄今为止,神经网络基本上不能落地领域,在NLP领域场景无所作为。

这是基本事实。原因也很清晰:就是绝大多数领域场景应用,虽然有数据,但是多是 raw corpus,缺乏或根本就没有大规模带标数据。皮之不存毛将焉附?神经网络除了预训练的语言模型以外(其实也是监督学习,只不过不需要人工标注而已,无数的语料本身就是自然标注的语言模型训练集),全部的拿得出手的应用成功都源于标注数据的监督学习。不管怎么神经,无米之炊是做不到的。于是符号路线就有了用武之地,就是这么简单。

我们可以做领域NLP的无米之炊。符号NLP在建立了平台和parser以后,就可以用“冷启动”快速结构开发来弥补领域应用的空档。无米(labeled corpus)可以,有稻(raw caorpus)就成,parser 就是碾米成稻的机器,结构就是一种通用标注,在此基础上的领域落地不过就是配置调适到最终目标,这条路经过多领域的实践证明是快速有效的。(但是,预训练也许是个竞争性威胁,在此基础上的 transfer learning 可能是个领域落地的替代品。我们当翘首以望。)

往深里说,除了带标数据的知识瓶颈外,老教授提到的外在知识,譬如领域知识图谱,等也是一个因素:不能说大数据完全学不了,但学得不系统不完整链条没有深度和结构的确是目前的神经局限。

关于领域场景冷启动,可以从我们最近的电力场景知识图谱的实践得到一些启发。这个落地尝试我体会特别深。那真是冷启动,比冷还要冷,是冻启动。平常的冷启动,产品经理至少还能给一个 完整的 specs,里面给出领域知识抽取的样例,定义的每一种类至少给一个 input-output 对照的例子,作为种子去启动冷知识的开发过程。

回顾一下背景,电力NLP落地一直想做,但觉得很棘手,主要是行业太深,看不明白。而客户自己也说不清楚需求的细节,只是感觉有必要首先把这个场景的知识学习出来才好。这次是我们自己与电力客户做沟通了解,我们的一位 leader  临时充当产品经理的角色,给了一个电力图谱的初步 schema 设计图,有原始文档作为参照,完全没有时间去做例示化 specs 定义。我们要自己消化去启动知识工程。等于是把产品经理的任务转移到我们开发人员了。几天后做出的结果与做知识融合的后处理模块开发人员接口。知识融合需要做一些 dirty work,不仅仅是应对NLP抽取的碎片化知识结果,同样要应对半结构化表格抽取出来的碎片化结果,这个过程所化的时间远多于NLP冷启动抽取(现在看来语言parsing和抽取不是真正的瓶颈,后面的融合目前是瓶颈,这方面我们需要一些时间抽象和总结,来提高平台化的融合能力)。不久,做出来的图谱原型看上去有模有样,符合 schema 的设计要求。

电力领域的数据很各别。这与我们以前尝试过的金融文书、法律文本完全不同,因为金融法律虽然是领域风格的文字,但读起来与新闻类还是有不少类似的地方,起码外行也能大体读得懂,因此消化理解图谱里面的关系,心里感觉有谱。可是到了电力,虽然其实行文很规范(没有风格,完全的机械性文字表述,力求精确),但是没有领域基本知识,很难看懂,无从下手。

刚拿到薄薄的一页 schema 设计图,也是一头雾水,一组抽象的概念连接起来,到底想表示什么领域知识呢,不确定。但是几个小时对着原始文档的对照讲解和讨论,很快就冰释了这个领域知识的壁垒,有点豁然开朗的感觉。

说这是一次奇妙的NLP领域落地的产研经历,是很真实的感受。今后遇到其他暂新的领域,也不要被表面的“黑话”形式所吓倒。只要冷启动的方法论过硬,感觉困难的领域知识理解问题,也许实际落地操作层面就是一层没有捅破的窗户纸。

我们主打的RPA(Robotic Process Automation,机器人过程自动化)是普适的,可以触达各种各样的不同领域场景。由此带来的更加“高深”的领域知识抽取任务就会五花八门。这拓展了我们对于不同领域数据的视野。方法论和NLP平台的威力和意义就在于,任你千变万化,万变不离其宗。这个宗不仅仅是指背后的语言结构(这个高深一点,培训难度也大一些),也包括从原始数据自动做领域词汇习得(关键的一环)、上下文约束机制(线性的、结构的,线性的约束比较简单,能很快培训一线人员做低代码开发)、多层松绑机制、冷启动质量保障控制流程(没有大量标注数据也可以对精度和召回做系统性控制)等一系列配套工具,这些就是可以普适的NLP的平台工具。

这样的零标注数据的领域场景,神经纵然三头六臂,奈其何也?

 

 

 

【相关】
 
 

李维 郭进《自然语言处理答问》(商务印书馆 2020)

预告:李维《巴别塔影:符号自然语言处理之旅》(人民邮电出版社 2021)