[序章] 自然语言处理初探

前言

生活在网际网路以及智慧型手机普及的今天,与外国朋友聊天、出国旅行、与国外客户开商务会议,纵使不熟悉当地语言,只要开启Google Translate,语言的隔阂立马迎刃而解。几年前大家还在诟病Google小姐翻译出来的文句十分生硬,只要句子一长就可能翻译出令人啼笑皆非的结果。然而在加入了类神经网络(artificial neural network)的架构之後,翻译品质大幅提升,产出的句子更像「人话」了。类神经网络究竟以什麽方法改善了翻译精准度?就让我用这三十天,从自然语言处理基础到加入深度学习的实务应用,一窥这项傲人技术的真实面貌。

自然语言处理

一、自然语言?非自然语言?

自然语言指的是人类日常生活赖以交流的语言和文字,像是我们所使用的中文、英文、日文等等,其活动包含了「听」、「说」、「读」、「写」四个层面。为了与人工建构的编程语言做出区别,而被冠上了「自然」二字。

二、什麽是自然语言处理?

自然语言处理(natural language processing, NLP)指的是让电脑理解、诠释以及操作人类语言文本的技术,结合了电脑科学、语言学以及人工智慧。

图片来源:https://algorithmxlab.com/blog/natural-language-processing/

单纯的自然语言处理专注在「读」、「写」两个范畴,仅处理文本资讯;广义的自然语言处理还包含了「听」、「说」将语音讯号处理的技术等。我们可以将这整个偌大的学门区分为机器理解人类语言(natural language understanding)以及生成文本(natural language generation)两大阶段性任务。前者例如辨识文字讯息当中有无不雅字词、判断一篇文章是令人愉悦的或郁闷的等等感知的过程;而後者则像是聊天机器人如何针对使用者输入的讯息做出流畅且合理的对答。

图片来源:https://towardsdatascience.com/nlp-vs-nlu-vs-nlg-know-what-you-are-trying-to-achieve-nlp-engine-part-1-1487a2c8b696

自然语言处理并非一项新创的技术或概念,早在1950年代,被誉为电脑科学与人工智慧之父的Alan Turing就提出了着名的图灵测试(又称模仿游戏)来测试机器是否能够几乎与人类无差别地以文字为沟通管道进行交流,以此来测试机器是否有思考的能力。
综观自然语言处理的发展,大略经历了三个时期:

  • 规则时期(1950年代-1990年代早期):藉由文法规则和语言模式,将所有可能的文本信息以if-then逻辑进行程序设计,让机器做出回应,是一种基於规则的方法(rule-based NLP)。第一部聊天机器人ELIZA就是以此手法创造出来的。由於此设计手法是决定性的(deterministic),加上要应付真实世界人类语言文本信息的可能性太多,需要写入的条件判断规则就愈大量,系统也会变得相当复杂。
  • 统计方法时期(1990年代-2010年代):由於电脑计算效能的提升,人们逐步摆脱了手刻规则的枷锁。传统机器学习(有别於基於神经网路架构的深度学习)演算法协助电脑在庞大的语料库(text corpus)中「找寻」语言的文法规则,以机率的形式预测结果,而非给出单一结论,从而实现从样本(电脑中存有的文本资料)推断母体(真实世界的所有语境)特徵的推论统计(statistical inference)。举例来说,基於机率论中马可夫模型(Markov model)计算文本中连续出现的N个语词频度的N元语法(N-gram model)被运用来建构翻译器;监督式学习(supervised learning)范畴里的决策树(decision tree)、K-近邻演算法(k-nearest neighbours, kNN)以及单纯贝氏分类器(naive Bayes classifier)等演算法被运用来判别一段文字讯息是正向、负向或是中性的情境分析(sentiment anaylsis)。
  • 深度学习时期(2013-现在):类神经网路能做到自动撷取资料特徵,克服了传统机器学习需要仰赖人工进行特徵工程的缺点。循环神经网络(recurrent neural network, RNN)具有记忆历史资讯的特性,在处理有先後顺序性的文字讯息时具有强大的优势。本系列後半部分将着重在此范畴,在此就不赘述。

