Я создаю программу, которая собирает информацию об автомобиле с веб-сайта по торговле автомобилями, а затем анализирует данные, чтобы выяснить, завышена ли цена на автомобиль.
Я хочу создать модель, в которой я могу анализировать Подробная информация об определенном c автомобиле или группе автомобилей в форме CSV и модели определит, являются ли автомобили недооцененными / переоцененными и на какой процент, на основе информации из CSV, и даст мне процентную точность для каждого из его прогнозов.
Мой CSV-файл имеет заголовки:
ИМЯ АВТОМОБИЛЯ, ГОД, MILEAGE, ВНИМАНИЕ, ГРАББЕР, ОСНОВНЫЕ ХАРАКТЕРИСТИКИ, ОПИСАНИЕ, URL, ЦЕНА
Итак хотите использовать Word2Ve c для векторизации текста в столбцах ИМЯ АВТОМОБИЛЯ, ВНИМАНИЕ, ГРАББЕР, ОСНОВНЫЕ ХАРАКТЕРИСТИКИ, ОПИСАНИЕ. Мне удалось сделать это для первого столбца, ИМЯ АВТОМОБИЛЯ, используя следующий метод:
import pandas as pd
import nltk
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
df = pd.read_csv("data_utf-8.csv")
#train = df.sample(frac=0.8)
#test = df.drop(train.index)
train = df.iloc[0:12749,:]
test = df.drop(train.index)
train_car_name = train.iloc[:,0:1]
train_attention_grabber = train.iloc[:,1:2]
train_key_specs = train.iloc[:,2:3]
train_description = train.iloc[:,3:4]
train_url = train.iloc[:,4:5]
train_price = train.iloc[:,5:6]
# data_utf-8.csv does not have columns for year or mileage.
# This is in another csv file that I will use later.
words = []
for r in range(0,12749):
temp = []
for word in nltk.tokenize.WhitespaceTokenizer().tokenize(train_car_name["CAR NAME"][r]): #print(nltk.word_tokenize(train_car_name["CAR NAME"][r])) <---- Another option.
temp.append(word.lower())
words.append(temp)
print(words) #This is a list of lists
words_flat_list = [item for sublist in words for item in sublist]
#print(words_flat_list) #This print statement is causing words to go out of order!!! I don't understand at all why!
def remove_duplicates(x):
return list(dict.fromkeys(x))
words_list_no_dupes = remove_duplicates(words_flat_list)
print(words_list_no_dupes)
#word_set = set(words_flat_list)
#print(word_set)
word2int = {}
int2word = {}
vocab_size = len(words_list_no_dupes) # gives the total number of unique words # could use len(words_list_no_dupes) or len(word_set)
for i,word in enumerate(words_list_no_dupes):
word2int[word] = i
int2word[i] = word
Этот код удается векторизовать первый столбец моего CSV. Я мог бы повторить тот же процесс для векторизации оставшихся столбцов или сделать для l oop, чтобы сделать это для меня. Я просто еще не закодировал это там. Но я знаю, что для этого нужно. Теперь, когда я векторизовал этот первый столбец, как именно я обучаю свою модель?
Я понимаю, что мог бы использовать следующий код, чтобы получить несколько пар слово-слово ...
#this next bit of code gives us a bunch of word, word pairs for training
data = []
WINDOW_SIZE = 2
for sentence in words:
for word_index, word in enumerate(sentence):
for nb_word in sentence[max(word_index - WINDOW_SIZE, 0) : min(word_index + WINDOW_SIZE, len(sentence)) + 1] :
if nb_word != word:
data.append([word, nb_word])
Но я не совсем уверен, нужно ли мне эти пары слово-слово в любом случае? А если нет, то я немного застрял в том, как на самом деле тренировать модель.