Я делаю классификацию текста на арабском диалекте, и я использовал Word2Vec для обучения модели, я получил это до сих пор:
def read_input(input_file):
with open (input_file, 'rb') as f:
for i, line in enumerate (f):
yield gensim.utils.simple_preprocess (line)
documents = list (read_input (data_file))
logging.info ("Done reading data file")
model = gensim.models.Word2Vec (documents, size=150, window=10, min_count=2, workers=10)
model.train(documents,total_examples=len(documents),epochs=10)
Что мне теперь делать, чтобы предсказать новый текст, если он принадлежит к одному из 5 моих диалектов?
Также я осмотрелся и нашел этот код:
# load the pre-trained word-embedding vectors
embeddings_index = {}
for i, line in enumerate(open('w2vmodel.vec',encoding='utf-8')):
values = line.split()
embeddings_index[values[0]] = numpy.asarray(values[1:], dtype='float32')
# create a tokenizer
token = text.Tokenizer()
token.fit_on_texts(trainDF['text'])
word_index = token.word_index
# convert text to sequence of tokens and pad them to ensure equal length vectors
train_seq_x = sequence.pad_sequences(token.texts_to_sequences(train_x), maxlen=70)
valid_seq_x = sequence.pad_sequences(token.texts_to_sequences(valid_x), maxlen=70)
# create token-embedding mapping
embedding_matrix = numpy.zeros((len(word_index) + 1, 300))
for word, i in word_index.items():
embedding_vector = embeddings_index.get(word)
if embedding_vector is not None:
embedding_matrix[i] = embedding_vector
Но это выдает мне эту ошибку, когда я запускаю ее и загружаю свою обученную модель word2vec:
ValueError: could not convert string to float: '\x00\x00\x00callbacksq\x04)X\x04\x00\x00\x00loadq\x05cgensim.utils'
Примечание:
На самом деле, есть еще один код, который я не разместил здесь, я хотел использовать word2vec с нейронными сетями, у меня есть код для нейронной сети, но я не знаю, как сделать функции, которые я получил от word2vec, чтобы они были в качестве входа в нейронную сеть и с метками в качестве вывода. Можно ли подключить word2vec к глубокой нейронной сети и как?