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

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

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

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

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

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

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

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

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

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

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

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

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

  多种分词工具一览。

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

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

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

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

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

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

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

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

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

  下图列出了一些常用的停用词表,你可以参照需求,选择要去除的停用词。

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

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

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

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

  在后续的文章中,我们将持续输出关于 NLP 算法的其他内容。敬请期待!

  机器之心联合旷视科技开设线上公开课:零基础入门旷视天元MegEngine,通过6次课程帮助开发者入门深度学习开发。

  8月4日,旷视研究院深度学习框架研究员刘清一将带来等二课,主要介绍数据预处理、模型搭建与调参等相关概念。欢迎大家入群学习。

  版权声明:以上内容为用户推荐收藏至CareerEngine平台,其内容(含文字、图片、视频、音频等)及知识版权均属用户或用户转发自的第三方网站,如涉嫌侵权,请通知legal@careerengine.us进行信息删除。如需查看信息来源,请点击“查看原文”。如需洽谈其它事宜,请联系contact@careerengine.us。