bert获得词向量_无监督语义相似度匹配之Bert抽取文本特征实战

今天记一次采用bert抽取句子向量的实战过程,主要是想感受一下bert抽取出来的句子特征向量是否真的具有不错的语义表达。

在此之前,我们来回顾一下,如果我们想拿到一个句子的特征向量可以采用什么样的方式(ps 这些下方总结只是笔者在工作中学到的一些文本向量抽取方式,可能并未收集齐全):

基于词袋模型(Bag of Words)

  • Bag of Words : 主要思想是基于对句子中字出现的次数来构建句子向量,向量大小即为词表大小。可以采用的工具是gensim中的doc2bow
  • TF-IDF:在BOW的基础上,考虑到每个字的重要程度,向量大小依然等于词表大小。可以采用的工具是gensim中的TfidfModel

基于无监督神经网络模型

  • 词向量的平均(mean):直观理解就是将句子中每个词的词向量求平均,向量维度等于词向量维度。可以使用工具是gensim中的word2vec。
  • Doc2Vec:主要借鉴了word2vec思想去训练句子向量,向量维度可以自己设置。可以使用工具是gensim中的doc2vec。
  • Bert 生成的句子向量:BERT的每一层的输出其实都可以看作句子的向量,你可以有很多种方式去抽取文本向量,比如官方给出的取最后四层的句子向量拼接(输出维度:[maxlen,768*4])或者求平均(输出维度:[maxlen,768]。后续也许你需要在对句子向量求一下平均,这样文本向量的维度就为768。 可以采用的工具是官方开源的代码中的extract_features.py,当然也可以采用一些其他方式,我在实战部分会介绍另外一种。

基于文本主题的模型(这个词不是很严谨)

    • 2
      点赞
    • 48
      收藏
      觉得还不错? 一键收藏
    • 0
      评论
    BERT(Bidirectional Encoder Representations from Transformers)是一种预训练语言模型,适用于各种自然语言处理任务,其中包括词组语义相似度计算。 BERT的主要思想是利用Transformer模型来捕捉句子中的上下文信息,从而更好地理解每个词的含义。在词组语义相似度计算中,我们可以使用BERT模型来计算两个词组之间的相似度得分。 具体来说,我们可以将两个词组输入到BERT模型中,获取它们的表示向量,然后通过余弦相似度计算它们之间的相似度得分。具体实现可以使用Python编程语言和PyTorch深度学习框架。 以下是一个示例代码: ```python import torch from transformers import BertTokenizer, BertModel tokenizer = BertTokenizer.from_pretrained('bert-base-uncased') model = BertModel.from_pretrained('bert-base-uncased') def get_similarity_score(text1, text2): encoded_text = tokenizer(text1, text2, return_tensors='pt', padding=True, truncation=True) with torch.no_grad(): outputs = model(**encoded_text) embeddings = outputs.last_hidden_state[:, 0, :] similarity_score = torch.nn.functional.cosine_similarity(embeddings[0], embeddings[1], dim=0) return similarity_score.item() # 示例用法 text1 = "python词组语义相似度" text2 = "NLP中的BERT语义相似度计算" similarity_score = get_similarity_score(text1, text2) print("相似度得分:", similarity_score) ``` 这里我们使用了BERT的预训练模型和预训练分词器,对输入的两个文本进行编码并获取它们的表示向量,然后使用余弦相似度计算它们之间的相似度得分。
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值