Используя библиотеку nltk, мне нужно увидеть, какая из них самая длинная, а какая - самая короткая фраза корпуса. Я думаю, что алгоритм, который я использовал, является функциональным:
# -*- coding: utf-8 -*-
import sys
import codecs
import nltk
def findLongestShortest(x):
longestPhrase = ""
shortestPhrase = ""
tmpmin = 99999
tmpmax = 0
for element in x:
if len(element) < tmpmin:
tmpmin = len(element)
shortestFrase = element
if len(element) > tmpmax:
tmpmax = len(element)
longestPhrase = element
return longestPhrase, shortestFrase
fileName = sys.argv[1]
fileInput = codecs.open(fileName, "r", "utf-8")
fileString = fileInput.read()
phrasesList = sent_tokenizer.tokenize(fileString)
longest, shortest = findLongestShortest(phrasesList)
Хотя, вывод:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 11: ordinal not in range(128)
Я понятия не имею, что это значит и как его решить. Я знаю, что мой входной файл представляет собой обычный текст UTF-8. Любые идеи?