Skip to content Skip to footer

自然语言处理 — 9项关键技术讲解

image-20240111214240735

介绍

自然语言处理 (NLP) 是人工智能的一个分支,可帮助计算机理解人类语言并与之交互。

1. 代币化

使用 NLP 分析任何文本的第一步是将其分解为称为标记的更小块。标记可以是句子、单个单词、字符或子单词。常见的方法包括将文本拆分为单词、字符或 n-gram。对于许多语言来说,单词可以很好地用作标记。但对于像中文这样的语言,单个字符是更有意义的标记。

NLTK 和 spaCy 都是用于标记化和各种其他 NLP 任务的强大工具——让我们尝试一下它们吧!

image-20240111214321771

在标记化过程中,通常会丢弃空格和标点符号以提取有意义的语义单元,同时将原始文本数据结构化为统一的标记序列。此标记化可作为后续 NLP 分析的输入。

image-20240111214354889

我们可以将spaCy用于相同的目的。

image-20240111214420751

您可能需要熟悉一些术语: 语料库 > 文档 > 第 > 段 句子 > 标记

  • 语料库是文本文档的集合。
  • 文档:文本单元,例如推文、新闻文章或产品评论。
  • 段落:文档中的部分。
  • 句子:传达完整思想的一系列单词。
  • 标记:标记化后的最小单位,表示单个单词、字符或 n-gram。

image-20240111214443354

2. 词性 (POS) 标记

NLP 的核心任务之一是词性 (PoS) 标记,它为文本中的每个单词提供语法类别,例如名词、动词、形容词和副词。这种技术有助于机器更准确地研究和理解人类语言,它是机器和语言之间的纽带。

PoS 标记在许多 NLP 应用程序中都是必不可少的,包括机器翻译、命名实体识别、情感分析和信息检索。

image-20240111214459886

每个单词都与其相应的 POS 标签配对。例如:

  • “John”被标记为“NNP”(专有名词,单数)。
  • “likes”被标记为“VBZ”(动词,第三人称单数现在)。
  • 'to' 被标记为 'TO' (to)。
  • “watch”被标记为“VB”(动词,基本形式)。
  • “movies”被标记为“NNS”(名词,复数)。
  • “action”被标记为“NN”(名词、普通、单数或质量)
  • '.' 被标记为 '.'(标点符号)。

我们可以使用函数 nltk.help.upenn_tagset() 来获取 nltk 库中的所有标签。

3. 词干提取和词形还原

词形还原和词干提取是文本规范化技术。这些技术用于准备单词、文本和文档以供进一步处理。在任何语言中,都有许多单词源自某些词根形式,我们将尝试使用词干提取和词形还原来获取词根形式。

干提取是一种使用规则和已知后缀列表将单词简化为词根形式的技术。词根形式可能是也可能不是语言中的合法词。例如,测试、测试、测试、可测试、不可测试这五个词的词干就是“测试”。

image-20240111214523479

在词干提取中,单词的一部分只是在尾端被砍掉以到达单词的词干。正如你稍后所看到的,有不同的算法用于找出必须砍掉多少个字符,但这些算法实际上并不知道单词所属语言的含义。

此代码演示了如何在 Python 中使用 NLTK 执行词干提取。它对输入文本进行标记,然后将词干提取应用于标记,分别提供词干提取的单词。第一个词干提取算法是 Porter 词干提取算法,它由 Martin Porter 于 1980 年创建,此后被广泛使用。此外,我使用 NLTK 中可用的其他 2 个词干分析器对结果进行比较分析。

Snowball Stemming 也是由 Martin Porter 创建的。本例中使用的方法更精确,称为“English Stemmer”或“Porter2 Stemmer”。它比原来的 Porter Stemmer 更快、更合乎逻辑。在 SnowballStemming 中,我们必须在初始化其对象时指定要词干提取的语言。截至目前,SnowballStemming 支持 16 种语言,例如阿拉伯语、德语、法语、俄语......

众所周知,Lancaster 词干提取算法比其他词干提取算法(如 Porter 和 Snowball 算法)更具侵略性,因此可能产生不太准确的结果。

image-20240111214600311

image-20240111214636676

  • naturlanguagtechniquwabeautiirrelev 是不被识别的词。导入(重要的词干)可能会与正确的导入混淆。
  • 只减少后缀,而不是前缀。

词干提取并不是一个完美的过程,但是,词干提取仍然是降低文本数据维度并将单词转换为通用格式进行处理的有用工具。

词形还原是一种文本预处理技术,它考虑上下文并使用全面的完整格式词典来理解单词的含义,以返回单词的基本或字典形式。因此,词形还原算法将知道该词是从该词派生而来的,因此,词元是。、、的引理是 。但是在词干提取中没有办法可以简化到它的词根或从到,词干只是砍掉了词的尾巴。bettergoodbettergoodamareiswerewasbebettergoodarebe

词根在词干提取过程中称为词干,在形还原过程中称为引理

与词干提取相反,词形还原依赖于根据单词的上下文准确确定预期的词性(下一节中的 PoS)和单词的含义。这意味着它考虑了屈折词在句子中的位置,以及围绕该句子的更大上下文,例如相邻句子。 在奇怪的文本中有 2 个不同的引理,如下所示。Caring

image-20240111214836105

词干提取和词形还原之间的区别

image-20240111214853685

词形还原比词干提取更准确,但计算成本高昂,因为它涉及字典和 PoS 过程。我们可以认为词形还原器是词干分析器的更高质量(且更昂贵)版本。然而,在大多数机器学习问题中,计算资源很少引起关注。

image-20240111214914119

4. 停用词

常用的词语(例如,“the”、“and”、“is”、“can't”、“over”等)由于其频率高、信息价值低,在NLP任务中经常被过滤掉。

image-20240111214931708

词矢量化和词嵌入

使用自然语言的机器学习面临着一个主要挑战——它的算法通常处理定义明确的固定长度的数字输入和输出,而自然语言是文本。所以我们需要把所有的单词转换成数字向量,这个过程称为单词矢量化。

词矢量化是包含嵌入和其他更简单方法的总称。

  • Bag of Words (BoW) 和 TF-IDF 是将单词或文本文档转换为稀疏和高维向量空间(例如,100,000 个维度)的简单方法,其中每个维度对应一个唯一的单词。
  • 词嵌入:在连续向量空间中将转换为密集、低维、连续值的向量。相似的单词或具有相关含义的单词在嵌入空间中更紧密地放在一起。一些流行的单词嵌入技术是 Word2Vec、GloVe、BERT 和 FastText。Word2Vec 和 FastText 使用神经网络来学习矢量化。

5. 词袋 (BoW)

将文本数据转换为向量(又名特征提取)的一种流行且简单的方法称为文本词袋模型。

词袋是描述文档中单词出现的文本的表示形式。它涉及两件事:

  • 已知单词的词汇表。
  • 已知单词是否存在的度量。

它被称为单词“袋”,因为有关文档中单词顺序或结构的任何信息都会被丢弃。该模型只关注已知单词是否出现在文档中,而不关注文档中的哪个位置。