При реализации Fasttext
в Python 3.7 я столкнулся с неожиданным сценарием, связанным с Exception in thread
, который приводит к тому, что объект
NoneType 'не является подписным
Ошибка (снимок экрана) полной трассировки стека выглядит следующим образом:
Что именно представляет собой эта проблема в gensim python?
Код, который я пробовал:
import nltk, re
import string
from collections import Counter
from string import punctuation
from nltk.tokenize import word_tokenize
from nltk.corpus import gutenberg, stopwords
from nltk.stem import WordNetLemmatizer
from gensim.models import FastText
def preprocessing():
raw_data = (gutenberg.raw('shakespeare-hamlet.txt'))
tokens = word_tokenize(raw_data)
tokens = [w.lower() for w in tokens]
#remove punctuation from each word
table = str.maketrans('', '', string.punctuation)
stripped = [w.translate(table) for w in tokens]
global words
words = [word for word in stripped if word.isalpha()]
sw = (stopwords.words('english'))
sw1= (['.', ',', '"', '?', '!', ':', ';', '(', ')', '[', ']', '{', '}'])
stop=sw+sw1
words = [w for w in words if not w in stop]
preprocessing()
def freq_count():
fd = nltk.FreqDist(words)
freq_count()
def intialize_word_embedding():
model = FastText([words], size = 100, sg = 1, window = 5, min_count = 5, workers = 4)
model.train([words], total_examples=len(words), epochs=10)
model.init_sims(replace=True)
model_name = "mcft"
model.save(model_name)
print(len(model.wv.vocab))
intialize_word_embedding()
def load_model():
model = FastText.load('mcft')
similarities = model.wv.most_similar('hamlet')
for word, score in similarities:
print(word , score)
print(model.wv.similarity('hamlet', 'king'))
load_model()
Примечание. Модель отлично работает, когда я комментирую строку
model.train([words], total_examples=len(words), epochs=10)`
в показанном выше коде.