Python 句子聚类

Python 句子聚类,python,machine-learning,cluster-analysis,Python,Machine Learning,Cluster Analysis,我有很多不同来源的名字 我需要提取所有组(名称的一部分),这些组从一个组重复到另一个组。 在下面的示例中,程序应该位于:邮局、办公室、邮局 我需要统计一下人气 所以我想提取一个按流行程度排序的短语列表 以下是一个名称示例: Post Office - High Littleton Post Office Pilton Outreach Services Town Street Post Office post office St Thomas 基本上需要找出一些算法或更好的库,才能得到这样的结

我有很多不同来源的名字

  • 我需要提取所有组(名称的一部分),这些组从一个组重复到另一个组。 在下面的示例中,程序应该位于:邮局、办公室、邮局
  • 我需要统计一下人气
  • 所以我想提取一个按流行程度排序的短语列表

    以下是一个名称示例:

    Post Office - High Littleton
    Post Office Pilton Outreach Services
    Town Street Post Office
    post office St Thomas
    
    基本上需要找出一些算法或更好的库,才能得到这样的结果:

    Post Office: 16999
    Post: 17934
    Office: 16999
    Tesco: 7300
    ...
    
    这是全文

    我写了一个代码,它适用于单个单词,但不适用于句子:

    from textblob import TextBlob
    import operator
    
    title_file = open("names.txt", 'r')
    blob = TextBlob(title_file.read())
    list = sorted(blob.word_counts.items(), key=operator.itemgetter(1))
    print list
    

    您并不是在寻找集群(这可能就是@andrewmatte“所有集群都很糟糕”的原因)

    你要找的是字数计数(或者更准确地说,n克计数)。这实际上是一个容易得多的问题。这就是你找不到图书馆的原因

    嗯,实际上你有一些图书馆。例如,在python中,
    collections
    模块有一个类
    Counter
    ,该类包含许多可重用代码

    未经测试的非常基本的代码:

    from collections import Counter
    counter = Counter()
    for s in sentences:
      words = s.split(" ")
      for i in range(len(words)):
        counter.add(words[i])
        if i > 0: counter.add((words[i-1], words[i]))
    

    您可以从
    计数器
    获取最频繁的数据。如果您想将单词和单词对分开,可以随意使用两个计数器。如果需要较长的短语,请添加内部循环。您可能还希望清除句子(例如小写)并使用regexp进行拆分。

    您是否正在寻找类似的内容

    workspace={}
    
    with open('names.txt','r') as f:
      for name in f:
        if len(name): # makes sure line isnt empty
          if name in workspace:
            workspace[name]+=1
          else:
            workspace[name]=1
    
    for name in workspace:
      print "{}: {}".format(name,workspace[name])
    

    “我想得到它们之间的任何相关性,并按句子(从名称中提取)对所有结果进行分组”?试着编辑和解释你想按n-gram或按句子聚类来计算出现的次数吗?这是两个不同的东西。@SemihYagcioglu我想得到句子,它是所有名字中最流行的:只有组,它包含一个以上的名字;仅包含文本数据的组;它可以包含来自几个单词的句子;只有输入应该是-名称列表