simbert文本相似度,短文本语义匹配模型

simbert文本相似语义召回;保存及在线服务https://blog.csdn.net/weixin_42357472/article/details/116205077

SimBERT(基于UniLM思想、融检索与生成于一体的BERT模型)【主要应用场景:相似文本生成、相似文本检索】
https://blog.csdn.net/u013250861/article/details/123649047

import numpy as np
import os
from collections import Counter
os.environ['TF_KERAS'] = '1'
from bert4keras.backend import keras, K
from bert4keras.models import build_transformer_model
from bert4keras.tokenizers import Tokenizer
from bert4keras.snippets import sequence_padding
from bert4keras.snippets import uniout
from keras.models import Modelmaxlen = 32# bert配置
# bert配置
config_path = r'D:***t\chinese_simbert_L-6_H-384_A-12\bert_config.json'
checkpoint_path = r'D:\*****rt\chinese_simbert_L-6_H-384_A-12\bert_model.ckpt'
dict_path = r'D:\****rt\chinese_simbert_L-6_H-384_A-12\vocab.txt'# 建立分词器
tokenizer = Tokenizer(dict_path, do_lower_case=True)  # 建立分词器# 建立加载模型
bert = build_transformer_model(config_path,checkpoint_path,with_pool='linear',application='unilm',return_keras_model=False,
)encoder = keras.models.Model(bert.model.inputs, bert.model.outputs[0])import pandas as pd
datas1 = pd.read_csv(r'D:****raw_datas150.csv')
datas_all = list(datas1["title"])# 测试相似度效果
data = datas_all
a_token_ids, b_token_ids, labels = [], [], []
texts = []for d in data:token_ids = tokenizer.encode(d, maxlen=maxlen)[0]a_token_ids.append(token_ids)
#     token_ids = tokenizer.encode(d[1], maxlen=maxlen)[0]
#     b_token_ids.append(token_ids)
#     labels.append(d[2])texts.append(d)a_token_ids = sequence_padding(a_token_ids)
# b_token_ids = sequence_padding(b_token_ids)
a_vecs = encoder.predict([a_token_ids, np.zeros_like(a_token_ids)],verbose=True)
# b_vecs = encoder.predict([b_token_ids, np.zeros_like(b_token_ids)],
#                          verbose=True)
# labels = np.array(labels)a_vecs = a_vecs / (a_vecs**2).sum(axis=1, keepdims=True)**0.5print(type(a_vecs))
np.save("sim_all_datas.npy",a_vecs)#import numpy as np
#a_vecsss = np.load(r"D:\tcl\simbert\sim_all_datas.npy")def most_similar(text, topn=10):"""检索最相近的topn个句子"""token_ids, segment_ids = tokenizer.encode(text, max_length=maxlen)print(token_ids, segment_ids )vec = encoder.predict([[token_ids], [segment_ids]])[0]vec /= (vec**2).sum()**0.5sims = np.dot(a_vecsss, vec)return [(i, datas_all[i], sims[i]) for i in sims.argsort()[::-1][:topn]]kk=["海绵宝宝"]
mmm = []
for i in kk:results = most_similar(i, 10)mmm.append([i,results])print(i,results)
from paddlenlp import Taskflow
similarity = Taskflow("text_similarity")
[2022-03-22 15:17:18,306] [    INFO] - Downloading model_state.pdparams from [https://bj.bcebos.com/paddlenlp/taskflow/text_similarity/simbert-base-chinese/model_state.pdparams](https://bj.bcebos.com/paddlenlp/taskflow/text_similarity/simbert-base-chinese/model_state.pdparams)
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 615M/615M [00:29<00:00, 22.1MB/s]
[2022-03-22 15:17:51,977] [    INFO] - Downloading model_config.json from [https://bj.bcebos.com/paddlenlp/taskflow/text_similarity/simbert-base-chinese/model_config.json](https://bj.bcebos.com/paddlenlp/taskflow/text_similarity/simbert-base-chinese/model_config.json)
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 334/334 [00:00<00:00, 197kB/s]
[2022-03-22 15:17:52,154] [    INFO] - Downloading https://bj.bcebos.com/paddlenlp/models/transformers/simbert/vocab.txt and saved to /root/.paddlenlp/models/simbert-base-chinese
[2022-03-22 15:17:52,154] [    INFO] - Downloading vocab.txt from [https://bj.bcebos.com/paddlenlp/models/transformers/simbert/vocab.txt](https://bj.bcebos.com/paddlenlp/models/transformers/simbert/vocab.txt)
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 63.4k/63.4k [00:00<00:00, 744kB/s]
[2022-03-22 15:18:10,818] [    INFO] - Weights from pretrained model not used in BertModel: ['cls.predictions.decoder_bias', 'cls.predictions.transform.weight', 'cls.predictions.transform.bias', 'cls.predictions.transform.LayerNorm.weight', 'cls.predictions.transform.LayerNorm.bias', 'cls.predictions.decoder_weight', 'cls.predictions.decoder.bias', 'cls.seq_relationship.weight', 'cls.seq_relationship.bias']
[2022-03-22 15:18:12,113] [    INFO] - Converting to the inference model cost a little time.
[2022-03-22 15:18:30,093] [    INFO] - The inference model save in the path:/root/.paddlenlp/taskflow/text_similarity/simbert-base-chinese/static/inference

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/478302.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文浅尝 | 利用开放域触发器知识改进事件检测

笔记整理 | 申时荣&#xff0c;东南大学博士来源&#xff1a;ACL 2020源码&#xff1a;https://github.com/shuaiwa16/ekd.git摘要事件检测&#xff08;ED&#xff09;是文本自动结构化处理的一项基本任务。由于训练数据的规模小&#xff0c;以前的方法在unseen/标记稀疏的触发…

Beyond 预训练语言模型,NLP还需要什么样的知识?

近年来&#xff0c;深度学习技术已广泛应用于NLP领域&#xff0c;但实际应用效果往往受限于缺乏大规模高质量监督样本。2018年底&#xff0c;预训练语言模型横空出世&#xff0c;极大缓解了这个问题&#xff0c;通过“超大规模无监督语料上的预训练语言模型相对少量的监督样本进…

日志级别动态调整——小工具解决大问题

随着外卖业务的快速发展&#xff0c;业务复杂度不断增加&#xff0c;线上系统环境有任何细小波动&#xff0c;对整个外卖业务都可能产生巨大的影响&#xff0c;甚至形成灾难性的雪崩效应&#xff0c;造成巨大的经济损失。每一次客诉、系统抖动等都是对技术人员的重大考验&#…

LeetCode 324. 摆动排序 II

文章目录1. 题目2. 解题1. 题目 给定一个无序的数组 nums&#xff0c;将它重新排列成 nums[0] < nums[1] > nums[2] < nums[3]… 的顺序。 示例 1: 输入: nums [1, 5, 1, 1, 6, 4] 输出: 一个可能的答案是 [1, 4, 1, 5, 1, 6] 示例 2: 输入: nums [1, 3, 2, 2, 3,…

最全的Pycharm debug技巧

最全的Pycharm debug技巧&#xff1a; 工欲善其事&#xff0c;必先利其器。无论你的 IDE 是 IntelliJ IDEA、Pycharm、WebStorm、GoLang、还是PhpStorm &#xff0c;调试器都是标配。在遇到有问题的程序时&#xff0c;合理的利用调试器的跟踪和断点技巧&#xff0c;可以很快的…

OpenKG祝大家端午安康

—????????OpenKG祝大家端午安康????????—

两个月,刷了八千篇Arxiv,我发现……

文 | 白鹡鸰编 | 小轶从五月初到现在&#xff0c;大约刷了八千篇Arxiv之后&#xff0c;我发现我有毛病。当然&#xff0c;这是读论文上头时的牢骚&#xff0c;不是真心话&#xff0c;只是说&#xff0c;我在Arxiv上投入的精力的努力&#xff0c;与我预计的收获不成正比。故事的…

深度学习在美团的应用

近年来&#xff0c;深度学习在语音、图像、自然语言处理等领域取得非常突出的成果&#xff0c;成了最引人注目的技术热点之一。美团这两年在深度学习方面也进行了一些探索&#xff0c;其中在自然语言处理领域&#xff0c;我们将深度学习技术应用于文本分析、语义匹配、搜索引擎…

LeetCode 315. 计算右侧小于当前元素的个数(二叉查找树二分查找归并排序逆序数总结)

文章目录1. 题目2. 解题2.1 二叉查找树2.2 二分插入2.3 归并排序1. 题目 给定一个整数数组 nums&#xff0c;按要求返回一个新数组 counts。数组 counts 有该性质&#xff1a; counts[i] 的值是 nums[i] 右侧小于 nums[i] 的元素的数量。 示例: 输入: [5,2,6,1] 输出: [2,1,1…

Python实现共现语义网络

Python实现共现语义网络&#xff1a;

领域应用 | 金融资管领域知识图谱的构建和应用

转载公众号 | DataFunTalk分享嘉宾&#xff1a;李渔 熵简科技 联合创始人编辑整理&#xff1a;唐汝佳出品平台&#xff1a;DataFunTalk导读&#xff1a;本次分享的主题是金融资管领域知识图谱的构建和应用&#xff0c;主要介绍如何运用大数据、AI这些技术手段&#xff0c;来帮助…

我分析了ACL21论文列表,发现对比学习已经...

文 | 花小花Posy小伙伴们&#xff0c;好久不见呀&#xff0c;小花又回来了&#xff01;最近关注对比学习&#xff0c;所以ACL21的论文列表出来后&#xff0c;小花就搜罗了一波&#xff0c;好奇NLPers们都用对比学习干了什么&#xff1f;都是怎么用的呀&#xff1f;效果怎样呀&a…

2016,你最不应该错过的热门技术文章

本文首发在“美团技术团队”微信公众号&#xff0c;内容已覆盖截止至2017年1月23日最新的技术文章。 1955年3月15日&#xff0c;爱因斯坦给刚去世的密友Michele Besso家人的信中说&#xff1a; “像我们这样信仰物理学的人都知道&#xff0c;过去、现在和未来之间的分别只不过是…

LeetCode 629. K个逆序对数组(DP)

文章目录1. 题目2. 动态规划3. 优化的DP1. 题目 给出两个整数 n 和 k&#xff0c;找出所有包含从 1 到 n 的数字&#xff0c;且恰好拥有 k 个逆序对的不同的数组的个数。 逆序对的定义如下&#xff1a;对于数组的第i个和第 j个元素&#xff0c;如果满i < j且 a[i] > a[…

快速的找出元素是否在list中 python

number [[1,2],[3,2]] num np.array(number) np.argwhere(num2) np.argwhere(num2) array([[0, 1], [1, 1]], dtypeint64) 注意&#xff1a;只能是维度相同的时候&#xff0c;才能用该方法。 om ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or nd…

论文浅尝 | 知识图谱的神经符号推理(上)

笔记整理 | 叶橄强&#xff0c;浙江大学在读硕士&#xff0c;研究方向为知识图谱的表示学习和预训练。知识图谱推理是支撑信息提取、信息检索和推荐等机器学习任务的基础组成部分&#xff0c;并且由于知识图可以看作知识的离散符号表示&#xff0c;自然可以利用符号技术做知识图…

ICML2021 | Self-Tuning: 如何减少对标记数据的需求?

文 | 王希梅&#xff0c;高敬涵&#xff0c;龙明盛&#xff0c;王建民源 | THUML本文介绍ICML2021的中稿论文&#xff1a;Self-Tuning for Data-Efficient Deep Learning&#xff0c;就“如何减少对标记数据的需求”这一重要问题给出了我们的思考。论文标题&#xff1a;Self-Tu…

美团点评Docker容器管理平台

本文是郑坤根据第14期美团点评技术沙龙“你不知道的美团云”演讲内容整理而成&#xff0c;已发表在《程序员》杂志2017年1月刊。 美团点评容器平台简介 本文介绍美团点评的Docker容器集群管理平台&#xff08;以下简称“容器平台”&#xff09;。该平台始于2015年&#xff0c;是…

Python 获取本机或者服务器的 IP 地址

获取计算机名称 hostname socket.gethostname() 获取本机 IP ip socket.gethostbyname(hostname) print(ip) 具体操作 import socket hostname socket.gethostname() ip socket.gethostbyname(hostname) print(ip)通常使用 socket.gethostname() 方法即可获取本机 IP …

LeetCode 754. 到达终点数字(数学推理)

1. 题目 在一根无限长的数轴上&#xff0c;你站在0的位置。终点在target的位置。 每次你可以选择向左或向右移动。第 n 次移动&#xff08;从 1 开始&#xff09;&#xff0c;走 n 步。 返回到达终点需要的最小移动次数。 示例 1: 输入: target 3 输出: 2 解释: 第一次移动…