复现Kaggle word2vec竞赛代码时xrange报错问题咨询
问题原因
- 你遇到的
xrange未定义报错是Python版本差异导致的,并非操作遗漏:你找到的Kaggle教程代码是基于Python 2编写的,Python 2中xrange()用来返回高效的迭代器生成数字序列,而Python 3已经把xrange()的功能整合进了range(),同时移除了xrange()这个内置函数,所以运行时会报未定义错误。
修复方案
方案1:直接替换关键词
把原代码里的xrange直接替换为range即可正常运行,修改后的循环代码如下:
for i in range( 0, num_reviews ): clean_train_reviews.append( review_to_words( train["review"][i] ) )
方案2:更简洁的Pandas风格写法(推荐)
不需要手动写循环计数,直接对Series调用apply方法批量处理所有文本,既不会出现索引错误,代码也更简洁:
clean_train_reviews = train["review"].apply(review_to_words).tolist()
关于TypeError: Series对象不可调用报错
这个错误和xrange无关,是修改代码时不小心对Pandas的Series对象加了括号触发了调用逻辑,比如写出了train["review"]()这类写法,只要去掉多余的括号,按上面的方案编写就不会触发该问题。
内容的提问来源于stack exchange,提问作者Miguel Azevedo
相关产品推荐
相关产品推荐

