2012-01-06 3 views
0

Всякий раз, когда я пытаюсь запустить этот питон скрипт, в Windows 7 Enterprise (64 бит) с питоном 2.6.6 установлен, я получаю эту ошибкуПроблемы с индексированием по латентного семантического анализа

Сигнатура проблемы: Problem Название события: APPCRASH
Имя приложения: python.exe
Версия приложения: 0.0.0.0
Применение Отметка: 4c73f7b6
Fault Module Name: _csr.pyd
Fault Module Version: 0.0.0.0
Fault Модуль Отметка: 4d6a645b
Код исключения: c0000005
Exception Offset: 000c05d4

Я попытался повторно устанавливать питон и все модули, что моя программа работает на (т.е. 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 'hello world? –

+0

Точно, например, попробуйте 'python -c 'print' hello, world '" 'в командной строке –

+0

Да, это работает, так же как-то внутри моего кода? – Shahab

ответ

3

Код исключения c0000005 означает "нарушение прав доступа". Обычно это означает, что часть кода пыталась прочитать или записать на адрес памяти, к которому у него не было доступа к доступу. Это может быть связано с поврежденным указателем, неинициализированной памятью или индексом собственного кода из границ массива.

Модуль, в котором находится ошибка, является _csr.pyd. Это часть SciPy, которая звучит так, как будто она управляет разреженными массивами. Это предполагает, что ошибка происходит, потому что каким-то образом SciPy указывает на недопустимую память. Не видя вашей программы, трудно догадаться, как это могло произойти.

В качестве следующего шага вы можете попытаться определить, что происходит непосредственно перед сбоем, добавив в свою программу какие-либо заявления о печати - путем распечатки его прогресса вы можете сузить место происшествия. Если вам повезет, тогда станет ясно, почему SciPy пытается получить доступ к недопустимой памяти.

+0

К сожалению, я не могу показать весь свой код по целому ряду причин, но как вы сказали, что это может быть ошибкой с SciPy, чем мой код? – Shahab

+1

Возможно, это ошибка в SciPy, но в равной степени это может быть ошибка в gensim или даже в вашем собственном коде, в зависимости от того, как вы передаете вход в gensim и какие гарантии он делает. Лучшим решением для решения этой проблемы будет сокращение вашей программы и данных до наименьшего размера, которое вы все равно можете произвести сбой, а затем предоставить сокращенный код и данные разработчикам SciPy или gensim. – Weeble

+0

Да, спасибо за совет, код очень похож на то, что указано на веб-сайте gensim, и предыдущие методы, которые сработали для меня, поэтому я передам им свои проблемы. – Shahab

 Смежные вопросы

  • Нет связанных вопросов^_^