この質問は以前にも出されており、多くのリンクがあることを理解しています。とにかくそれらのほとんどを調べましたが、残念ながらシンプルで簡潔な回答を見つけることができませんでした. ドキュメント数は約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 にはこの時間がかかります。