基于Query去索引Doc:实现高效且精准的商品召回

Query理解:如何让机器读懂你的需求

扩展阅读(置顶)

1.原始信息再加工:一文读懂倒排索引
2.慧眼识词:解析TF-IDF工作原理
3.超越TF-IDF:信息检索之BM25
4.深入浅出 Beam Search:自然语言处理中的高效搜索利器


1. 引言

随着互联网的发展,电子商务平台每天都要处理数以亿计的用户查询。面对海量的商品数据,如何确保每次搜索都能返回最相关的结果,成为了提升用户体验的关键挑战之一。为此,我们需要一套完善的系统来理解和解析用户的查询,同时有效地索引和检索商品信息。

在这里插入图片描述

2. 构建倒排索引

2.1 商品预处理

首先,对所有商品描述进行预处理,包括分词、去除停用词、提取关键词等操作。例如,商品标题“Apple AirPods Pro - 真无线蓝牙耳机,带主动降噪功能”经过处理后可能得到["apple", "airpods", "pro", "真无线", "蓝牙", "耳机", "主动降噪"]

2.2 创建倒排索引条目

为每个词汇建立一个列表,记录该词汇出现在哪些商品中及其出现的位置或频率。假设我们有以下三个商品:

商品ID 标题
001 Apple AirPods Pro
002 Sony WF-1000XM4
003 Jabra Elite Active 75t

对于词汇“apple”,其倒排索引条目可能是{"apple": [001]};对于“真无线”,则可能是{"真无线": [001, 002, 003]}

3. 查询解析与扩展

3.1 分词与词性标注

当用户输入查询“无线耳机”时,系统会先对其进行分词和词性标注,得到["无线", "耳机"]。然后使用同义词库或预训练模型进行扩展,例如将“无线”扩展为“真无线”、“蓝牙”。

from transformers import BertTokenizer, BertModel

# 加载预训练模型和分词器
tokenizer = BertTokenizer.from_pretrained('bert-base-chinese')
model = BertModel.from_pretrained('bert-base-chinese')

def get_embedding(text):
    inputs = tokenizer(text, return_tensors="pt")
    outputs = model(**inputs)
    # 取出最后一层的平均池化作为句子嵌入
    sentence_embedding = outputs.last_hidden_state.mean(dim=1).squeeze()
    return sentence_embedding.detach().numpy()

query_vector = get_embedding("无线耳机")

3.2 语义解析

使用预训练

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进一步有进一步的欢喜

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

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

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

打赏作者

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

抵扣说明:

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

余额充值