NLTK

2013-07-24 4 views
1

Я получил сообщение об ошибкеNLTK

Traceback (most recent call last): 
     File "C:/Users/shengrong/Desktop/bigram", line 55, in <module> 
     bg = bigram(file) 
     File "C:/Users/shengrong/Desktop/bigram", line 43, in bigram 
     return tt1.perplexity(my_bigrams) 
     File "C:\Python27\lib\site-packages\nltk\model\ngram.py", line 217, in perplexity 
     return pow(2.0, self.entropy(text)) 
     File "C:\Python27\lib\site-packages\nltk\model\ngram.py", line 205, in entropy 
     e += self.logprob(token, context) 
     File "C:\Python27\lib\site-packages\nltk\model\ngram.py", line 151, in logprob 
     return -log(self.prob(word, context), 2) 
    ValueError: math domain error 




import os,csv,nltk 
from nltk.model.ngram import NgramModel 
from nltk.probability import LidstoneProbDist 

fout = open("/Users/shengrong/Documents/personal/WN1.data.csv", "w") 

outfilehandle = csv.writer(fout, 
          delimiter=",", 
          quotechar='"', 
          quoting=csv.QUOTE_NONNUMERIC) 


localrow = [] 
localrow.append("File name") 
localrow.append("Perplexity for unigram") 
localrow.append("Perplexity for bigram") 
localrow.append("Perplexity for trigram") 
outfilehandle.writerow(localrow) 

def bigram(file): 
    file_object = open(file) 
    ln=file_object.read() 

    words = nltk.word_tokenize(ln) 
    my_bigrams = nltk.bigrams(words) 
    my_trigrams = nltk.trigrams(words) 



    tt1=NgramModel(2, my_bigrams, estimator = None) 


    return tt1.perplexity(my_bigrams)  




#set the path of the folder 
os.chdir("/Users/shengrong/Documents/A") 
s = os.getcwd() 
#search files in the folder 
files = os.listdir(s) 

for file in files: 
    bg = bigram(file) 
    localrow= [] 
    localrow.append(file) 
    localrow.append(bg) 

    outfilehandle.writerow(localrow) 

fout.close() 

Как исправить эту проблему? Без использования цикла для чтения папки мой код работает хорошо.

Спасибо, ребята.

ответ

0

Ошибка, которую вы получаете, является ошибкой домена Math. Поскольку он работает без цикла, может оказаться, что один или несколько файлов содержат некоторые данные, которые не могут быть обработаны пакетом Math.

Убедитесь, что все файлы в вашей папке содержат данные в правильном формате и с ожидаемыми значениями.

+0

все они txt-файлы. Для некоторых файлов он работает хорошо; Однако для других возникает ошибка в области математического домена. – user2612912