语言是人类沟通的重要工具,它允许表达需求、分享想法。语言的种类繁多,包括英语、西班牙语、印地语、马拉雅拉姆语等。这些语言构成了人类智能的关键部分之一。
每天都在与人类互动,但如何与非人类实体,如手机、电脑、汽车等进行交流呢?这些机器如何理解用自然语言向它们表达的内容?这就是自然语言处理(NLP)发挥作用的地方。机器无法直接理解自然语言,因此需要对语言进行处理,使其能够理解,反之亦然。
尽管在NLP领域已经取得了巨大的进步,但前方的路还很长,全球范围内还有大量的研究工作需要进行。本文将引导了解NLP的基础知识,并帮助在这一领域打下坚实的基础。
人类语言的一个特点是其非结构化的特性,这使得处理语言变得非常困难,也是NLP中最难的部分之一。让讨论一些结构化语言的例子。以数学为例,有方程式:
y = 3x + 2
这个方程式直接传达了一个事实:一个点x乘以一个常数3,然后加上2就得到了y。随着x的变化,y也会相应地变化。
编程语言、SQL查询和脚本是其他一些使用的结构化语言。这些语言被设计成非模糊的,可以被轻松处理。它们由一些规则或语法定义,这些语法是明确定义的,可以在处理语言时使用。
当说话时,通常会尝试使用一些结构化的语言,但大多数情况下是无结构的。在说话时使用模糊不清的语言并不困难,无结构的特性对来说也不难处理。但机器并非如此,它们无法像一样处理数据。在接下来的部分中,将讨论机器如何处理语言。
对于机器来说,理解语音或文本的上下文是主要问题。让以这个梗图为例:
(此处应有图片链接,但由于版权问题,此处省略)
在这个例子中,句子以“哈哈,真有趣”开始,机器可能会认为这是正面情绪。但实际上,这里表达的是讽刺,意味着笑话并不好笑。计算机在分析这类情况时会出错。
考虑这两个句子:
1. 桌子因为太宽而无法通过窗户。
2. 桌子因为太窄而无法通过窗户。
在第一个句子中,可以推断它指的是桌子,而在第二个句子中它指的是窗户。但计算机如何理解它们呢?这是一个挑战。如何知道的,但机器不能。这是看待事物的方式。可能经历过,通过想象知道它。
构建NLP流程包括从原始文本开始,分析它们,通过提取相关词汇和含义来处理它们,理解到一定程度的上下文,这是特征提取,然后构建一个能够表达从句子中执行某项操作意图的模型。在构建流程时,工作流程可能不是线性的。
文本处理:总是会想,为什么需要处理文本?为什么不直接提供文本?因此,将看到这些文本在处理之前来自哪里。大多数文本可能来自网页,如维基百科,或者是电影中某人说的话,甚至是最喜欢的励志演说家发表的演讲。在网页的情况下,有嵌入在HTML标签中的文本,必须在提取相关特征之前只保留重要的文本。可能有URL、符号等,这些对来说可能没有意义,需要被移除。
特征提取:现在已经处理了文本,得到了相关数据,可以直接构建模型吗?不完全是。这是因为计算机是机器,它们以特殊的编码如二进制处理数据。它们无法理解所说的英语。计算机没有单词的标准表示。这些在内部是ASCII或Unicode值的序列,但不捕获含义或上下文。因此,构建一个好的模型可能需要从处理过的数据中提取适当的特征。这完全取决于想要完成的任务。以不同的形式表示单词,比如可能是图形网络,如WordNet,或者是编码形式,如Word2Vec,词袋等...
建模:在这个阶段,根据需求构建一个基于机器学习或深度学习的模型。使用拥有的数据来训练它们。这些训练过的数据被用来使模型获得经验,模型被认为从这些经验中学习。将来当新的未见过的数据到来时,模型可以预测结果,比如预测一个单词或预测情绪等...
在这里使用数值特征,这有助于使用任何机器学习模型。这些模型被用于应用程序,如网站、移动应用作为后端,以帮助为业务或产品做出决策。一些最新的使用深度学习的语言模型包括Transformers、BERT、GPT、XLNet等...