Проблемы с индексацией с помощью скрытого семантического анализа - PullRequest
0 голосов
/ 07 января 2012

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

Сигнатура проблемы: Имя события проблемы: 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 является источником проблемы, но я не знаю почему?

Спасибо

1 Ответ

3 голосов
/ 11 января 2012

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...