datawhale-cs224n-task04

task-04

  • 单词的表示
    • 对不知道的单词使用词向量的建议
    • 单词表示的两大问题
    • 单词表示的解决方法:
  • TagLM - "Pre-ELMo"
    • Named Entity Recognition(NER)
    • CoVe

单词的表示

前面我们已经学习了Word2Vec,GloVe, fastText
datawhale-cs224n-task04_第1张图片
datawhale-cs224n-task04_第2张图片

对不知道的单词使用词向量的建议

  • 常见方法:
    • 训练时:Vocab = {words occurring, say, ≥ 5 times} ∪ { < UNK >} 即:将所有罕见的词(数据集出现次数小于5)都映射为< UNK > ,为其训练一个词向量
    • 运行时:
      • 使用< UNK > 代替词汇表之外的词 OOV
    • 问题:
      • 无论是身份还是意义,都没有区分不同UNK词
    • 解决方法
      • 法一. 使用字符级模型学习词向量
        • 特别是QA中, 匹配词的身份是非常重要的,即 词向量词汇表以外的单词。
      • 法二.
        • 如果测试时的 < UNK > 单词不在你的词汇表中,但是出现在你使用的无监督词嵌入中,测试时直接使用这个向量,此外,你可以将其视为一个新的单词,并为其分配一个随机向量,将它们添加到你的词汇表。

单词表示的两大问题

  1. 对于一个 word type 总是用相同的表示,不考虑这个 word token 出现的上下文
  2. 我们对一个词只有一种表示,但是单词有不同的方面,包括语义,句法行为,以及表达/ 含义

单词表示的解决方法:

  • 在模型中,我们通过LSTM层(也许旨在语料库上训练)
  • 在那些LSTM层被训练来预测下一个单词
  • 但是这些语言模型在每一个位置生成特定与上下文的词表示

TagLM - “Pre-ELMo”

  • 想法: 想要获得单词在上下文的意思,但标准的RNN学习任务旨在task-labeled的小数据上(如NER)
  • 问题:为什么不通过半监督学习的方式在大型无标签数据上训练NLM,而不只是词向量。
  • datawhale-cs224n-task04_第3张图片
  • 与上文无关的单词嵌入 + RNN model 得到的 hidden states 作为特征输入
    datawhale-cs224n-task04_第4张图片
  • Char CNN / RNN + Token Embedding 作为 bi-LSTM 的输入
  • 得到的 hidden states 与 Pre-trained bi-LM(冻结的) 的 hidden states 连接起来输入到第二层的 bi-LSTM 中

Named Entity Recognition(NER)

  • 一个非常重要的NLP子任务:查找和分类文本中的实体,例如
    datawhale-cs224n-task04_第5张图片
    datawhale-cs224n-task04_第6张图片

CoVe

  • 也有使用训练好的序列模型为其他NLP模型提供上下文的想法
  • 想法:机器翻译是为了保存意思,所以这也许是个好目标?
  • 使用seq2seq + attention NMT system中的Encoder,即 2层 bi-LSTM ,作为上下文提供者
  • 所得到的 CoVe 向量在各种任务上都优于 GloVe 向量
  • 但是,结果并不像其他幻灯片中描述的更简单的NLM培训那么好,所以似乎被放弃了
    • 也许NMT只是比语言建模更难?
    • 或许有一天这个想法会回来?

你可能感兴趣的:(datawhale-cs224n-task04)