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

标签 string algorithm levenshtein-distance

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

最佳答案

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

规范化应包括以下内容:

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

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

关于string - 什么是最适合用于比较电视节目标题的字符串距离算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38167112/

相关文章:

algorithm - 使用相同队列对队列进行排序

algorithm - 求解线性丢番图方程的算法是什么: ax + by = c

algorithm - 除了 Levenshtein 之外,用于有序词集和后续聚类的更好的距离度量

algorithm - 是否有稀疏编辑距离算法?

python - 使用 os.path.join 和 os.sep 串联的区别

Javascript:用正则表达式将字符串中所有出现的 ' a ' 替换为 ' b '

PHP mb_substr 划分错误 utf 8

string - 如何在Scala中进行字符串连接

java - 查找相邻子图像的算法

similarity - 如何标准化编辑距离以获得最大对齐长度而不是字符串长度?