电商搜索文本匹配使用BM25算法召回+其他匹配特征

本文的主要想做的事情就是尽可能的理解文本匹配下面这段话:

 1.首先进行数据的前处理去除特殊符号可以下载stop_words.txt中文的特殊符号得到mat.xlsx 

import  pandas as pd
data=pd.read_excel('mat.xlsx') #mat.xlsx 为物料数据 这里不方便放出来 数据可以自己去淘宝 京东爬取
dd=set(data['product_title'].tolist()) # 获取商品名称

2.bm25算法模型结构  这里面需要注意一下 参数的设置调整,我这边也是调试了一下场景是短文本,还可以继续调整

import math
from six import iteritems
from six.moves import xrange


# BM25 parameters.
PARAM_K1 = 10
PARAM_B = 0.9
EPSILON = 0.25


class BM25(object):

    def __init__(self, corpus):
        self.corpus_size = len(corpus)
        self.avgdl = sum(map(lambda x: float(len(x)), corpus)) / self.corpus_size
        self.corpus = corpus
        self.f = []
        self.df = {}
        self.idf = {}
        self.initialize()

    def initialize(self):
        for document in self.corpus:
            frequencies = {}
            for word in document:
                if word not in frequencies:
                    frequencies[word] = 0
                frequencies[word] += 1
            self.f.append(frequencies)

            for word, freq in iteritems(frequencies):
                if word not in self.df:
   
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值