我正在为电视节目和其他媒体(游戏、电影等)编写抓取工具,并非所有来源的格式都与某个节目相同。例如,一个来源可能用破折号表示字幕,而其他来源可能用分号表示。我目前正在使用 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/