task-04
单词的表示对不知道的单词使用词向量的建议单词表示的两大问题单词表示的解决方法:
TagLM - "Pre-ELMo"Named Entity Recognition(NER)CoVe
单词的表示
前面我们已经学习了Word2Vec,GloVe, fastText
对不知道的单词使用词向量的建议
常见方法:
训练时:Vocab = {words occurring, say, ≥ 5 times} ∪ { < UNK >} 即:将所有罕见的词(数据集出现次数小于5)都映射为< UNK > ,为其训练一个词向量运行时:
使用< UNK > 代替词汇表之外的词 OOV 问题:
无论是身份还是意义,都没有区分不同UNK词 解决方法
法一. 使用字符级模型学习词向量
特别是QA中, 匹配词的身份是非常重要的,即 词向量词汇表以外的单词。 法二.
如果测试时的 < UNK > 单词不在你的词汇表中,但是出现在你使用的无监督词嵌入中,测试时直接使用这个向量,此外,你可以将其视为一个新的单词,并为其分配一个随机向量,将它们添加到你的词汇表。
单词表示的两大问题
对于一个 word type 总是用相同的表示,不考虑这个 word token 出现的上下文我们对一个词只有一种表示,但是单词有不同的方面,包括语义,句法行为,以及表达/ 含义
单词表示的解决方法:
在模型中,我们通过LSTM层(也许旨在语料库上训练)在那些LSTM层被训练来预测下一个单词但是这些语言模型在每一个位置生成特定与上下文的词表示
TagLM - “Pre-ELMo”
想法: 想要获得单词在上下文的意思,但标准的RNN学习任务旨在task-labeled的小数据上(如NER)问题:为什么不通过半监督学习的方式在大型无标签数据上训练NLM,而不只是词向量。与上文无关的单词嵌入 + RNN model 得到的 hidden states 作为特征输入 Char CNN / RNN + Token Embedding 作为 bi-LSTM 的输入得到的 hidden states 与 Pre-trained bi-LM(冻结的) 的 hidden states 连接起来输入到第二层的 bi-LSTM 中
Named Entity Recognition(NER)
一个非常重要的NLP子任务:查找和分类文本中的实体,例如
CoVe
也有使用训练好的序列模型为其他NLP模型提供上下文的想法想法:机器翻译是为了保存意思,所以这也许是个好目标?使用seq2seq + attention NMT system中的Encoder,即 2层 bi-LSTM ,作为上下文提供者所得到的 CoVe 向量在各种任务上都优于 GloVe 向量但是,结果并不像其他幻灯片中描述的更简单的NLM培训那么好,所以似乎被放弃了
也许NMT只是比语言建模更难?或许有一天这个想法会回来?