【python 走进NLP】标签别名语义相似度匹配算法

标签别名语义相似度匹配算法:
这里写图片描述

# -*- encoding=utf-8 -*-

import pandas as pd
import numpy as np
import time
time1=time.time()


#定义一个标签有别名的合并函数
def combine_tag_name_alis(data1,data2):
    """
    :param data1: 别名集
    :param data2:标签集
    :return: 合并后的结果集
    """
    # 筛选数据,找到有别名的标签
    data3 = data1[data1['alias'].isin(data2['key'])]
    data4=data2[~data2['key'].isin(data3['alias'])]

    #语义相似标签去重
    name1= list(set(data3['name']))
    name2=list(set(data4['key']))
    name3=name1+name2
    name4=list(set(name3))


    return name4


if __name__ == '__main__':

    #  读取别名数据集
    data1 = pd.read_excel('C:/Users/xiaohu/Desktop/文本挖掘/标签语义相近发现合并算法/data/kktribe_tag_1.xlsx')

    #  读取标签数据集
    data2=pd.DataFrame({'key':['詹皇','小皇帝','内马尔','世界杯','姆巴佩','詹姆斯','姆巴佩','里奥·梅西','梅西','Lionel Andrés Messi','小老虎','凯文-杜兰特','凯文·杜兰特']})

    #  合并之后的标签集
    name=combine_tag_name_alis(data1,data2)
    print(name)



    time2 = time.time()
    print('总共耗时:' + str(time2 - time1) + 's')
['梅西', '沃尔科特', '姆巴佩', '詹姆斯', '内马尔', '杜兰特', '世界杯']
总共耗时:0.07813286781311035s

Process finished with exit code 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
发出的红包

打赏作者

东华果汁哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值