Я пытаюсь создать автоматический c детектор настроений, который должен назначать настроение (положительное, отрицательное, нейтральное и т. Д. c.) На основе текста его целевого контекста. Но почему-то я получаю точность обучения 100%. Я пытался понять это слишком долго, и я чувствую, что упускаю что-то довольно очевидное сейчас. Что я делаю не так?
Мне очень жаль, если это плохо отформатировано. Я присоединился к этому сайту несколько дней go, и я в отчаянии и тороплюсь с моим крайним сроком Uni среди всего этого хаоса, поэтому, пожалуйста, прости меня.
import pandas as pd
import os
df_train = pd.read_csv("combined-sentiment-judgments.tsv", sep='\t', header=None)
df_train.head()
df_train.shape
Результат таков: (980, 6 )
import sys
import csv
import random
csv.field_size_limit(sys.maxsize)
with open ("combined-sentiment-judgments.tsv") as data:
trainData = [row for row in csv.reader(data, delimiter='\t')]
random.shuffle(trainData)
context = []
for i in range (len(trainData)):
result =[]
f= ""
result.append(trainData[i][3])
result.append(trainData[i][4])
result.append(trainData[i][5])
context.append(f.join(result))
labels = []
for i in range (len(context)):
res = []
s= ""
res.append(trainData[i][1])
labels.append(s.join(res))
for label,text in list(zip(labels,context))[:20]:
print(label,text[:50]+"...")
Это несколько строк, которые я напечатал с этим, чувства на английском языке sh, но предложения на финском sh:
нейтральный Kyseinen auto taitaa olla Mursu. Niissä on nykyää ...
нейтрально, позитивно, нейтрально, неясно Tällä hetkellä Liptonin vihreä sitrushedelmätee. ...
отрицательный, нейтральный, отрицательный, отрицательный mutta eikös Windows 8 ole ihan paska? en nyt muis ...
положительный, смешанный, нейтральный, смешанный Tarkoitus olisi ostaa b230ft koneellinen volvo, k ...
import sklearn
from sklearn.feature_extraction.text import CountVectorizer
vectorizer=CountVectorizer(max_features=100000,binary=True,ngram_range=(1,1))
feature_matrix=vectorizer.fit_transform(context)
print("shape=",feature_matrix.shape)
Результаты: shape = (980, 10861)
from sklearn.model_selection import train_test_split
train_texts, dev_texts, train_labels, dev_labels=train_test_split(context,labels,test_size=0.2)
vectorizer=CountVectorizer(max_features=100000,binary=True,ngram_range=(1,2))
feature_matrix_train=vectorizer.fit_transform(train_texts)
feature_matrix_dev=vectorizer.transform(dev_texts)
print(feature_matrix_train.shape)
print(feature_matrix_dev.shape)
Результаты снова:
(784, 27827)
(196, 27827)
import sklearn.svm
classifier=sklearn.svm.LinearSVC(C=0.009,verbose=1)
classifier.fit(feature_matrix_train, train_labels)
print("DEV",classifier.score(feature_matrix_dev, dev_labels))
print("TRAIN",classifier.score(feature_matrix_train, train_labels))
И вот что я получаю:
DEV 0.08673469387755102
TRAIN 1.0