搜索 / NOTEBOOK 课程

39 · 纠错、改写与语义漂移

人工拼写、同义词与约束例;非生成模型效果评估

构造机制只读 · 已保存的实验

已有输出来自保存的教学实验,并非打开页面时重新执行。 代码和原始输出保持不变;数据与历史注释保留原始语言。

39 · 纠错、改写与语义漂移

单元:S06。先修:38。

来源:王树森固定目录;Manning等《Introduction to Information Retrieval》(补充原始教材;章节1、2、6、8)。这是 Lab 自编实验;王树森后四模块只有公开目录,不称原作者完整讲义。

证据边界:人工拼写、同义词与约束例;非生成模型效果评估。

学习方式:先预测每个对照,再只改一个变量,运行后解释差异。

PYTHON · 01
import numpy as np
import pandas as pd
from IPython.display import display
from reclab.learning.search_curriculum import *

安全规则

固定映射battrey→battery、cellphone→phone。原查询和改写同时留存;必须保持实体、否定和约束。

PYTHON · 02
for q in ['battrey repair','cellphone repair official']:
    print(q,'→',rewrite(q))
assert 'official' in rewrite('cellphone repair official')
Notebook 保存的输出 · 本页未执行
battrey repair → battery repair
cellphone repair official → phone repair official

原查询对照

人工gold为a/c/d。仅改拼写,报告集合漏召与误召;分数不能跨query直接比较。

PYTHON · 03
gold={'a','c','d'}
q='battrey'
for name,x in [('original',q),('corrected',rewrite(q))]:
    ids={d for d,s in field_rank(x)}
    print(name,sorted(ids),'miss',sorted(gold-ids),'false',sorted(ids-gold))
Notebook 保存的输出 · 本页未执行
original [] miss ['a', 'c', 'd'] false []
corrected ['a', 'b', 'c', 'd'] miss [] false ['b']

失败改写

故意移除official并扩fruit造成漂移。只改变aggressive;检查约束保留,而非看语言是否流畅。

PYTHON · 04
q='apple repair official'
good=rewrite(q); bad=rewrite(q,aggressive=True)
print(good,field_rank(good,required=['official']))
print(bad,field_rank(bad))
assert 'official' not in bad
Notebook 保存的输出 · 本页未执行
apple repair official [('a', 5.0)]
apple repair fruit [('b', 6.0), ('d', 6.0), ('a', 4.0), ('c', 3.0)]

回退

约束验证失败回原查询;新增改写也可能无结果。实际线上还要评估频次、人工判断与延迟。

PYTHON · 05
def guarded(q):
    x=rewrite(q,aggressive=True)
    return q if ('official' in terms(q) and 'official' not in terms(x)) else x
assert guarded(q)==q
print('fallback',guarded(q))
Notebook 保存的输出 · 本页未执行
fallback apple repair official

本次保存结果的解读

拼写battrey原查询没有候选,纠正battery后能找回文档,但spam也能匹配,故纠错不保证精度。激进改写删除official并添加fruit,约束检查选择回原查询。收益、误召与约束保留须一起检查。

改参数后应以新输出重新判断,不把这段固定解读当作新的测量。

复盘与练习

写下输入、输出、保持不变的量与本章不能支持的结论。选一个上面的单变量参数先预测再重跑;保留失败例。回到搜索学习路径继续下一语义单元。

继续阅读原文

本章来源

作者课程中文

王树森 · 搜索引擎技术

目录:查询词处理 → 查询词改写

固定版本:六模块目录、9份PDF。查询处理、召回、排序、查询推荐四模块主要是目录,Lab实验为独立教学实现。

学习标记可选,仅保存在当前浏览器中。打开页面不会自动标记已学。