自然语言处理(NLP)简介

自然语言处理(NLP)

自然语言处理(Natural Language Processing, NLP)是人工智能领域的一个重要分支,研究如何使计算机能够理解、处理和生成自然语言文本。NLP技术在信息检索、机器翻译、语音识别、情感分析、对话系统等领域有着广泛的应用。

1. NLP基础

2. NLP任务

2.1 数据预处理

NLP任务的第一步是数据预处理,包括收集语料库、文本清洗、分词、去掉停用词(可选)、标准化和特征提取等 任务流程图如下:

2.1.1 收集语料库

每个机器学习问题都从数据开始,例如电子邮件,帖子或推文列表。这些数据的集合称为语料库。语料库可以是一个文本文件,一个文件夹,一个网站,一个数据库或任何其他数据源。

2.1.2 文本清洗

文本清洗是指从文本中删除不必要的字符,例如标点符号、特殊字符、HTML标签等。文本清洗的目的是减少文本数据的噪声,使文本数据更加干净。

数据类型 解释 常用格式
结构化数据 数据以表格形式存储,每行代表一个样本,每列代表一个特征 CSV、Excel、数据库
非结构化数据 数据没有固定的格式,例如文本、图像、音频、视频等 文本、图像、音频、视频
半结构化数据 数据介于结构化数据和非结构化数据之间 XML、JSON、HTML

2.1.3 分词

分词是将文本分割成一个个单词或词组的过程。分词是NLP任务的第一步,也是NLP任务的基础。分词的目的是将文本数据转换为计算机可以理解的形式。

常见的分词器都是使用机器学习算法和词典相结合,一方面能够提高分词准确率,另一方面能够改善领域适应性。目前,主流的中文分词技术采用的都是基于词典最大概率路径+未登录词识别(HMM)的方案,其中典型的代表就是jieba分词,一个热门的多语言中文分词包。

可以借助一些开源的分词工具,如jieba、NLTK、spaCy等。

2.1.4 标准化

标准化是将文本数据转换为统一的格式,例如将文本转换为小写、去掉标点符号、去掉数字等。标准化的目的是减少文本数据的噪声,使文本数据更加干净。 包括:去掉停用词、词汇表、训练数据等等。

a 去掉停用词

停用词是指在文本中频繁出现,但对文本分析没有实际意义的词,如“的”、“是”、“在”、“其中”、“况且”、“什么”等。 但这一步不是必须的,要根据实际业务进行选择,像关键词挖掘就需要去掉停用词,而像训练词向量就不需要。

b 词汇表

词汇表是为语料库建立一个所有不重复词的列表,每个词对应一个索引值,并索引值不可以改变。词汇表的最大作用就是可以将词转化成一个向量,即One-Hot编码。

One-Hot编码的缺点 当词汇表的维度特别大的时候,就会导致经过One-Hot编码后的词向量非常稀疏,同时One-Hot编码也缺少词的语义信息。由于这些问题,才有了后面大名鼎鼎的Word2vec,以及Word2vec的升级版BERT。

c 训练数据

我们在训练模型时,还需要提供训练数据。模型的学习可以大体分为两类:

  • 监督学习,在已知答案的标注数据集上,模型给出的预测结果尽可能接近真实答案,适合预测任务
  • 非监督学习,学习没有标注的数据,是要揭示关于数据隐藏结构的一些规律,适合描述任务

根据不同的学习任务,我们需要提供不同的标准化数据。一般情况下,标注数据的获取成本非常昂贵,非监督学习虽然不需要花费这样的成本,但在实际问题的解决上,主流的方式还选择监督学习,因为效果更好。

2.1.5 特征提取

特征提取是将文本数据转换为计算机可以理解的特征向量的过程。 转化的方式主要有两种:统计和Embedding