用Python聚类文档

时间:2013-02-16 06:30:58

标签: machine-learning cluster-analysis k-means

我知道之前已经问过这个问题并且有很多链接。无论如何,我已经完成了他们的大部分,但遗憾的是没有找到简单,简洁的回应。文件数量约为4800个。

所以就这样了。

我正在使用nltk来集群化大量文本文档。我到现在所做的是

  1. 解析和标记化
  2. 警句和词干
  3. 我正在做的下一步是为每个文档找到TF-IDF向量。因此,对于n个文档,我有n个相等长度的向量。

    现在我需要将这些向量提供给我的K-means函数并让它翻录。

    问题是,我做得对吗?

    下一个问题与代码有关:

    corpus = []
    unique_terms = []
    
    
    def TFIDF(document):
        start_time = time.time()
        word_tfidf = []
        for word in unique_terms:
            word_tfidf.append(collection.tf_idf(word,document))
    
        print time.time() - start_time
        return word_tfidf
    
    
    if __name__ == '__main__':
        count = 0
        corpus = cPickle.load(open('C:\\Users\\Salman\\Desktop\\Work\\NLP\\Corpus\\FB\\save-3.p', 'rb'))    ##read the corpus from file
        collection = nltk.TextCollection(corpus)
        unique_terms = list(set(collection))
        vectors = [numpy.array(TFIDF(f)) for f in corpus]
        print "Vectors created."
        print "First 10 words are", unique_terms[:10]
        print "First 10 stats for first document are", vectors[0][0:10]
    

    我已经将语料库(TF-IDF之前每个文档的向量列表)下载到我在语料库中阅读的文件中。

    问题是它已经过了8个小时,而且这个过程还没有完成。我在这里错过了什么吗?或者一般来说,TF-IDF确实需要这么长的时间。

1 个答案:

答案 0 :(得分:0)

你写的有4800个文件,但没有指明文件的长度。无论如何,8小时真的是很长时间(TF_IDF与一些标准的欧氏距离并不太贵)。

如果你想知道它是否在计算,只需查看负载平衡(例如linux中的uptime)。最有可能出现问题,您应该关注日志信息......

相关问题