Как мне обучить мою модель Word2Ve c, чтобы сначала узнать, что означает каждое слово, а затем сделать прогноз на соответствующую цену? - PullRequest
0 голосов
/ 13 февраля 2020

Я создаю программу, которая собирает информацию об автомобиле с веб-сайта по торговле автомобилями, а затем анализирует данные, чтобы выяснить, завышена ли цена на автомобиль.

Я хочу создать модель, в которой я могу анализировать Подробная информация об определенном 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])

Но я не совсем уверен, нужно ли мне эти пары слово-слово в любом случае? А если нет, то я немного застрял в том, как на самом деле тренировать модель.

...