互联网资讯 / 人工智能 · 2023年10月31日

NLP初学者指南:轻松掌握语料预处理

自然语言处理是 AI 皇冠上的明珠,而语料预处理是自然语言处理的基础。

机器能跟人类交流吗?能像人类一样理解文本吗?这是大家对人工智能最初的想象。如今,NLP 技术可以充当人类和机器之间沟通的桥梁。环顾周围的生活,我们随时可以享受到 NLP 技术带来的便利,语音识别、机器翻译、问答系统等等。

这些技术看起来高深莫测,实则都有章可循。当你了解算法的底层原理后,你可能会恍然大悟,嗨!这也不是很难理解嘛。

现在你可以跟随本文,初探 NLP 技术的地基(语料预处理)是如何构建起来的。在之后的文章中,我们将循序渐进地介绍 NLP 中的特征提取以及最新算法解读。

语料,顾名思义就是我们平时所说的文本,带有文字描述性的文本都可以归类于语料。但这种原始文本无法直接用来训练模型,需要进行前期预处理。

语料预处理方法主要包括数据清洗、分词、词性标注、去停用词等。

语料清洗

语料清洗即保留语料中有用的数据,删除噪音数据。常见的清洗方式有:人工去重、对齐、删除、标注等。

以下面的文本为例。该文本不仅包含中文字符,还包括数字、英文字符、标点等非常规字符,这些都是无意义的信息,需要进行清洗。

像上述情况,清洗的方法主要是通过正则表达式。可以编写简短的 Python 小脚本来解决,代码如下:

清洗后的结果:

除了上述需要清洗的形式以外,噪音数据还包括文本重复、错误、缺失、异常等。清洗的方法包括手动处理,或者通过开发小工具、写个简短的小程序,这些方式都可以进行数据清洗。

分词

数据清洗完,就可以进行下一步工序:文本分词。文本分词,即将文本分成一个一个的词语。常用的分词方法有基于规则的、基于统计的分词方法,而统计的样本内容来自于一些标准的语料库。

例如这个句子:「小明住在朝阳区」,我们期望语料库统计后分词的结果是:「小明 / 住在 / 朝阳 / 区」,而不是「小明 / 住在 / 朝 / 阳区」。那么如何做到这一点呢?

从统计的角度,可以通过条件概率分布来解决。对于一个新的句子,我们可以通过计算各种分词方法对应的联合分布概率,找到最大概率对应的分词方法,即为最优分词。

到目前为止,研究者已经开发出许多分词实用小工具,这些工具使用都很简单。如果你对分词没有特殊需求,你可以直接使用这些分词工具。

词性标注

词性标注指为分词结果中的每个词标注正确的词性,即确定每个词是名词、动词、形容词或其他词性的过程。

词性标注有多个重要作用。

第一,消除歧义。一些词在不同语境或不同用法时表示不同的意思。比如在这两个句子「这只狗狗的名字叫开心」和「我今天很开心」中,「开心」就代表了不同的含义。我们可以通过词性标注进行区分。

第二,强化基于单词的特征。还是以上句为例,如果不进行词性标注,两个「开心」会被认为是同义词,词频为 2,这会在后续分析中引入误差。

此外,词性标注还具有标准化、词形还原,以及有效移除停用词的作用。

常用的词性标注方法有基于规则的、基于统计的算法,比如:最大熵词性标注、HMM 词性标注等。

去停用词

我们人类在接受消息时,都会滤除无效信息,筛选有用信息。对于自然语言来说,去停用词是一种很明智的操作。

一篇文本,不管是中文还是英文,都有用来起连接作用的连词、虚词、语气词等无意义的词,比如「的」、「吧」、「但是」等等。这些词没有具体的含义,只是起到衔接句子以及增强语气的作用。这些词对文本分析也没有任何帮助,因此我们需要对分词后的数据做停用词处理。

但是我们应该谨慎决定该去除哪类停用词。

词频统计

词频统计即统计分词后文本的词频,目的是找出对文本影响最大的词汇,是文本挖掘的重要手段。统计这些词出现的频率可以帮助我们了解文章重点强调了什么,进而方便后续构建模型。

比如我们可以统计四大名著之一《红楼梦》中词频在前 28 的词语,结果如下:

从上图可以看到,《红楼梦》中哪个人物的篇幅最多,哪个人物曹雪芹更注重。即使我们不是红学专家,但是从统计词频中也可以分析出一些关键信息。

「万丈高楼平地起」,对于自然语言处理这座摩天大厦来说,了解底层的实现原理,或许能够帮助你更好地理解其构建过程。

OpenMagic API

Need more than content? Move into the product flow.

If you are here for model access, pricing, developer docs, or the future API console, the dedicated product path now lives on api.openmagic.ai.