Выполнить задание, которое я не имею ни малейшего представления о том, как его выполнить, у меня есть только базовое понимание, которое кажется:
"Генерация обучения 80:20: тестирование сплитов всех 4 категорий обзоров (DVD, книга, кухня и электроника), содержащие положительные и отрицательные отзывы.
Запишите количество отзывов в соответствии с категорией, настроением и набором данных (обучение или тестирование). Это можно сделать в кадре данных Pandas
Ответьте на следующие вопросы:
Относительно данных обучения для книг, сколько: а) положительных, б) отрицательных?
Относительно отрицательных данных тестирования, для сколькихЕсть ли для каждой категории: а) DVD, б) книга, в) кухня и г) электроника? "
import sys
import re
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
from itertools import zip_longest
from nltk.tokenize import word_tokenize
from random import sample
from sussex_nltk.corpus_readers import AmazonReviewCorpusReader
def split_data(data, ratio=0.7):
data = list(data)
n = len(data)
train_indices = sample(range(n), int(n * ratio))
test_indices = list(set(range(n)) - set(train_indices))
train = [data[i] for i in train_indices]
test = [data[i] for i in test_indices]
return (train, test)
dvd_reader = AmazonReviewCorpusReader().category("dvd")
book_reader = AmazonReviewCorpusReader().category("book")
kitchen_reader = AmazonReviewCorpusReader().category("kitchen")
electronics_reader = AmazonReviewCorpusReader().category("electronics")
pos_train, pos_test = split_data(dvd_reader.positive().documents(), 0.8)
neg_train, neg_test = split_data(dvd_reader.negative().documents(), 0.8)
train = pos_train + neg_train
test = pos_test + neg_test
pos_train1, pos_test1 = split_data(book_reader.positive().documents(), 0.8)
neg_train1, neg_test1 = split_data(book_reader.negative().documents(), 0.8)
train1 = pos_train1 + neg_train1
test1 = pos_test1 + neg_test1
pos_train2, pos_test2 = split_data(kitchen_reader.positive().documents(), 0.8)
neg_train2, neg_test2 = split_data(kitchen_reader.negative().documents(), 0.8)
train2 = pos_train2 + neg_train2
test2 = pos_test2 + neg_test2
pos_train3, pos_test3 = split_data(electronics_reader.positive().documents(), 0.8)
neg_train3, neg_test3 = split_data(electronics_reader.negative().documents(), 0.8)
train3 = pos_train3 + neg_train3
test3 = pos_test3 + neg_test3
Итак, я получил 4 разные категории и разделил данные на положительные и отрицательные отзывы с соотношением 0,8, а затем дополнительно разделил положительные и отрицательные отзывы в данных обучения и тестирования.Хотя я не уверен, как использовать DataFrame панд для записи числа.
Я не уверен, достаточно ли этой информации для кого-либо, чтобы помочь мне, хотя при необходимости я могу попытаться добавить больше.Я не уверен, собираюсь ли я что-то маркировать или что ... Любое руководство я буду вечно благодарен.
Все, что я сделал, это добавил:
df = pd.DataFrame(list(zip_longest(train,test)), columns=["TRAIN","TEST"])
display(df)
print()
df = pd.DataFrame(list(zip_longest(train1,test1)),columns=["TRAIN","TEST"])
display(df)
print()
df = pd.DataFrame(list(zip_longest(train2,test2)),columns=["TRAIN","TEST"])
display(df)
print()
df = pd.DataFrame(list(zip_longest(train3,test3)),columns=["TRAIN","TEST"])
display(df)
Хотя то, как оно представлено, ужасно смотреть, и я считаю, что я должен идти за len () категорий, настроенийи наборы данных.Если кто-то может оказать какую-либо помощь, пожалуйста, сделайте.
Просто чтобы ответить на поставленные вопросы, я написал код:
df = pd.DataFrame(list(zip_longest(pos_train1,neg_train1)), columns=["TRAIN","TEST"])
display(df)
df = pd.DataFrame(list(zip_longest(neg_test,neg_test1,neg_test2,neg_test3)), columns=["DVD","BOOK","KITCHEN","ELECTRONICS"])
display(df)
Но еще раз я уверен, что это не лучший способ отобразить его.