https://ithelp.ithome.com.tw/upload/images/20210906/20140744lojjcOZevG.png

图片来源:https://developer.ibm.com/articles/cc-cognitive-natural-language-processing/

三、自然语言处理的常见任务

我们可以大致依照问题的难易程度列出主要的处理课题:

  • 文本校正(text correction):检查拼字错误、文法错误,实例如Grammarly的Grammar Check
  • 信息检索(information retrieval, IR):从大量文本集合中找寻特定资讯,例如网站或图书馆的搜寻引擎
  • 主题建模(topic modelling):从文本或语料库中发掘出潜在的主题,是为一种非监督式的机器学习(unsupervised learning)
  • 文本分类(text classification):顾名思义就是将文本分类,应用如情感分析、垃圾邮件过滤等
  • 资讯抽取(information extraction):从非结构化文字资料来源中撷取出特定资讯,例如地名、人名等专有名词,加以分辨,以存取到资料库的过程
  • 文本摘要(text summarisation):将大篇幅的文章浓缩成简短的金句,依照直接与间接从文本撷取资讯,又分为提取式(extractive)和抽象型(abstractive)
  • 问答系统(question answering):以口语化的方式进行提问,机器则回传明确的答案,例如IBM开发的华生系统
  • 机器翻译(machine translation):藉由程序将一语言转换为另一语言的技术,例如我们熟知的Google Translate、Microsoft Bing Translator

四、自然语言处理的基本流程

现今自然语言处理系统仰赖数据,以机器学习(包含深度学习)的模式进行运作。主要流程为:

  1. 资料撷取
  2. 资料净化
  3. 资料前处理
  4. 特徵工程(类神经网络则自动化此步骤)
  5. 建模
  6. 模型评估
  7. 模型布署
  8. 效果监控及模型升级
    https://ithelp.ithome.com.tw/upload/images/20210907/20140744Kx7TUlsDOg.jpg

图片来源:Practical Natural Language Processing by S. Vajjala et. al

本系列篇章安排

日期 主题
01 序章:自然语言处理初探
02 ~ 07 自然语言处理基础
08 ~ 15 常见的自然语言处理技术
16 深度学习回顾
17 ~ 29 神经机器翻译理论与实作
30 总结与未来展望

之所以选定这个主题,是基於自己对於语言学及人工智慧兴趣的结合。身为初次正式接触自然语言处理的我,接下来一个月的时光,将会将自己一路上所学到的重点整理成文章并每天更新。表达有误之处,还希望能不吝指正。今天的篇章就写到这里,我们明天见!

阅读更多

  1. How Google is using emerging AI techniques to improve language translation quality
  2. Google Neural Machine Learning
  3. Using Decision Trees to Classfiy Text
  4. Common NLP Tasks

<<:  Day 9-假物件 (Fake) - 虚设常式 (Stub)-1 (核心技术-1)

>>:  Python 关系运算符号和if用法

Day 03 - 关於 const, static, extern 的三两事

#前言 由於前一篇使用了const与extern,但对这两者还不太了解,於是又去看了其他人的文章,试...

State 和生命周期(上)(Day5)

在讲到生命周期之前要确认理解前面做过的两件事: setInterval 去更新画面的例子 记得有 c...

python RNN 实现八位元的二进制数加法运算

import copy, numpy as np np.random.seed(0) # compu...

创建App第一步

建立了全新的Xcard专案,并在Main.storyboard界面页中拖拉数个Image View用...

[CSS] Flex/Grid Layout Modules, part 12

今天继续来讲 Grid 单元,昨天提到了对齐基本用法,今天继续来讲对齐与留白。不过一开始,还是先解释...