Я пытаюсь классифицировать объекты, используя наивный байесовский классификатор, я использовал TF_IDF для извлечения объектов.
finaltfidfVector
- это список векторов, каждый вектор представляет список чисел, 0
, еслислово не найдено, иначе вес слова, если оно найдено.
И classlabels
содержит все метки классов для каждого вектора.Я пытаюсь классифицировать его с помощью этого кода, но он не работает.
26652 строки для набора данных
from nltk.classify import apply_features
def naivebyse(finaltfidfVector,classlabels,reviews):
train_set = []
j = 0
for vector in finaltfidfVector:
arr={}
if j<18697:
arr[tuple(vector)] = classlabels[j]
train_set.append((arr, reviews[j]))
j += 1
test_set = []
j = 18697
for vector in finaltfidfVector:
arr = {}
if j < 26652 and j>=18697:
arr[tuple(vector)] = classlabels[j]
test_set.append((arr, reviews[j]))
j += 1
classifier = nltk.NaiveBayesClassifier.train(train_set)
print(nltk.classify.accuracy(classifier, test_set))
Выход:
0.0
Используется ссылка для TF_IDF и применяется к finaltfidfVector
https://triton.ml/blog/tf-idf-from-scratch?fbclid=IwAR3UlCToGYFEQSmugXo3M5Q9fcld79JfXSfBaDG7wKv5a49O0ZDEft9DFNg. набор данных
это пример использованного набора данных перед предварительной обработкой и TF_IDF
Это пример первого вектора дляиндекс нуля в finaltfidfVector
списке
[0.0,0.0, 0.0, 0.6214608098422192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5115995809754083,0.0,0.0, 0.0, 0.0, 0.5521460917862246, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.6214608098422192,0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.6214608098422192, 0.0, 0.0, 0.0, 0.6214608098422192]
classlabels
содержит метку класса для каждого вектора, 1 для сарказма 0 для не сарказма.Метка класса индекса 0 равна 1, это 1 для первого вектора в finaltfidfVector
.
Первый элемент для train_set равен
({(0.0, 0.0, 1.3803652294655615,.....ect): '0'}, "former versace store clerk sues over secret 'black code' for minority shoppers")