自然语言处理基础

自然语言处理基础

  • 自然语言处理基础
    • 文本的表示
      • 词的独热表示
      • 词的分布式表示
      • 词嵌入表示
      • 文本的词袋表示
    • 自然语言处理任务
      • 语言模型
      • NLP基础任务
      • NLP应用任务
    • 基本问题
      • 文本分类问题
      • 结构预测问题
      • 序列到序列问题

自然语言处理基础

文本的表示

在使用字符串表示(也叫符号表示)计算文本的语义信息时,往往需要使用基于规则的方法。

  • 问题
    ○ 规则的归纳依赖专家的经验,需要花费大量的人力、物力和财力
    ○ 规则的表达能力有限,很多语言现象无法用简单的规则描述
    ○ 随着规则的增多,规则之间可能存在矛盾和冲突的情况,导致最终无法做出决策

词的独热表示

用一个词表大小的向量来表示一个词,对应该词维度的值设为1,其余为0

  • 问题
    • 向量之间两两正交,导致即使语义相似的词之间余弦相似度也为0
    • 数据稀疏问题
      • 缓解方法:引入其他与词有关的特征,比如词性、词义、词聚类特征等,缺点是特征设计费时费力

词的分布式表示

  • 分布式语义假设

词的含义可以由其上下文的分布表示

  • 如何构建词的分布式表示

构建词语共现频次表,每一行表示词的向量表示

  • 除了词,上下文的选择有很多种方式,可以使用词在句子中的一个固定窗口内的词作为其上下文,也可以使用词所在的文档本身作为上下文。
    前者得到的词表示将更多地反映词的局部性质:具有相似词法、句法属性的词将会具有相似的向量表示。而后者将更多地反映词代表的主题信息

自然语言处理基础_第1张图片

  • 问题
    • 高频词误导计算结果
    • 共现频次无法反映词之间的高阶关系
    • 仍然存在稀疏性的问题
  • 解决方案
    • 点互信息解决高频词误导计算结果的问题
    • 奇异值分解解决共现频次无法反映词之间高阶关系的问题
      • 仍然存在的问题
      • 当共现矩阵规模较大时,奇异值分解的运行速度非常慢
      • 如果想在原来语料库的基础上增加更多的数据,则需要重新运行奇异值分解算法,代价非常高
      • 分布式表示只能用于表示比较短的单元,如词或短语等,如果待表示的单元比较长,如段落、句子等,由于与其共现的上下文会非常少,则无法获得有效的分布式表示
      • 分布式表示一旦训练完成,则无法修改,也就是说,无法根据具体的任务调整
        其表示方式
      • 解决方法:词嵌入

词嵌入表示

  • 与词的分布式表示类似,词嵌入表示(Word Embedding)也使用一个连续、低维、稠密的向量来表示词,经常直接简称为词向量
  • 词向量中的向量值,是随着目标任务的优化过程自动调整的
  • 如果目标任务的训练数据比较少,学习合适的词向量难度会比较大
  • 利用自然语言文本中所蕴含的自监督学习信号(即词与上下文的共现信息),先来预训练词向量,往往会获得更好的结果

文本的词袋表示

所谓词袋表示,就是假设文本中的词语是没有顺序的集合,将文本中的全部词所对应的向量表示(既可以是独热表示,也可以是分布式表示或词向量)相加,即构成了文本的向量表示。

  • 缺点
    • 没有考虑词的顺序信息
    • 无法融入上下文信息
      • 比如要表示“不喜欢”,只能将两个词的向量相加,无法进行更细致的语义操作
      • 可以通过增加词表的方法加以解决,比如引入二元词(Bigram)词表,然后同时学习二元词的词向量表示
        • 这种方法既能部分解决否定词的问题,也能部分解决局部词序的问题,但是随着词表的增大,会引入更严重的数据稀疏问题

自然语言处理任务

语言模型

是描述自然语言概率分布的模型,是一个非常基础和重要的自然语言处理任务

  • 基本任务
    • 在给定词序列w1w2··· wt−1的条件下,对下一时刻t可能出现的词wt的条件概率P (wt|w1w2··· wt−1)进行估计。一般地,把w1w2··· wt−1称为wt的历史。
  • 问题
    • 随着句子长度的增加,w1:i−1出现的次数会越来越少,甚至从未出现过,那么P (wi|w1:i−1)则很可能为0,此时对于概率估计就没有意义了
  • 解决方法
    • 马尔科夫假设

      假设“下一个词出现的概率只依赖于它前面n−1个词

      • 满足这种假设的模型,被称为N元语法或N元文法(N-gram)模型

      特别地,当n=1时,下一个词的出现独立于其历史,相应的一元语法通常记作unigram
      当n=2时,下一个词只依赖于前1个词,对应的二元语法记作bigram二元语法模型也被称为一阶马尔可夫链(Markov Chain)
      类似的,三元语法假设(n=3)也被称为二阶马尔可夫假设,相应的三元语法记作trigram。
      n的取值越大,考虑的历史越完整。在unigram模型中,由于词与词之间相互独立,因此它是与语序无关的。

  • 马尔科夫假设不足之处

    当n比较大或者测试句子中含有未登录词(Out-Of-Vocabulary,OOV)时,仍然会出现“零概率”问题。由于数据的稀疏性,训练数据很难覆盖测试数据中所有可能出现的N-gram,但这并不意味着这些N-gram出现的概率为0。

    • 解决方法:平滑
  • 折扣法
    • 一种最基本,也最简单的平滑算法
    • 基本思想是“损有余而补不足”,即从频繁出现的Ngram中匀出一部分概率并分配给低频次(含零频次)的N-gram,从而使得整体概率分布趋于均匀
    • 加1平滑
      • 一种典型的折扣法,也被称为拉普拉斯平滑(Laplace Smoothing)
      • 它假设所有N-gram的频次比实际出现的频次多一次
        • 技巧:所有未登录词可以映射为一个区别于其他已知词汇的独立标
          记,如<UNK>
      • 不足之处

        在实际应用中,尤其当训练数据较小时,加1平滑将对低频次或零频次事件给出过高的概率估计

      • 解决方案
        • 加δ平滑
          • 在加δ平滑中,假设所有事件的频次比实际出现的频次多δ次,其中0≤δ≤1
          • 关于超参数δ的取值,需要用到开发集数据。根据开发集上的困惑度对不同δ取值下
            的语言模型进行评价,最终将最优的δ用于测试集。
  • 仍然存在问题

    由于引入了马尔可夫假设,N元语言模型无法对长度超过N 的长距离词语依赖关系进行建模,如果将 N 扩大,又会带来更严重的数据稀疏问题,同时还会急剧增加模型的参数量(N-gram数目),为存储和计算都带来极大的挑战。

    • 神经网络语言模型可以很好地解决这些问题
  • LM性能评价
    • 外部任务评价

      • 实现困难、计算代价大
    • 基于困惑度(Perplexity,PPL)的内部评价

      模型分配给测试集中每一个词的概率的几何平均值的倒数
      自然语言处理基础_第2张图片

      • 困惑度越小,意味着单词序列的概率越大,也意味着模型能够更好地解释测试集中的数据
      • 困惑度越低的语言模型并不总是能在外部任务上取得更好的性能指标,但是两者之间通常呈现出一定的正相关性
      • 困惑度可以作为一种快速评价语言模型性能的指标,而在将其应用于下游任务时,仍然需要根据其在具体任务上的表现进行评价

NLP基础任务

NLP应用任务

基本问题

文本分类问题

结构预测问题

序列到序列问题

参考资料
[1] 《自然语言处理 基于预训练模型的方法 》(车万翔郭江)

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