python - 在调查中补偿 "variance"

标签 python nlp fuzzy-comparison

这个标题很棘手。

我正在尝试解决一个场景, 想象一下,向 XXXXX 人发送了一项调查,询问他们最喜欢的足球俱乐部是什么。 从回复中可以明显看出,虽然很多人都是同一家具乐部的热门,但他们都以不同的方式“表达”了这一点。 例如,

对于曼联,一些变化包括...

  • 曼宇
  • 曼联。
  • 曼联。
  • 曼彻斯特大学
  • 曼联

所有这些显然都是同一个俱乐部,但是,如果使用一种简单的技术,只是试图获得一个提取字符串匹配,则每个都会是一个单独的结果。

现在,如果我们将场景进一步复杂化,假设由于不同俱乐部(例如曼城、M.City、曼彻斯特城等)的庞大数量,再次受到这个问题的困扰,不可能手动“输入”这些差异并使用它来创建自定义过滤器,以便转换所有 Man U -> Manchester United,Man Utd。 > Manchester United 等。但相反,我们希望自动执行此过滤器,以寻找最有可能的匹配项并相应地转换数据。

我正尝试在 Python 中(从 .cvs 文件)执行此操作,但是欢迎任何概述解决此问题的好方法的伪答案。

编辑:一些附加信息 这不是根据固定的俱乐部列表进行的,我们的想法是将我们拥有的俱乐部“聚集”在一起。 假设没有拼写错误。 有多少俱乐部没有假设的长度 而且调查 list 很长。足够长以至于不能保证手动执行此操作(1000 次查询)

最佳答案

Google Refine 就是这样做的,但我假设您想要自己推出。

请注意,difflib 内置于 Python 中,具有许多功能(包括消除垃圾元素)。我会从那开始。

您可能不想以完全自动化的方式进行操作。我会做这样的事情:

# load corrections file, mapping user input -> output
# load survey
import difflib

possible_values = corrections.values()

for answer in survey:
    output = corrections.get(answer,None)
    if output = None:
        likely_outputs = difflib.get_close_matches(input,possible_values)
        output = get_user_to_select_output_or_add_new(likely_outputs)
        corrections[answer] = output
        possible_values.append(output)
save_corrections_as_csv

关于python - 在调查中补偿 "variance",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5134142/

相关文章:

Python哨兵控制循环

nlp - 将每行一个文档转换为 Blei 的 lda-c/dtm 格式以进行主题建模?

计算所有符号,而不是白色符号,C 中 char 数组中的所有单词和行

machine-learning - 给定 2 个多元数据集,识别代表同一实体的记录,这些记录略有不同

python - 模糊比较两列

python - 这个字符串匹配方法在python中有实现吗?

python - Django + Celery + Supervisord + Redis 设置时报错

python - For循环仅使用python迭代列表中的一个对象

python - 如何仅在使用 Python 找到特定模式后才能读取 csv 文件?

machine-learning - 多语言文本垃圾邮件检测