【发布时间】:2016-08-03 18:41:38
【问题描述】:
我目前正在使用 Python 开发一个依赖于 csv 文件的项目。 csv 文件包含数千个随机句子,某些句子之间存在一些相似性。我的代码的目的是识别哪些句子是同类并在上下文中引用相同的事物。
例如,所有提及 Gmail 的句子,例如:
Gmail login
Gmail account login
Gmail account register
引用相同的上下文,但在输入文件中可能彼此相距很远,嵌套在引用不同上下文的不相关句子之间。到目前为止,我一直在使用的方法是:
-
按字母顺序和小写对句子中的每个单词进行排序,例如:
帐户 gmail 登录
将它们在文件中的原始索引设为自己的列,在 csv 文件中按字母顺序对句子进行排序,然后将它们加载到 pandas 数据帧中
遍历数据框并相互比较句子。这是使用FuzzyWuzzy's token_set_ratio 方法来识别彼此匹配的术语(相等 == 100),相似的单词被组合在一起然后写入文件。
-
当dataframe被遍历一遍后,我们再循环一遍,将我们在自己的列中建立的索引匹配到输入文件中对应的行,返回原句。
李>
这种方法一直很有前景,但它会遇到匹配错误和句子不属于同一上下文的问题,最终会出现在同一组中。有没有更好的方法可以做我想做的事?
【问题讨论】:
标签: python string csv pandas fuzzy-comparison