2017-11-15 5 views
0

私はGensimを使用して、以下に述べる私のコーパスのtf-idfのスコアを計算しています。gensimでtf-idfを計算する際の問題

corpus=['human interface computer', 
'survey user computer system response time', 
'eps user interface system', 
'system human system eps', 
'user response time'] 

私の現在のコードは以下の通りです。 (:私のコードが間違っている場合、私は別のコードを持って幸せPS)

dictionary = corpora.Dictionary(line.lower().split() for line in corpus) 

class MyCorpus(object): 
    def __iter__(self): 
     for line in corpus: 
      yield dictionary.doc2bow(line.lower().split()) 

corpus = MyCorpus() 

tfidf = models.TfidfModel(corpus) 

corpus_tfidf = tfidf[corpus] 

はしかし、私はエラーRecursionError: maximum recursion depth exceeded while calling a Python objectを取得します。現在のコーパスのtf-idfの値を計算するのを手伝ってください。さらに、私はコーパスで最高のtf-idfスコアを持つ3つの用語を得たいと思っています。

私を助けてください!

答えて

0

さてあなたは(あなたが__iter__方法でcorpusを反復処理しているため)、それを反復しようとしたとき、もちろん、これは無限再帰に入っているので、MyCorpusオブジェクトとして、元corpusリストを再定義しています。あなたはmy_corpus = MyCorpus()を定義したいでしょうか?そうでなければ、あなたがしようとしていることを説明してください...

+0

お返事ありがとうございます。私は正直なところ、私のコーパスのtf-idfの値を計算し、最高のtf-idfスコアを持つ3つの用語を取得したいと考えています。あなたはそれを行う方法を知っていれば教えてください? –

+0

この修正プログラムを試しましたか?もし私がまだ動作しないのなら、理由を説明する必要があります... – Julien

+0

修正後に次のエラーが表示されます: 'ValueError:解凍するのに十分な値がありません(期待値2、1)' –