2014-12-15 2 views
-1

Я пытаюсь запустить пример моделирования GENSIM в Canopy Express и получить следующую ошибку в строке Sum().Ошибка GENSIM в Canopy Express

from gensim import corpora, models, similarities 
from itertools import chain 

""" DEMO """ 
documents = ["Human machine interface for lab abc computer applications", 
     "A survey of user opinion of computer system response time", 
     "The EPS user interface management system", 
     "System and human system engineering testing of EPS", 
     "Relation of user perceived response time to error measurement", 
     "The generation of random binary unordered trees", 
     "The intersection graph of paths in trees", 
     "Graph minors IV Widths of trees and well quasi ordering", 
     "Graph minors A survey"] 

# remove common words and tokenize 
stoplist = set('for a of the and to in'.split()) 
texts = [[word for word in document.lower().split() if word not in stoplist] 
    for document in documents] 

# remove words that appear only once 
all_tokens = sum(texts, []) 
tokens_once = set(word for word in set(all_tokens) if all_tokens.count(word) == 1) 
texts = [[word for word in text if word not in tokens_once] for text in texts] 

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

+0

Спасибо. Это очень помогает, поскольку я новичок и просто пытаюсь изучить пакет. Я видел аналогичный вопрос, который указывал на выражение суммы, но не уточнил, как его решить. Ваш ответ предусматривает это. Еще раз спасибо. – user3890455

ответ

0

Canopy сам Python is "regular Python 2.7". Тем не менее, панель Python в GUI Canopy - это IPTConQTConsole, которая добавляет слой функциональности, в основном для улучшения, но в редких случаях для худшего. По умолчанию он запускается в режиме Pylab, что может ввести в заблуждение для новичков (см. https://support.enthought.com/entries/25750190-Modules-are-already-available-in-Canopy-s-Python-PyLab-prompt-but-not-in-a-script).

Вы не описываете, что вы делаете с какой-либо точностью, но из симптома, который вы описываете, это звучит так, как будто вы выполняете свои команды один за другим в приглашении IPython, либо путем копирования-вставки, либо выбрав команды в текстовом редакторе и выполнив команду «Выполнить выбор». В приглашении IPython, поскольку Pylab делает неявный from numpy import *, функция sum ссылается на сумму numpy, а не на встроенную сумму Python, которая будет учитывать сообщение об ошибке, которое вы сообщаете.

три различных решения (из многих):

1) Если вы просто запустить скрипт (вместо команды «Выбор Run» или копировать/вставить), он должен действовать, как и ожидалось. Это наиболее надежное и гибкое решение.

2) Отключить режим Pylab в настройках Canopy; то вы можете запускать свои команды в любом случае.

3) (Не отличное решение, но поучительное). Сделайте del sum в приглашении IPython. Это удалит numpy sum из пространства имен IPython, обнаружив исходный встроенный sum и позволяя вашему коду работать в любом случае.

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