我有一个有很多记录的数据库表。我正在比较句子以找到最佳匹配。
假设该表包含4列:id,sentence,info,updated_date,数据包含如下:
| 身份证|句子|信息|更新信息日期|
| - ------| - ------| - ------| - ------|
| 1个|你们公司的名字是什么|一些独特的信息|2022年12月19日|
| 第二章|公司名称|一些独特的信息|2022年12月18日|
| 三个|你们公司的名字是什么|一些独特的信息|2022年12月17日|
| 四个|你们公司的名字是什么|一些独特的信息|二〇二二年十二月十六日|
| 五个|你们公司的名字是什么|一些独特的信息|2022年12月15日|
| 六个|你们公司的名字是什么|一些独特的信息|2022年12月14日|
| 七|你们公司的名字是什么|一些独特的信息|二〇二二年十二月十三日|
| 八个|你们公司的电话号码是多少|一些独特的信息|2022年12月12日|
| 九|你们公司的名字是什么|一些独特的信息|2022年11月12日|
| 十个|你们公司的名字是什么|一些独特的信息|2022年10月12日|
我已把这些句子转换成Tensor。
我通过这个作为一个例子"什么是你的公司的名称"(Tensor)匹配。
sentence = "What is the name of your company" # in tensor format
cos_scores = util.pytorch_cos_sim(sentence, all_sentences_tensors)[0]
top_results = torch.topk(cos_scores, k=5)
or
top_results = np.argpartition(cos_scores, range(5))[0:5]
top_results does not return the top results index wise.
As the sentences are same, all will have a score of "1". And it returns the results arbitrarily.
我想要的是获得最新updated_date顺序或索引顺序的前5个匹配项。
这有可能实现吗?
有什么建议吗?
1条答案
按热度按时间yhived7q1#
我会这样做:
1.获取每个句子的余弦相似度得分,并将它们存储在一个数组中。
1.根据updated_date对数组进行排序
1.从排序数组中获取前5个索引
1.使用索引从数据库表中获取相应的句子
1.这将为您提供最新的updated_date或索引顺序的前5个匹配项。