【MindSpore易点通】数据处理之中文文本数据预处理

简介

自然语言处理(NLP)是机器语言和人类语言之间的翻译官,用来实现人机交流的目的。简单地归纳下深度学习中的NLP流程,如下图所示:

【MindSpore易点通】数据处理之中文文本数据预处理_第1张图片

本次要和大家分享的是Step1语料预处理部分,语料还有中文和英文等多种语言,本次分享的是中文语料的预处理,基本的步骤如下图所示:

【MindSpore易点通】数据处理之中文文本数据预处理_第2张图片

分词

  • 什么是分词:就是将句子、段落、文章这种长文本,分解为以字词为单位的数据结构,方便后续的处理分析。
  • 为什么要分词:机器学习的方法可以解决很多很复杂的问题,主要是通过创建模型,把问题转化为数学问题。同样的NLP也是类似的原理,原始的文本数据是没有结构的,那么可以将这些数据变成有结构的数据,从而再通过数学模型分析问题,分词就是文本结构化的第一步。

  • 为什么是分成词:不宜分的太细,因为再小就是单独的字,在很多情况中一个单独的字表示的含义是不完整的。比如一个字‘量’,可以是‘量子’,也可以是‘数量’。如果是一整个句子信息量又会过大。所以词是目前最合适的粒度。
  • 中文分词目前的3个难点:
  • 没有统一的标准:目前中文分词没有统一的标准,也没有公认的规范。不同的公司和组织各有各的方法和规则。
  • 歧义词不会切分:例如「兵乓球拍卖完了」就有2种分词方式表达了2种不同的含义:「乒乓球 \ 拍卖 \ 完了」;「乒乓 \ 球拍 \ 卖 \ 完了」。
  • 新词的补充:大量的新词被造出来,「火钳刘明」这类词就需要快速识别。
  • 典型的分词方法:基于词典、基于统计和基于深度学习,三种方法都有各自的优缺点和特性,可参考下图中的总结:

常用的分词器都是使用机器学习算法和词典相结合,找到一个平衡点,一方面能够提高分词准确率,另一方面能够改善适应性。

词性标注

  • 什么是词性标注:在汉语中,词可以分成实词和虚词,实词中又包括体词、谓词等,体词中又可以分出名词和代词等。词性标注就是在给定句子中判定每个词的语法范畴,确定其词性并加以标注的过程。
  • 中文词性标注的难点:汉语是一种缺乏词形态变化的语言,语言学界在词性划分的目的、标准等问题上还存在争议。所以目前还没有一个统的被广泛认可汉语词类划分标准,词类划分的粒度和标记符号都不统一。词类划分标准和标记符号集的差异,以及分词规范的含混性,给中文信息处理带来了极大的困难。
  • 词性标注的常用方法:这里介绍常见的四类词性标注方法,基于规则、基于统计、基于统计方法与规则和基于深度学习方法:

【MindSpore易点通】数据处理之中文文本数据预处理_第3张图片

基于规则的词性标注方法是提出较早的一种词性标注方法,其基本思想是按兼类词搭配关系和上下文语境建造词类消歧规则。早期的词类标注规则一般由人工构建。随着标注语料库规模的增大,可利用的资源也变得越来越多,这时候以人工提取规则的方法显然变得不现实,于是还提出了基于机器学习的规则自动提出方法。

基于统计模型的词性标注方法将词性标注看作是一个序列标注问题。其基本思想是:给定带有各自标注的词的序列,我们可以确定下一个词最可能的词性。现在已经有隐马尔可夫模型(HMM)、条件随机域(CRF)等统计模型了,这些模型可以使用有标记数据的大型语料库进行训练,而有标记的数据则是指其中每一个词都分配了正确的词性标注的文本。

基于统计方法与规则方法相结合的词性标注方法,这类方法的主要特点在于对统计标注结果的筛选,只对那些被认为可疑的标注结果,才采用规则方法进行歧义消解,而不是对所有情况都既使用统计方法又使用规则方法。

基于深度学习的词性标注方法,可以当作序列标注的任务来做,目前深度学习解决序列标注任务常用方法包括LSTM+CRF、BiLSTM+CRF等。

命名体识别

  • 什么是命名体识别:称作‘专名识别’,是指识别文本中具有特定意义的实体,主要包括人名、地名、机构名、专有名词等。简单的讲,就是识别自然文本中的实体指称的边界和类别。
  • 命名体识别的进展:这是在网上找到的一个总结图:

【MindSpore易点通】数据处理之中文文本数据预处理_第4张图片

  • 常用的命名体识别方法:早期的命名实体识别方法基本是基于规则的。之后由于语料库的扩展丰富,一大批机器学习的方法也出现在命名实体类识别任务。可以分为图中的四类:

监督学习方法:和机器学习中的监督学习概念相似,需要利用大规模的已标注语料对模型进行参数训练。

半监督的学习方法:减少了对已标注语料的依赖,利用标注的小数据集(种子数据)自举学习。

无监督的学习方法:主要利用词汇资源(如WordNet)等进行上下文聚类。

混合方法:几种模型相结合或利用统计方法和人工总结的知识库。

去除停用词

  • 为什么要去除停用词:停用词是语言中包含的功能词,这些功能词极其普遍,与其他词相比,功能词没有什么实际含义,比如‘的’、‘那’、‘之’等。与其他词相比,功能词没有什么实际含义。所以在处理文本数据时会过滤掉某些字或词。
  • 去除停用词的好处:通过删除这些词,我们从文本中删除了底层信息,以便更加关注重要的信息。所以删除这些词语并不会对训练任务产生负面影响。删除停用词还会减少数据集的大小,减小模型复杂度,从而减少训练时间。
  • 去除停用词的方法:基于停用词表去除停用词。

总结

本篇分享简单梳理了中文文本数据集的预处理顺序,按照顺序是:分词、词性标注、命名体识别和去除停用词。同时也分析了每个步骤的现状、用处和实现方法。这就是深度学习中NLP的中文文本数据处理内容,谢谢浏览~

你可能感兴趣的:(人工智能,自然语言处理,机器学习)