自然语言处理 (NLP)

利用计算机对人类日常使用的语言 (自然语言) 进行处理、理解和生成的技术总称。涵盖分词、句法分析、语义分析、机器翻译、情感分析等领域。

自然语言处理 (Natural Language Processing,NLP) 是用计算机处理人类语言的技术领域。"自然语言"是相对于编程语言等人工语言而言的概念,指中文、英文、日文等人类自然发展出来的语言。搜索引擎、语音助手、机器翻译、聊天机器人、垃圾邮件过滤器等日常使用的服务,其中很多都由 NLP 技术支撑。

NLP 的处理是分层构成的。最底层的分词把文本切分为词语并标注词性。句法分析解析词语之间的语法关系 (主语与谓语、修饰与被修饰)。语义分析理解句子的含义,消除词义歧义。篇章分析处理跨越句子的上下文 (指代消解、句间的逻辑关系)。由于每一层都依赖下层的结果,在这种构成下分词的精度就左右着整体的质量。不过这是基于规则或统计的经典构成,当前主流的大语言模型并不显式地经过这些阶段,而是直接从输入学到输出。即便如此,分层的区分依然有用:它能帮你分辨出是在处理的哪一环、把什么弄错了。

中文 NLP 面临英文所没有的特有课题。第一,词语之间没有空格,要数词数或建立检索用的索引,就必须先做分词 (大语言模型是按与词并不一致的子串单位切分输入的,因此不含这道工序)。第二,主语经常省略,需要从上下文补出来。第三,量词系统复杂,同样的意思也要按名词搭配不同的量词,如一"条"鱼、一"只"猫。第四,同一个汉字的读音随语境而变 (多音字,如"行"读 xíng 或 háng),注音的推定很困难。

2017 年 Transformer 架构问世之后,NLP 迎来了飞跃式的发展。Google 于 2018 年公开的 BERT 学习了考虑上下文的词语表示,同年起步的 GPT 系列实现了大规模的文本生成。这两个系列的角色并不相同。BERT 的构成只有读取输入的编码器,它本身无法生成文章,要针对分类、抽取等目的追加训练之后再用。能够给出指令让它写文章的是 GPT 系的生成模型;除了翻译、摘要、问答这些以往的任务之外,它的应用还扩展到了编程和创作等过去不属于自然语言处理范畴的领域。

自然语言处理也直接关系到清点文章的量。中文里要数"词数",前提是先决定把哪里看作一个词,也就是分词。要数"句数",则需要判断标点是不是真的表示句末,还是出现在数字或缩写当中,这就是句子边界检测。阅读时间的估算,也是根据词数和单句的长度算出来的。在比较清点结果时,请把用哪个分析器、哪部词典切分的也一并对齐。同一篇文章,分析器或词典不同,词数就会变。

分享这篇文章