Лемматизация делает корпус огромным
Используя 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)