来自不同计算机上与NLTK库相关的一个python代码的不同结果

时间:2017-02-07 02:43:53

标签: python nltk anaconda

我编写了以下代码,它在我的计算机上工作正常,但在其他计算机上返回null。你能帮我解决这个问题。

import string
import nltk
from nltk.tokenize import RegexpTokenizer
from nltk.corpus import stopwords

def preprocess(sentence):
    sentence = sentence.lower()
    specialChrs={'\xc2',''} 
    pattern=pattern = r'''(?x)               # set flag to allow verbose regexps
              ([A-Z]\.)+         # abbreviations, e.g. U.S.A.
              | \$?\d+%?
              | \$?\d+(,|.\d+)*
              | \w+([-'/]\w+)*    # words w/ optional internal hyphens/apostrophe
              |/\m+([-'/]\w+)*
            '''
    tokenizer = RegexpTokenizer(pattern)
    tokens = tokenizer.tokenize(sentence)
    print tokens
    realToken= [e for e in tokens if  len(e)>= 3 and len(e)<10]
    stopWords = set(stopwords.words('english'))
    stop_words = [w for w in realToken if not w in stopWords]
    filtered_words = [w for w in stop_words if not w in specialChrs]
    print filtered_words
   # final_words = [w for w in filtered_words if not w[0]=='0' and w[1]=='x']
    return filtered_words


str='I have one generalized rule, where in shellscript I check for all need packages, if any package does not exist, then install it other wise skip to next check. As I need to check and execute few other python as well shellscripts, I am using it. Is using shellscript for this is bad idea?'
preprocess(str)

这些是我计算机输出的一部分:

  

['i','have','one','generalized','rule','where','in',   'shellscript','i','check','for','all','need',.......'idea']

其他计算机的结果:

  

[('','','',''),('','','',''),('','','',''),('', '','',''),('','','',''),('','','',''),('','','','''' ),...]

我的电脑资讯

  

python 2.7.12 | Anaconda 2.3.0 (64位)| (默认,2016年7月2日,17:42:40)   [gCC 4.4.7 20120313(Red Hat 4.4.7-1)]在linux2上   输入“帮助”,“版权”,“信用”或“许可”以获取更多信息。   Continuum Analytics为您带来了Anaconda。   请查看:http://continuum.io/thankshttps://anaconda.org

     

import nltk

     

print('nltk版本为{}。'。format(nltk。版本))

     

nltk版本是3.2.1。

我的朋友电脑

  

python 2.7.12 | Anaconda 4.1.1 (64位)| (默认情况下,2016年6月29日,11:42:40)[MSC v.1500 64位(AMD64)]在win32上   输入“帮助”,“版权”,“信用”或“许可”以获取更多信息。   Continuum Analytics为您带来了Anaconda。   请查看:http://continuum.io/thankshttps://anaconda.org

     

import nltk

     

print('nltk版本为{}。'。format(nltk。版本))

     

nltk版本是3.2.1。

另外,我在另一台计算机上测试我的代码并得到相同的结果。

该计算机的信息是:

  

Python 2.7.3(默认,2016年10月26日,21:01:49)   linux2上的[GCC 4.6.3]   输入“帮助”,“版权”,“信用”或“许可”以获取更多信息。

1 个答案:

答案 0 :(得分:1)

您的问题已解答in this page

您需要以这种方式更改正则表达式并命令解决您的问题。

`pattern = r'''(?x)          # set flag to allow verbose regexps
            (?:[A-Z]\.)+        # abbreviations, e.g. U.S.A.
         | \$?\d+(?:\.\d+)?%?
         | \w+(?:-\w+)*        # words with optional internal hyphens
         |/\m+(?:[-'/]\w+)*
      '''`