wordvect嵌入和bert嵌入的区别

Word2Vec 嵌入和 BERT 嵌入之间有几个关键区别:

  1. 训练方式

    • Word2Vec:Word2Vec 是一个基于神经网络的词嵌入模型,它通过训练一个浅层的神经网络来学习单词的分布式表示。它有两种训练方式:连续词袋模型(CBOW)和Skip-gram 模型,分别通过预测上下文词汇或者预测目标词汇来学习单词嵌入。
    • BERT:BERT 是一种基于 Transformer 架构的预训练语言模型。它通过使用大规模的无标注文本数据来进行预训练,通过掩盖和预测输入句子中的一部分来学习上下文感知的单词嵌入。
  2. 上下文感知性

    • Word2Vec:Word2Vec 嵌入是基于局部窗口上下文的,每个单词的嵌入只考虑了它周围的几个单词,因此它们可能无法捕捉到单词的整体语义和上下文信息。
    • BERT:BERT 嵌入是基于整个句子的上下文来计算的,它能够更好地理解单词在句子中的语义和语境。BERT 使用双向 Transformer 模型来同时考虑一个单词左侧和右侧的上下文信息,因此能够更全面地捕捉单词的含义。
  3. 任务特定性

    • Word2Vec:Word2Vec 嵌入通常用于各种自然语言处理任务的特征表示,例如文本分类、命名实体识别等,但它们通常需要在特定任务上进行微调以获得最佳性能。
    • BERT:BERT 嵌入经过大规模预训练,通常可以直接用于各种下游任务,例如文本分类、命名实体识别、问答等,而且通常不需要太多的微调即可获得很好的性能。

下面是使用 Python 中的 Gensim 库来展示 word2vec 和 Hugging Face Transformers 库来展示 BERT 的示例代码:

Word2Vec 嵌入示例:

# 导入所需的库
from gensim.models import Word2Vec
from gensim.models.keyedvectors import KeyedVectors

# 假设有一个句子列表作为训练数据
sentences = [["I", "love", "natural", "language", "processing"],
             ["Word", "embeddings", "are", "useful", "for", "NLP"],
             ["Word2Vec", "is", "a", "popular", "word", "embedding", "technique"]]

# 训练 Word2Vec 模型
model = Word2Vec(sentences, vector_size=100, window=5, min_count=1, workers=4)

# 获取单词 "word" 的词向量表示
word_vector = model.wv["word"]
print("Word2Vec Embedding for 'word':", word_vector)

BERT 嵌入示例:

# 导入所需的库
from transformers import BertTokenizer, BertModel
import torch

# 加载 BERT tokenizer
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')

# 假设有一个句子
sentence = "Word embeddings are useful for NLP"

# 使用 BERT tokenizer 对句子进行标记化和编码
inputs = tokenizer(sentence, return_tensors="pt", padding=True, truncation=True)

# 加载 BERT 模型
model = BertModel.from_pretrained('bert-base-uncased')

# 获取 BERT 嵌入
with torch.no_grad():
    outputs = model(**inputs)

# 提取句子中每个 token 的嵌入表示
embeddings = outputs.last_hidden_state
# 提取第一个 token 的嵌入表示([CLS] 标记)
bert_embedding = embeddings[:, 0, :]
print("BERT Embedding for the sentence:", bert_embedding)

这里,Word2Vec 通过简单的神经网络训练得到词向量,而 BERT 是一个预训练的深度双向 Transformer 模型,在给定任务的基础上进行微调以获得更好的嵌入表示。Word2Vec 产生的向量通常具有相似含义的单词在空间中彼此靠近,而 BERT 的嵌入则更具有上下文感知性,可以更好地捕捉句子中的语义和语境。

相关推荐

  1. wordvect嵌入bert嵌入区别

    2024-04-04 07:56:02       14 阅读
  2. Auto tokenizerBert tokenizer区别

    2024-04-04 07:56:02       40 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-04 07:56:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-04 07:56:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-04 07:56:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-04 07:56:02       18 阅读

热门阅读

  1. 运动伤害预防的实际案例

    2024-04-04 07:56:02       14 阅读
  2. 一次Postgres的实体表重构经历

    2024-04-04 07:56:02       14 阅读
  3. 走近Shiro--一起学习吧之架构

    2024-04-04 07:56:02       13 阅读
  4. 速盾:服务器有cdn 带宽上限建议多少

    2024-04-04 07:56:02       16 阅读
  5. Go实现MapReduce

    2024-04-04 07:56:02       14 阅读
  6. Spark面试整理-讨论DataFrame和DataSet的区别

    2024-04-04 07:56:02       14 阅读
  7. 文心一言 vs GPT-4 —— 全面横向比较

    2024-04-04 07:56:02       15 阅读
  8. MySQL数据库归档工具之【pt-archiver】

    2024-04-04 07:56:02       14 阅读
  9. 在Ubuntu 18.04上如何添加交换空间

    2024-04-04 07:56:02       14 阅读