【问题标题】:Problems with Indexing by Latent Semantic Analysis潜在语义分析的索引问题
【发布时间】:2012-01-06 21:41:00
【问题描述】:

每当我尝试在安装了 python 2.6.6 的 Windows 7 Enterprise(64 位)中运行这个 python 脚本时,我都会不断收到这个错误

问题签名: 问题事件名称: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 是问题的根源,但我不知道为什么?

谢谢

【问题讨论】:

  • 有什么用吗? print "hello world" 有效吗?
  • 正是——例如,在命令行中尝试python -c "print 'hello, world'"
  • 是的,这行得通,那么它在我的代码中吗?
  • 是的。只是要明确一点:你是如何运行你的程序的?你是从命令行运行它吗?在这种情况下,您应该得到一个带有回溯的异常。
  • 我正在从命令行运行它,但提示符上没有出现回溯....它只是用显示上述错误的外部屏幕来标记我

标签: python indexing crash


【解决方案1】:

异常代码 c0000005 表示“访问冲突”。这通常意味着某些代码试图读取或写入它无权访问的内存地址。这可能是由于指针损坏、内存未初始化或本机代码索引超出数组边界。

故障所在的模块是_csr.pyd。这是 SciPy 的一部分,听起来像是用于操作稀疏数组。这表明错误正在发生,因为 SciPy 以某种方式指向无效内存。如果没有看到您的程序,很难猜测这是怎么发生的。

下一步,您可以尝试通过在程序中添加一些打印语句来确定崩溃前发生的情况 - 通过打印其进度,您可以缩小崩溃发生的范围。如果幸运的话,您可能会清楚 SciPy 尝试访问无效内存的原因。

【讨论】:

  • 很遗憾,由于种种原因,我无法显示我的整个代码,但就像你说的那样,这可能是 SciPy 的错误而不是我的代码?
  • 这可能是 SciPy 中的错误,但它同样可能是 gensim 中的错误,甚至是您自己的代码中的错误,这取决于您将输入提供给 gensim 的方式以及它提供的保证。解决此问题的最佳选择是将程序和数据减少到仍然可以产生崩溃的最小大小,然后将减少的代码和数据提供给 SciPy 或 gensim 开发人员。
  • 是的,谢谢您的建议,代码与 gensim 网站上概述的代码和以前对我有用的方法非常相似,所以我会将我的问题转达给他们。跨度>
猜你喜欢
  • 2012-05-27
  • 1970-01-01
  • 1970-01-01
  • 2019-02-11
  • 2011-10-26
  • 1970-01-01
  • 1970-01-01
  • 2014-10-08
  • 2017-08-05
相关资源
最近更新 更多