ошибка gensim: объект 'NoneType' не может быть подписан во время обучения в Fasttext - PullRequest
0 голосов
/ 12 октября 2018

При реализации Fasttext в Python 3.7 я столкнулся с неожиданным сценарием, связанным с Exception in thread, который приводит к тому, что объект

NoneType 'не является подписным

Ошибка (снимок экрана) полной трассировки стека выглядит следующим образом: enter image description here

Что именно представляет собой эта проблема в 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)`

в показанном выше коде.

...