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

5

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

1个回答

3

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

归一化应包括以下内容:

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接