intro to bm25

15
BM25 Joseph Tang 2014.08.04

Upload: joseph-tang

Post on 06-Jul-2015

367 views

Category:

Technology


12 download

DESCRIPTION

BM25算法介绍

TRANSCRIPT

Page 1: Intro to bm25

BM25

Joseph Tang

2014.08.04

Page 2: Intro to bm25

Motivation

BM25

Utility programs

Page 3: Intro to bm25

火锅

重庆有面儿火锅店面色彩温馨,装修精致,宽敞,老板、服务人员热情,让您能真正酣畅淋漓的感受老火锅的火辣热情。

重庆“烧鸡公”最先出自于重庆璧山县。据说是一帮司机哥们出了一趟长途车,饿得如狼似虎,好不容易看见前不着村,后不着店的地方有一老字号餐馆,上前一问老板都关门了,什么也没有了,说尽好话,老板只好将就把自己养的鸡宰了,又加了大量的辣椒和香料,还有剩余的火锅底料一起烧,没想到这一烧,就烧出了一道名菜,从此风靡川渝两地。

词频 Term Frequency

Page 4: Intro to bm25

重庆老火锅

重庆有面儿火锅店面色彩温馨,装修精致,宽敞,老板、服务人员热情,让您能真正酣畅淋漓的感受老火锅的火辣热情。

重庆“烧鸡公”最先出自于重庆璧山县。据说是一帮司机哥们出了一趟长途车,饿得如狼似虎,好不容易看见前不着村,后不着店的地方有一老字号餐馆,上前一问老板都关门了,什么也没有了,说尽好话,老板只好将就把自己养的鸡宰了,又加了大量的辣椒和香料,还有剩余的火锅底料一起烧,没想到这一烧,就烧出了一道名菜,从此风靡川渝两地。

重庆 老火锅 Inverse Document Frequency

Page 5: Intro to bm25

document: d = (tf 1,...,tf |M1|)

query: q= (qtf 1,...,qtf |M2|)

log

http://en.wikipedia.org/wiki/Tf%E2%80%93idf

TF-IDF= tf(qt,d) × (N/n)

1. 重庆 1×0, 2×0

2. 老火锅 1×log2, 0×?

Page 6: Intro to bm25

重庆 火锅

重庆有面儿火锅店面色彩温馨,装修精致,宽敞,老板、服务人员热情,让您能真正酣畅淋漓的感受老火锅的火辣热情。

重庆“烧鸡公”最先出自于重庆璧山县。据说是一帮司机哥们出了一趟长途车,饿得如狼似虎,好不容易看见前不着村,后不着店的地方有一老字号餐馆,上前一问老板都关门了,什么也没有了,说尽好话,老板只好将就把自己养的鸡宰了,又加了大量的辣椒和香料,还有剩余的火锅底料一起烧,没想到这一烧,就烧出了一道名菜,从此风靡川渝两地。

Page 7: Intro to bm25
Page 8: Intro to bm25

http://en.wikipedia.org/wiki/Okapi_BM25

document length: dl=SUM(tf)

average document length: avdl

Robertson/Sprck Jones weight:

Page 9: Intro to bm25

k1=2, b=0.75

IDF, avgdl

Page 10: Intro to bm25

calculate_idf: IDF, avgdl, N, n(tf)

bm25cal: (query, document)=> BM25 value

bm25server:

(query, list<string>)=>list<double>

bm25seg

Page 11: Intro to bm25

calculate_idf SOURCE IDF_DESTINATION

Page 12: Intro to bm25

bm25cal < input_file

配置bm25.toml

servers = ["dataapp-seg01:9075","dataapp-seg02:9075"] #分词服务器字符串数组idf = "idfs" # IDF 文件port = "19090" # BM25值计算服务器端口idfAvg = 0.3146483766 # IDF 平均值separator = "\t"

queryColumn = 1 #输入流中第一列为查询字符串documentColumns = [2] #数字数组avgLength = 26.74 #平均文档长度k = 2.0

b = 0.75

Page 13: Intro to bm25

add file hdfs:////user/hadoop-dataapp/tangjinchuan/bm25cal;

add file hdfs:////user/hadoop-dataapp/tangjinchuan/idfs;

add file hdfs:////user/hadoop-dataapp/tangjinchuan/bm25.toml;

from dim.deal map businessname,title using './bm25cal' as

businessname,title,bm25value1 limit 2;

Page 14: Intro to bm25

bm25server

配置bm25.toml

Thrift接口

http://wiki.sankuai.com/pages/viewpage.action?pageId=92081068

Page 15: Intro to bm25

Thanks & QA