以下代码有什么问题?

时间:2014-12-23 06:21:38

标签: python-2.7 machine-learning artificial-intelligence documentfilter

我从书籍编程集体智慧第118页,“文档过滤”一章中复制了以下代码。此功能通过将文本分隔为非字母的任何字符,将文本分解为单词。这只留下实际的单词,全部转换为小写。

import re                                          
import math
def getwords(doc):
    splitter=re.compile('\\W*')
    words=[s.lower() for s in splitter.split(doc) 
           if len(s)>2 and len(s)<20]
    return dict([(w,1) for w in words])

我实现了该功能并出现以下错误:

>>> import docclas
>>> t=docclass.getwords(s)
Traceback (most recent call last):
  File "<pyshell#15>", line 1, in <module>
    t=docclass.getwords(s)
  File "docclass.py", line 6, in getwords
    words=[s.lower() for s in splitter.split(doc)
NameError: global name 'splitter' is not defined

1 个答案:

答案 0 :(得分:0)

它可以在这里工作

>>> import re
>>> 
>>> def getwords(doc):
...     splitter=re.compile('\\W*')
...     words=[s.lower() for s in splitter.split(doc) 
...            if len(s)>2 and len(s)<20]
...     return dict([(w,1) for w in words])
... 
>>> getwords ("He's fallen in the water!");
{'water': 1, 'the': 1, 'fallen': 1}

猜猜你在代码中写了一个拼写错误,但是当你把它粘贴在这里时就把它弄好了。