赞
踩
从一堆候选短文本数据集中筛选出与输入问句最相似的短文本(即短文本相似度匹配)
候选文本数据 |
外国人出入境证签发 |
新增年生产能力500万吨及以上煤矿项目核准 |
对完成关系国家利益或者公共利益并有重大应用价值的植物新品种育种的单位或者个人的奖励 |
法律职业资格认定 |
戒毒医疗机构或医疗机构从事戒毒治疗业务许可 |
城乡居民基本养老保险关系转移接续申请 |
涉及敏感国家和地区、敏感行业的境外投资项目核准 |
外国人对国家重点保护陆生野生动物进行野外考察或野外拍摄电影、录像审批 |
广播电台、电视台设立、终止审批 |
普通高等学校教师资格认定 |
法律职业资格认定 |
1.3 最终输出相似度最高的文本,如下:
外国人出入境证签发
附录一:代码实现:
- from sentence_transformers import SentenceTransformer, util
- import pandas as pd
- from flask import Flask, request, jsonify
- import json
- import numpy as np
- import time
-
- app = Flask(__name__)
- model = SentenceTransformer('bert-base-chinese')
- model.eval()
- content = pd.read_table("data.txt", header=None)[0].values.tolist()
- passage_embedding = model.encode(content, convert_to_numpy=True)
-
- def cosine_similarity(x, y):
- num = x.dot(y.T)
- denom = np.linalg.norm(x) * np.linalg.norm(y, axis=1)
- return num / denom
-
- def sim(ask, level):
- time1 = time.time()
- ask = model.encode([ask])
- time2 = time.time()
- spend_time = time2 - time1
- print(spend_time)
- cos_matrix = cosine_similarity(ask, passage_embedding)[0]
- index = np.argsort(-cos_matrix)[level]
- return [content[index], cos_matrix[index]]
-
- @app.route('/top_ask', methods=['GET', 'POST'])
- def get_synonyms():
- json_data = request.get_data()
- comment_json = json.loads(json_data)
- ask = comment_json['ask']
- json_data = sim2(ask, 0)
- return jsonify({"text": str(json_data[0]), "相似度": str(json_data[1])})
-
- if __name__ == '__main__': #
- app.run(host="0.0.0.0", port=1089, debug=True)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。