您好,欢迎来到保捱科技网。
搜索
您的当前位置:首页wordvect嵌入和bert嵌入的区别

wordvect嵌入和bert嵌入的区别

来源:保捱科技网

Word2Vec 嵌入和 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 的嵌入则更具有上下文感知性,可以更好地捕捉句子中的语义和语境。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baoaiwan.cn 版权所有 赣ICP备2024042794号-3

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务