Я работаю над проблемой классификации текста, и я попробовал WordNetLemmmatizer, а затем TF-IDF, CountVectorizer. Теперь я пытаюсь очистить текст с помощью Spacy перед подачей в TF-IDF. Входной файл содержит около 20 000 записей, каждая из которых содержит несколько предложений. Общий размер файла 45 МБ.
Лемматизация с использованием WordNet занимала всего несколько секунд. Но приведенный ниже код с использованием Spacy занимает слишком много времени. Через 20 минут мой ноутбук повесили. Пожалуйста, посоветуйте, как оптимизировать Spacy для предварительной обработки текста и лемматизации.
Я использую Spacy 2.0.12.
import spacy
nlp = spacy.load('en', disable=['parser', 'tagger', 'ner'])
def spacy_lemma_text(text):
doc = nlp(text)
tokens = [tok.lemma_.lower().strip() for tok in doc if tok.lemma_ != '-PRON-']
tokens = [tok for tok in tokens if tok not in nltk_stopwords and tok not in punctuations]
tokens = ' '.join(tokens)
return tokens
df['spacy_lemma_text'] = df['text'].apply(spacy_lemma_text)