什么是最适合用于比较电视节目标题的字符串距离算法?

What is the most suitable string distance algorithm to use for comparing TV show titles?

我正在为电视节目和其他媒体(游戏、电影等)编写抓取工具,并非所有来源的格式都与某个节目相同。例如,一个来源可能用破折号表示字幕,而其他来源可能用分号表示。我目前正在使用 Levenshtein 距离将抓取的数据与从电视节目文件名中提取的数据进行比较,但我想知道该算法是否是为少于一个句子的短字符串设计的。有没有更适合这种需求的算法?

比较/距离测量之前,您应该对标题进行归一化(标准化)。

规范化应包括以下内容:

  • 基本格式(例如 UTF16 编码,无 leading/trailing 空格和制表符)
  • 字母规则(例如将 Ä 替换为 A)
  • 缩写词扩展(例如 NY -> New-York)
  • 位置名称规则(例如,城市名称不应包含空格,而应包含破折号)
  • 大小写规则(例如,破折号后的每个字母都应大写)
  • 删除符号(例如 !,?)
  • 数字转换("three-hundred" 到“300”)
  • 罗马数字转换(例如 "Louis XVI" 到 "Louis 16")
  • Non-American 英语到美式英语(例如 "colour" 到 "color")
  • 缩写规则(例如 "Inc." 代替 "Incorporated","vs." 代替 "versus")

您可以在词对之间使用 Levenshtein 距离(不要对整个句子使用它),但要实现一些滑动 window,因为某些词(例如 "The")可能会丢失来自其中一个表示。