0

を設定し、私は私が次のことを行っているsframePythonの:どのように大規模なデータのためのTF-IDFを計算するためには、

URI           name   text 
0 <http://dbpedia.org/resource/Digby_M...  Digby Morrell digby morrell born 10 october 1979 i... 
1 <http://dbpedia.org/resource/Alfred_...  Alfred J. Lewy alfred j lewy aka sandy lewy graduat... 
2 <http://dbpedia.org/resource/Harpdog...  Harpdog Brown harpdog brown is a singer and harmon... 
3 <http://dbpedia.org/resource/Franz_R... Franz Rottensteiner franz rottensteiner born in waidmann... 
4 <http://dbpedia.org/resource/G-Enka>     G-Enka henry krvits born 30 december 1974 i... 

から変換され、次のデータフレームdf、持っている:

from textblob import TextBlob as tb 

import math 

def tf(word, blob): 
    return blob.words.count(word)/len(blob.words) 

def n_containing(word, bloblist): 
    return sum(1 for blob in bloblist if word in blob.words) 

def idf(word, bloblist): 
    return math.log(len(bloblist)/(1 + n_containing(word, bloblist))) 

def tfidf(word, blob, bloblist): 
    return tf(word, blob) * idf(word, bloblist) 

bloblist = [] 

for i in range(0, df.shape[0]): 
    bloblist.append(tb(df.iloc[i,2])) 

for i, blob in enumerate(bloblist): 
    print("Top words in document {}".format(i + 1)) 
    scores = {word: tfidf(word, blob, bloblist) for word in blob.words} 
    sorted_words = sorted(scores.items(), key=lambda x: x[1], reverse=True) 
    for word, score in sorted_words[:3]: 
     print("\tWord: {}, TF-IDF: {}".format(word, round(score, 5))) 

をしかし、 59000文書があるので、これには多くの時間がかかります。

良い方法がありますか?

答えて

1
  • 私はこの件について混乱します。しかし、Sparkを使用してインターネット上でいくつかのソリューションを見つけました。ここにあなたが見ることができる:

    一方

    https://www.linkedin.com/pulse/understanding-tf-idf-first-principle-computation-apache-asimadi

  • 私はtheese方法を試してみましたが、私は悪い結果を取得できませんでした。多分あなたは試してみたいです:

    • 私は単語リストを持っています。このリストには単語とそのカウントが含まれています。
    • この単語の数の平均が見つかりました。
    • 平均値で下限と上限を選択しました。
      (例:下限=平均/ 2、上限=平均* 5)
    • 次に、上限と下限の新しい単語リストを作成しました。 11880
      平均:正規化ワードベクトル長前
      :19下限:上限9:theeseと
  • iはtheese結果を得た95
    正規ワードベクトルの長さの後:1595

  • また、コサインの類似性の結果も良好でした。

関連する問題