0

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

それで、ここに行きます。

多数のテキスト ドキュメントをクラスタリングするために nltk を使用しています。私が今までしてきたことは、

  1. 解析とトークン化
  2. ストップワードとステミング

私が行っている次のステップは、各ドキュメントの 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 にはこの時間がかかります。

4

1 に答える 1

0

4800 個のドキュメントがあると書きましたが、ドキュメントの長さを指定していませんでした。とにかく、8 時間は本当に長い時間です (標準的なユークリッド距離を持つ TF_IDF はそれほど高価ではありません)。

カウントしているかどうかを知りたい場合は、負荷バランスを調べてください ( uptimeLinux など)。ほとんどの場合、何か問題があるため、情報をログに記録する必要があります...

于 2013-02-18T11:00:26.947 に答える