入门 | 自然语言处理是如何工作的?一步步教你构建 NLP 流水线 ...

图灵汇官网

计算机擅长处理结构化的数据,但人类语言通常是非结构化的,因此计算机理解人类语言存在一定的难度。自然语言处理(NLP)技术使得计算机能够更好地理解并处理人类语言,从而在各种应用场景中发挥重要作用。

计算机如何理解人类语言?

计算机在处理结构化数据时表现出色,但在理解人类语言方面却面临挑战。人类语言是以文化习惯为基础的,而计算机则需要通过一定的方法将语言结构化,才能更好地理解其含义。NLP 技术就是将人类语言转化为计算机能够处理的形式,从而实现对文本的理解和处理。

NLP 技术简介

自然语言处理(NLP)是人工智能的一个分支,专注于让计算机能够理解和处理人类语言。NLP 技术包括多个步骤,例如句子分割、词汇标记化、词性标注、文本归一化、停用词处理、依存关系解析、命名实体识别(NER)、共指解析等。这些步骤共同构成了 NLP 流水线,使得计算机可以从文本中提取有用的信息。

NLP 流水线详解

步骤 1:句子分割

首先,我们需要将文本拆分成单独的句子。这样做是为了便于逐句处理,每句话可以被视为一个独立的单元。例如,以下文本可以被拆分为三个句子: 1. 伦敦是英格兰的首都同时也是英国人口最多的城市。 2. 位于大不列颠岛东南部的泰晤士河流域的伦敦是两千年来的主要人类定居点。 3. 由罗马人建立,取名为伦蒂尼恩(Londinium)。

步骤 2:词汇标记化

接下来,我们将每个句子拆分成单词或标记。例如,第一句话可以被拆分为: - 伦敦 - 是 - 英格兰 - 的 - 首都 - 同时 - 也是 - 英国 - 人口 - 最多 - 的 - 城市

步骤 3:词性标注

词性标注是指确定每个单词的词性,如名词、动词、形容词等。这一步可以帮助计算机理解每个单词在句子中的作用。例如,“伦敦”是名词,“是”是动词。

步骤 4:词形还原

词形还原是将单词转换为其基本形式,以便更好地理解文本。例如,“is”会被还原为“be”。

步骤 5:停用词处理

停用词是指那些频繁出现但对文本意义贡献较小的词语,如“和”、“的”等。在处理文本时,可以将这些词过滤掉,以减少噪音。

步骤 6:依存关系解析

依存关系解析是指确定句子中各个单词之间的关系,从而构建句子的依存树。这一步可以帮助计算机更好地理解句子的结构。

步骤 7:命名实体识别(NER)

命名实体识别是指识别文本中的具体实体,如地点、人物、组织等。例如,“伦敦”、“英格兰”等。

步骤 8:共指解析

共指解析是指识别句子中代词所指的具体对象。例如,“它”可能指的是“伦敦”。

NLP 流水线的 Python 实现

借助像 spaCy 这样的 Python 库,我们可以轻松实现上述 NLP 流水线。以下是一个简单的示例代码:

```python import spacy

加载大型英语模型

nlp = spacy.load('encoreweb_lg')

待处理的文本

text = """ 伦敦是英格兰的首都同时也是英国人口最多的城市。位于大不列颠岛东南部的泰晤士河流域的伦敦是两千年来的主要人类定居点。由罗马人建立,取名为伦蒂尼恩(Londinium)。 """

使用 spaCy 处理文本

doc = nlp(text)

输出所有命名实体

for entity in doc.ents: print(f"{entity.text} ({entity.label_})")

实体替换示例

def replacenamewithplaceholder(token): if token.entiob != 0 and token.enttype == "PERSON": return "[REDACTED] " else: return token.string

def scrub(text): doc = nlp(text) tokens = map(replacenamewith_placeholder, doc) return "".join(tokens)

s = """ 在1950年,艾伦·图灵发表了著名文章《计算机器与智能》。1957年,诺姆·乔姆斯基的《句法结构》以“普遍语法”革命性地改变了语言学。 """ print(scrub(s)) ```

数据提取

NLP 还可以用于数据提取,例如通过半结构化语句提取方法从文本中提取特定事实。例如,可以搜索包含特定主题的句子,从而获取关于伦敦的更多信息。

总结

NLP 技术使得计算机能够更好地理解和处理人类语言。通过将文本分解成多个步骤,并借助像 spaCy 这样的工具,我们可以轻松实现复杂的文本处理任务,从而从文本中提取有价值的信息。

本文来源: 图灵汇 文章作者: 科技天龙