Python scikit svm "Словарь не установлен или не предоставлен" - PullRequest
0 голосов
/ 01 марта 2020

Игра с использованием Python scikit SVM Linear Support Vector Classification, и у меня возникает ошибка, когда я пытаюсь делать прогнозы:

import pickle
from sklearn.feature_extraction.text import TfidfVectorizer
from nltk.stem import PorterStemmer
from nltk import word_tokenize
import string


# Function to pass the list to the Tf-idf vectorizer
def returnPhrase(inputList):
    return inputList


# Pre-processing the sentence which we input to predict the emotion
def transformSentence(sentence):
    s = []
    sentence = sentence.replace('\n', '')
    sentTokenized = word_tokenize(sentence)
    s.append(sentTokenized)
    sWithoutPunct = []
    punctList = list(string.punctuation)
    curSentList = s[0]
    newSentList = []
    for word in curSentList:
        if word.lower() not in punctList:
            newSentList.append(word.lower())
    sWithoutPunct.append(newSentList)
    mystemmer = PorterStemmer()
    tokenziedStemmed = []
    for i in range(0, len(sWithoutPunct)):
        curList = sWithoutPunct[i]
        newList = []
        for word in curList:
            newList.append(mystemmer.stem(word))
        tokenziedStemmed.append(newList)
    return tokenziedStemmed


# Extracting the features for SVM
myVectorizer = TfidfVectorizer(analyzer='word', tokenizer=returnPhrase, preprocessor=returnPhrase,
                               token_pattern=None,
                               ngram_range=(1, 3))

# The SVM Model
curC = 2  # cost factor in SVM
SVMClassifier = svm.LinearSVC(C=curC)

filename = 'finalized_model.sav'
# load the model from disk
loaded_model = pickle.load(open(filename, 'rb'))

# Input sentence
with open('trial_truth_001.txt', 'r') as file:
    sent = file.read().replace('\n', '')

transformedTest = transformSentence(sent)

X_test = myVectorizer.transform(transformedTest).toarray()
Prediction = loaded_model.predict(X_test)

# Printing the predicted emotion
print(Prediction)

Это когда я пытаюсь использовать LinearSV C чтобы предсказать, что мне сообщили:

sklearn.exceptions.NotFittedError: Vocabulary not fitted or provided

Что мне здесь не хватает? Очевидно, это то, как я подгоняю и преобразовываю данные.

1 Ответ

0 голосов
/ 06 марта 2020

Я думаю, вам просто нужно изменить строку

X_test = myVectorizer.transform(transformedTest).toarray()

на

X_test = myVectorizer.fit_transform(transformedTest).toarray()
...