【问题标题】:Grouping together similar sentence strings in a csv file将 csv 文件中的相似句子字符串分组在一起
【发布时间】:2016-08-03 18:41:38
【问题描述】:

我目前正在使用 Python 开发一个依赖于 csv 文件的项目。 csv 文件包含数千个随机句子,某些句子之间存在一些相似性。我的代码的目的是识别哪些句子是同类并在上下文中引用相同的事物。

例如,所有提及 Gmail 的句子,例如:

Gmail login
Gmail account login
Gmail account register

引用相同的上下文,但在输入文件中可能彼此相距很远,嵌套在引用不同上下文的不相关句子之间。到目前为止,我一直在使用的方法是:

  1. 按字母顺序和小写对句子中的每个单词进行排序,例如:

    帐户 gmail 登录

  2. 将它们在文件中的原始索引设为自己的列,在 csv 文件中按字母顺序对句子进行排序,然后将它们加载到 pandas 数据帧中

  3. 遍历数据框并相互比较句子。这是使用FuzzyWuzzy's token_set_ratio 方法来识别彼此匹配的术语(相等 == 100),相似的单词被组合在一起然后写入文件。

  4. 当dataframe被遍历一遍后,我们再循环一遍,将我们在自己的列中建立的索引匹配到输入文件中对应的行,返回原句。

    李>

这种方法一直很有前景,但它会遇到匹配错误和句子不属于同一上下文的问题,最终会出现在同一组中。有没有更好的方法可以做我想做的事?

【问题讨论】:

    标签: python string csv pandas fuzzy-comparison


    【解决方案1】:

    有很多方法可以实现文档相似性分析,来自文本分析/挖掘领域。

    在您的情况下,您似乎拥有标准化的单词文档(行)。然后,您可以执行文档比较,而无需通过列文斯坦距离的三元相似度来比较单词。

    基本上,使用inverted file 来存储术语,执行cosine similarity in the vector model 是检测文档相似性的一种简单有效的方法。

    使用其他一些技术或distance/similarity scores,可以优化结果。

    编辑:一个 python 模块,gensim,实现了向量空间模型,似乎功能很好。 NLTK 是著名的自然语言分析框架,并为此类工作提供了大量功能。

    【讨论】:

      猜你喜欢
      • 2020-08-23
      • 1970-01-01
      • 2021-07-19
      • 1970-01-01
      • 2018-07-27
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多