ELMO论文笔记Deep contextualized word representations

1. 为什么引入

elmo是在传统词向量中加入了对上下文信息的关注,使得同一个词在不同上下文中有不同含义,得到不同的表达。

2. 整体架构

elmo主要使用了一个字符卷积层(get raw word vectors) 加上 两层双向的LSTM语言模型,来充分获得一个词的所有上下文信息,这正是与word2vec等传统词嵌入不同之处。
(各个层之间添加了residual connection传递;elmo中可以添加适量的dropout和l2正则)
在这里插入图片描述
在这里插入图片描述

3. 为什么是两层LSTM

第一层LSTM更容易获得一些浅层的句法信息,如词性标注等
第二层LSTM则更容易获得一些更深层的语言信息,如上下文、词义等
elmo则是这两(多)层任务的权重组合,公式如下:
在这里插入图片描述
其中s-task是各个层的softmax权值,标量参数γ-task允许任务模型缩放整个ELMo向量(根据下游

### Word2Vec 和 ELMo 的比较 #### 词向量特性 Word2Vec生成固定长度的静态词向量,这意味着无论词语出现在什么位置或环境中,其表示都是相同的[^1]。相比之下,ELMo提供动态、基于上下文的词向量,在不同的句子结构中同一个词可以获得不同的表示形式,从而更有效地处理一词多义现象[^3]。 #### 训练机制差异 对于Word2Vec而言,存在两种主要模式用于学习词汇表征:连续袋模型(CBOW)以及跳字(Skip-gram)[^2]。前者尝试根据周围单词预测目标单词;后者则相反,给定单个单词试图推测周围的邻居们。而ELMo采用双向LSTM架构捕捉序列中的前后依赖关系,并以此为基础构建更加丰富的特征空间。 #### 应用场景适配度 由于Word2Vec产生的嵌入不具备情境敏感性,因此更适合那些不涉及复杂语境理解的任务,比如简单的相似度计算或是主题建模等基础工作。然而当面对诸如机器翻译、情感分析之类的高级应用时,则可能因为缺乏足够的灵活性而导致性能受限。另一方面,得益于对上下文化的深刻洞察力,ELMo能够在更多样化的自然语言处理挑战面前展现出优势,特别是在需要精准把握细微差别的情况下表现尤为突出。 ```python import gensim.downloader as api from allennlp.commands.elmo import ElmoEmbedder # 加载预训练好的Word2Vec模型 wv = api.load('word2vec-google-news-300') # 初始化ELMo嵌入器 elmo = ElmoEmbedder() def compare_embeddings(word, context_sentence=None): """对比展示两个不同方式下的词嵌入""" # 获取Word2Vec的结果 try: wv_result = wv[word].tolist() except KeyError: print(f"{word} not found in Word2Vec vocabulary.") return # 如果提供了具体语句,则获取该环境下对应的ELMo表示 if context_sentence is None: elmo_result = "No sentence provided for contextualized embedding." else: tokens = [token.lower() for token in context_sentence.split()] embeddings = elmo.embed_batch([tokens]) index_of_word = next((i for i, t in enumerate(tokens) if t == word), -1) if index_of_word != -1: layer_embedding = embeddings[:,index_of_word,:] avg_layer_embd = (layer_embedding.sum(axis=0)/len(layer_embedding)).tolist() elmo_result = f"Average of layers' embeddings at position {index_of_word}: {avg_layer_embd}" else: elmo_result = f"'{word}' does not appear in the given sentence." return {"Word2Vec": wv_result, "Contextual_Elmo": elmo_result} ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值