Я пытаюсь использовать многопоточность для ускорения процесса.Я использую wordnetlemmatizer для лемматизации слов, и эти слова могут в дальнейшем использоваться sentiwordnet для вычисления настроения текста.Моя функция анализа настроений, в которой я использую WordNetLemmatizer, выглядит следующим образом:
import nltk
from nltk.corpus import sentiwordnet as swn
def SentimentA(doc, file_path):
sentences = nltk.sent_tokenize(doc)
# print(sentences)
stokens = [nltk.word_tokenize(sent) for sent in sentences]
taggedlist = []
for stoken in stokens:
taggedlist.append(nltk.pos_tag(stoken))
wnl = nltk.WordNetLemmatizer()
score_list = []
for idx, taggedsent in enumerate(taggedlist):
score_list.append([])
for idx2, t in enumerate(taggedsent):
newtag = ''
lemmatized = wnl.lemmatize(t[0])
if t[1].startswith('NN'):
newtag = 'n'
elif t[1].startswith('JJ'):
newtag = 'a'
elif t[1].startswith('V'):
newtag = 'v'
elif t[1].startswith('R'):
newtag = 'r'
else:
newtag = ''
if (newtag != ''):
synsets = list(swn.senti_synsets(lemmatized, newtag))
score = 0
if (len(synsets) > 0):
for syn in synsets:
score += syn.pos_score() - syn.neg_score()
score_list[idx].append(score / len(synsets))
return SentiCal(score_list)
После запуска 4 потоков я получаю следующую ошибку для первых 3 потоков, и последний поток работает отлично.
AttributeError: 'WordNetCorpusReader' object has no attribute '_LazyCorpusLoader__args'
Я уже пытался импортировать пакет NLTK локально, как указано в этом выпуске NLTK , и пробовал решение, приведенное на этой странице .