我知道这个问题之前已经被问过并且有很多链接。我已经浏览了它们,无论如何,它们中的大多数都没有找到一个简单而简洁的回复。文档数量约为 4800 份。
就这样吧。
我正在使用 nltk 对大量文本文档进行聚类。我到目前为止所做的是
- 解析和标记化
- 停用词和词干
我正在做的下一步是为每个文档找到一个 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 确实需要这么多时间。