0
我知道這個問題之前已經被問過了,並且有很多鏈接。我經歷過他們,無論如何他們中的大多數人,但可悲的是沒有找到一個簡單而簡潔的反應。文件的數量約爲4800.在Python中對文檔進行聚類
所以,它就是這樣。
我正在使用nltk來羣集多個文本文檔。我所做的到現在是
- 解析和符號化
- 停用詞和詞幹
,我做的是找到每個文檔的TF-IDF矢量下一步。所以我有n個向量長度相等的n個文檔。
現在我需要將這些向量喂入我的K均值函數並讓它翻轉。
問題是,我做對了嗎?
下一個問題是有關的代碼:
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確實需要這麼多時間。
請注意,k-means不是* sparse * vectors的最佳主意。尤其是,您需要考慮在計算距離時利用稀疏性來改進算法。 – 2013-02-20 19:27:39