Я уже ссылался на руководство keras по использованию нескольких входов .Тем не менее, я все еще в замешательстве, так как я новичок в RNN и CNN.Я работаю с Keras, чтобы обучить классификатор нейронной сети.В моем CSV-файле у меня есть 3 функции.
- Предложение
- Вероятность
- Цель
Каждое предложение представляет собой предложение, содержащее ровно 5 слов, и существует 1860 таких предложений.Вероятность представляет собой значение с плавающей запятой в диапазоне [0,1], а целью является поле, которое необходимо предсказать (0 или 1).
Сначала я случайным образом начинаю предложения с вложениями, как показано ниже.
import string
import nltk
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
import numpy as np
import gensim
import pandas as pd
import os
from tensorflow.python.keras.preprocessing.text import Tokenizer
from tensorflow.python.keras.preprocessing.sequence import pad_sequences
from gensim.models import Word2Vec, KeyedVectors
from keras.models import Sequential
from keras.layers import Dense, Embedding, LSTM, GRU
from keras.layers.embeddings import Embedding
from keras.initializers import Constant
from sklearn.metrics import precision_recall_fscore_support
from sklearn.model_selection import train_test_split
from termcolor import colored
from keras.utils import to_categorical
import tensorflow as tf
import warnings
warnings.filterwarnings("ignore")
nltk.download('stopwords')
# one hot encode
seed = 42
np.random.seed(seed)
tf.set_random_seed(seed)
df = pd.DataFrame()
df = pd.read_csv('../../data/sentence_with_stv.csv')
sentence_lines = list()
lines = df['sentence'].values.tolist()
stv = df['stv'].values.tolist()
for line in lines:
tokens = word_tokenize(line)
tokens = [w.lower() for w in tokens]
table = str.maketrans('','',string.punctuation)
stripped = [w.translate(table) for w in tokens]
words = [word for word in stripped if word.isalpha()]
stop_words = set(stopwords.words('english'))
words = [w for w in words if not w in stop_words]
sentence_lines.append(words)
print('Number of lines', len(sentence_lines)))
EMBEDDING_DIM = 200
#Vectorize the text samples into a S2 integer tensor
tokenizer_obj = Tokenizer()
tokenizer_obj.fit_on_texts(sentence_lines)
sequences = tokenizer_obj.texts_to_sequences(sentence_lines)
print(colored(sequences,'green'))
Это дает мне вывод, такой как,
Number of lines: 1860
[[2, 77, 20, 17, 81],
[12, 21, 17, 82],
[2, 83, 20, 17, 82],
[2, 20, 17, 43],
[12, 21, 17, 81],
...
Теперь мне нужно добавить вероятность к каждой из этих строк так, чтобы новая последовательность была похожа на следующую.
[[2, 77, 20, 17, 81, 0.456736827],
[12, 21, 17, 82, 0.765142873],
[2, 83, 20, 17, 82, 0.335627635],
[2, 20, 17, 43, 0.5453652],
[12, 21, 17, 81, 0.446739202],
...
Я попытался взять каждую строку последовательности и добавить вероятность как
sequence[x] = np.append(sequence[x], probability[x], axis=1)
, где вероятность - это массив того же размера, 1860, состоящий только иззначения вероятности.Сделав это для всех строк, я печатаю одну строку, чтобы проверить, добавлено ли значение.Но я получаю вывод, как показано ниже.
[2. 77. 20. 17. 81. 0.456736827]
Любые предложения в этом отношении будут высоко оценены.