Лемматизация делает корпус огромным

Используя ipython 2.7 и корпус с не-Ascii символами.

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

 from nltk.corpus import stopwords

 tokenized_docs_no_stopwords = []
 for doc in tokenized_docs_no_punctuation:
         new_term_vector = []
         for word in doc:
         if not word in stopwords.words('english'):
         new_term_vector.append(word)
tokenized_docs_no_stopwords.append(new_term_vector)

и рутина

 from nltk.stem.porter import PorterStemmer

 from nltk.stem.wordnet import WordNetLemmatizer

 porter = PorterStemmer()

 wordnet = WordNetLemmatizer()

  preprocessed_docs = []
 for doc in tokenized_docs_no_stopwords:
       final_doc = []
       for word in doc:
       final_doc.append(porter.stem(word))
       #final_doc.append(snowball.stem(word))
       #final_doc.append(wordnet.lemmatize(word))
   preprocessed_docs.append(final_doc)

Кажется, корпус в 10 раз больше. Разве цель удаления стоп-слов и леммизации не должна уменьшать размер корпуса?

Я попытался отрегулировать отступ, но у меня есть ощущение, что может быть более эффективный цикл, чем подпрограмма 'append', но меня больше беспокоит экспоненциальное увеличение памяти.

я работаю на примере здесь

http://stanford.edu/~rjweiss/public_html/IRiSS2013/text2 Любая помощь или направление будут наиболее признательны

1 ответ

Решение

Хорошо, отступ в коде был критическим, но я устранил циклы добавления беспорядка и вместо этого использовал Lamba:

filtered_words = stopwords.words('english')
 tokenized_docs_no_stopwords = []

tokenized_docs_no_stopwords = filter(lambda x: x not in filtered_words,       
tokenized_docs_no_irishstopwords)
Другие вопросы по тегам