【发布时间】:2014-04-12 04:52:42
【问题描述】:
我有一个包含这种格式的用户输入的文件:
- 用户正在搜索的书名,条目被搜索的次数
例子:
- 时间的皱纹,100
- 哈克贝利·费恩历险记,100
- 时间皱纹,20
- 彼得潘,100
- 及时收敛,5
- 哈克贝利·费恩,100
- 哈克贝利费恩历险记,150
- 时间皱纹,2
书名有变体:拼写错误、措辞不正确、顺序不正确或命名略有不同。因为它们,当列表按标题按 A->Z 排序时,标题不会全部组合在一起:
- 时间的皱纹,100
- 时间的皱纹,20
- 及时收敛,5
- 时间皱纹,2
- 彼得潘,100
- 哈克贝利费恩历险记,100
- 哈克贝利·费恩,100
- 哈克贝利费恩历险记,150
A Wrinkle in Time 标题分组在一起,Huckleberry Finn 标题在自己的组中,而每一行仍保留其原始各自的数字输入。
是否可以通过 Python 或 Ruby 基于模糊逻辑重新排序(可能使用 Levenshtein 距离,然后以这种方式分组)?如果是这样,什么是简单/直接的方法? Group Similar Entries in Python 的问题与我的情况类似,只是我使用的是字母字符串而不是数字。
【问题讨论】:
-
有没有什么地方可以获得实际、正确书名的规范列表?因为那会让生活变得更简单......
-
不幸的是没有。我几乎只是使用通过 Google Analytics 的“搜索词”用户行为部分导出的 CSV。 GA 中的“搜索词”工具通过解析 my-site.com/search?q= 的每个条目以及“search?q=”部分之后的内容来告诉我用户在搜索框中输入了什么。
标签: python ruby algorithm distance levenshtein-distance