Я пытаюсь обучить модель суммирования теста Keras для создания нового заголовка для новостной статьи, которую затем можно сравнить с опубликованным заголовком. Я тренируюсь на GloVe 6B, затем предсказываю по статье, которую я почистил, удалив теги, проанализировав, удалив стоп-слова, лемматизировав, а затем воссоединившись. Мои результаты выглядят примерно так:
Первоначальный заголовок: В августе Форд отправился в Мэриленд, несмотря на якобы боязнь летать Сгенерированный заголовок: Мнение: the the the the to to
Текст статьи после очистки: Обвинительница Бретта Кавано Кристин Блейси Форд прошла проверку на детекторе лжи Мэриленд далеко от дома Калифорния, несмотря на предполагаемый страх летать Документы опубликованы в среду проверка на полиграфе проведена Фордом 7 августа Hilton Hotel Linthicum Heights Мэриленд далеко в Балтиморе Вашингтонский международный аэропорт Путь побега из тяжелого места Профессор Кристин Блейси Форд обвиняет кандидата в Верховный суд Бретта Кавано в сексуальном насилии в средней школе Путь к выходу из двери предположил, что дискомфорт вызван предполагаемой встречей с Кавано. Эта причина, по которой Форду нравится летать, ДеВарни сказал, что самолет в конечном счете замкнутое пространство далеко. Идентификационный отпуск Середина Атлантики 7 августа, полиграф дал показания Форда Сенату в 10:00 по восточному поясному времени в четверг.
Вот мой тренировочный код:
from __future__ import print_function
import pandas as pd
from sklearn.model_selection import train_test_split
from keras_text_summarization.library.utility.plot_utils import plot_and_save_history
from keras_text_summarization.library.seq2seq import Seq2SeqGloVeSummarizer
from keras_text_summarization.library.applications.fake_news_loader import fit_text
import numpy as np
LOAD_EXISTING_WEIGHTS = False
def main():
np.random.seed(42)
data_dir_path = './data'
very_large_data_dir_path = './very_large_data'
report_dir_path = './reports'
model_dir_path = './models'
print('loading csv file ...')
df = pd.read_csv("dcr Man_Cleaned.csv")
print('extract configuration from input texts ...')
Y = df.Title
X = df['Joined']
config = fit_text(X, Y)
print('configuration extracted from input texts ...')
summarizer = Seq2SeqGloVeSummarizer(config)
summarizer.load_glove(very_large_data_dir_path)
if LOAD_EXISTING_WEIGHTS:
summarizer.load_weights(weight_file_path=Seq2SeqGloVeSummarizer.get_weight_file_path(model_dir_path=model_dir_path))
Xtrain, Xtest, Ytrain, Ytest = train_test_split(X, Y, test_size=0.2, random_state=42)
print('training size: ', len(Xtrain))
print('testing size: ', len(Xtest))
print('start fitting ...')
history = summarizer.fit(Xtrain, Ytrain, Xtest, Ytest, epochs=20, batch_size=16)
history_plot_file_path = report_dir_path + '/' + Seq2SeqGloVeSummarizer.model_name + '-history.png'
if LOAD_EXISTING_WEIGHTS:
history_plot_file_path = report_dir_path + '/' + Seq2SeqGloVeSummarizer.model_name + '-history-v' + str(summarizer.version) + '.png'
plot_and_save_history(history, summarizer.model_name, history_plot_file_path, metrics={'loss', 'acc'})
if __name__ == '__main__':
main()
Любые мысли о том, что здесь происходит не так, приветствуются.