G3.14.4stemming versus spelling correction设计研究

词形变化的匹配依赖词干化处理,不属于拼写纠错范畴

别名: 词干化 · lemmatization · 词形还原

概念解释

running 能命中 runorganizes 能命中 organization,靠的是词干化(stemming)或词形还原(lemmatization):按形态规则把屈折和派生折回同一词项。这不是把拼错的词改回词典形。用户没有敲错,只是用了另一个合法词形。Porter、Snowball、词典式 lemma 处理的是语法,Levenshtein 处理的是字符事故。把词形变化送进拼写纠错,会把合法形式标成错误,或用编辑距离去猜一个本来有规则可循的对应。

中文里没有英语那种屈折,但「计算机 / 电脑」是同义,不是词干;「走着 / 走了」若要合并,靠的是分析器,不是模糊查询。

机制

形态变化在语言里是系统的:复数、时态、名物化沿可列举的后缀和词表进行。词干算法利用这套系统,把一簇合法形式索引到同一键上,召回的是同一概念的不同句法实现。拼写误差没有这套系统,它沿着键盘和注意的偶然性走,分布是噪声。用噪声模型去拟合规则变化,既不稳定(university / universe 会被过激词干合并,也会被过宽的 k 合并),又会把真正的拼写问题从界面上藏起来——系统以为自己在做形态,实际上在做模糊。

反过来,只用精确词项、不做词干,英语这类语言会把同一概念拆成若干召回空洞:查询是复数,文档是单数,对象存在却搜不到。那是分析器的缺口,不是用户拼错,也不该弹出「你是不是想搜」。

怎么研究

用形态最小对和拼写最小对分别喂给词干器和模糊匹配,看它们会不会越界。

  • 范式:构造三组查询——合法屈折(mice/mouse)、真拼写误差(recieve/receive)、词干过度合并的已知陷阱(university/universe)。比较「仅词干」「仅编辑距离」「两者都开」。Porter 类词干器的经典评测(过度归约 vs 不足归约)是形态侧的参照。
  • 自变量:分析器(无 / 轻词干 / 词典 lemma)、模糊是否同时开启。
  • 因变量:屈折对的召回、陷阱对的误合并、拼写误差被词干器单独救回的比例(应当低)。
  • 方法论注意点:不要用「整体召回提高了」作为词干成功的证据,那可能是模糊在帮忙。分组报告。对中文、德文复合词、阿拉伯语等,英语 Porter 的结论不能直接搬。

边界

形态贫乏、查询又极短的场景(SKU、命令名、代码标识符)上词干是伤害:cat 不该吃到 cats 以外的东西,更不该吃到 category。医疗和法律术语里细微后缀改变指称(药物剂型、法条款次),lemma 合并会造成指称错误,应走受控词表而不是通用词干。用户正在查「这个词的复数怎么拼」时,合并词形会藏掉他们要找的那条语法信息。

怎么落地

  • 在分析器管道里单独配置词干或 lemma,不要复用模糊查询去覆盖复数和时态。
  • 对标识符、代号、全大写词关闭词干;对普通正文开启,并监控已知过度归约词对。
  • 界面不要把词干命中写成「已更正拼写」;若要解释,写成「也包含其他词形」。
  • 验证:organize 应能打到 organizing 的文档,且查询框没有变成「已纠正」。recieve 不应只靠词干得救;那是模糊或纠错的职责。university 不应仅因词干就稳定地打到 universe

延伸

  • 同组G3.14.1 近似匹配在索引层容忍字符差异,不必改写用户看到的查询词 · G3.14.2 编辑距离阈值过大引入不相关结果,过小则失去容错意义 · G3.14.3 同音或形近字的纠错不同于按字符编辑距离的匹配 · G3.14.5 近似匹配结果应弱化排序权重,精确匹配优先呈现
  • 相邻G3.04 拼写纠错 · G1.10 受控词表与同义词 · G1.08 术语一致性
  • 站内检索stemming · lemmatization · morphological matching

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/G3.14.4