問題

2012-01-06 28 views
0

は、私はこのエラー問題

問題の署名を得続けますイベント名:APPCRASH
アプリケーション名:python.exe
アプリケーションのバージョン:0.0.0.0
アプリケーションのタイムスタンプ:4c73f7b6
障害モジュール名:
障害モジュールのバージョンを_csr.pyd:0.0.0.0
障害モジュールのタイムスタンプ:4d6a645b
例外コード:オフセットC0000005
例外:000c05d4

私は再インストールPythonと私のプログラムは、(すなわちgensim、nlptk、scipyのダウンロード上で動作するすべてのモジュールを試してみたし、 numpy)

これは十分なデータであるかどうかは分かりませんが、教えてください。最後の繰り返しで

lsi = models.LsiModel(corpus, num_topics = num_Topics) 
index_lsi = similarities.MatrixSimilarity(lsi[corpus]) 

for k, v in dict_Queries.items(): 
     File.write("Check Key: " +k+ "\n") 
     print "Running.... \n" 
     vec_bow = dict.doc2bow(v.split(), allow_update=True) 

#In the last iteration, the code below the line doesn't run and i think the vec_lsi 
#is the source of the problem but I don't know why? 
     vec_lsi = lsi[vec_bow] 

     #indexing the LSI 
     sims = index_lsi[vec_lsi] 
     sims = sorted(enumerate(sims), key = lambda item: -item[1]) 

     if not cut_Off == 0: 
      sims = sims[0:cut_Off] 
     else: 
      pass 

     for t in sims: 

      dup_info = dict_tcs.get(t[0]) 

      if t[1] > 0.75: 
       #print "Key: " + k + " Link: " + dup_info + "\n" 
       File.write("Adding: "+str(t)+ " To LSI actual \n") 
       if dict_Actual_LSI.has_key(k): 
        links = dict_Actual_LSI.get(k) 
        links.append(dup_info) 
       else: 
        links = [] 
        links.append(dup_info) 
        dict_Actual_LSI[k] = links 
     print "Added\n" 

、ライン以下のコードが実行されないと私はvec_lsiが問題の原因だと思うが、私はなぜか分からないのですか?

おかげ

+0

何か問題はありますか? 'print"こんにちは世界は "仕事ですか? –

+0

正確には、例えば、 'python -c"を試してみてください。 'hello、world' "'コマンドラインで –

+0

はい、うまくいきます。 – Shahab

答えて

3

例外コードC0000005は、 "アクセス違反" を意味します。これは、一般的に、コードの一部がアクセス権のないメモリアドレスに対して読み書きしようとしたことを意味します。これは、破損したポインタ、初期化されていないメモリ、または配列の境界からのネイティブコードのインデックス付けによるものです。

障害があるモジュールは_csr.pydです。これはSciPyの一部で、スパース配列を操作するようなものです。これは、何らかの形でSciPyが無効なメモリを指しているため、エラーが発生していることを示唆しています。あなたのプログラムを見ることなく、これがどのように起こったのかを推測するのは難しいです。

次のステップとして、プログラムにいくつかの印刷文を追加することで、クラッシュ直前の状況を把握することができます。進捗状況を印刷して、クラッシュの発生場所を絞り込むことができます。あなたが運が良ければ、なぜSciPyが無効なメモリにアクセスしようとしているのかが分かります。

+0

残念ながら、残念ながら私のコード全体を表示することはできません。あなたはこれが私のコードよりもSciPyのバグである可能性があると言いましたか? – Shahab

+1

SciPyのバグかもしれませんが、gensimに入力をどのように入力し、それが何を保証しているかによって、gensimのバグや自分のコードのバグでもあります。これを解決するための最良の方法は、プログラムとデータを最小サイズに縮小し、クラッシュを生成してから縮小コードとデータをSciPyまたはgensim開発者に提供することです。 – Weeble

+0

はい、アドバイスをいただきありがとうございます。コードはgensimのウェブサイトと私のために働いていた以前の方法の両方に記載されているものと非常によく似ています。 – Shahab