Какой тип нейронной сети следует использовать для извлечения ключевой информации из предложения для правил RDF? - PullRequest
0 голосов
/ 07 мая 2019

Я работаю над своей статьей, и одна из задач состоит в том, чтобы извлечь название и местонахождение компании из предложения следующего типа:

"Google делится ресурсами с японской компанией."

Здесь я хочу, чтобы вывод был "Google Japan". Структура предложения также может варьироваться, например, «японская компания может получить доступ к ресурсам Google». Я пробовал NN на основе внимания, но частота ошибок составляет около 0,4. Кто-нибудь может подсказать, какую модель мне следует использовать?

И я распечатал процесс проверки так: проверочная печать

И я получил графики потерь и точности: Лас и точность

Это показывает, что val_acc равен 0,99. Значит ли это, что моя модель довольно хорошо предсказывает? Но почему я получаю 0,4 ошибки, когда использую собственную функцию проверки, чтобы показать частоту ошибок? Я очень плохо знаком с ML. Что на самом деле означает val_acc?

Вот моя модель:

encoder_input = Input(shape=(INPUT_LENGTH,))
decoder_input = Input(shape=(OUTPUT_LENGTH,))

encoder = Embedding(input_dict_size, 64, input_length=INPUT_LENGTH, mask_zero=True)(encoder_input)
encoder = LSTM(64, return_sequences=True, unroll=True)(encoder)
encoder_last = encoder[:, -1, :]

decoder = Embedding(output_dict_size, 64, input_length=OUTPUT_LENGTH, mask_zero=True)(decoder_input)
decoder = LSTM(64, return_sequences=True, unroll=True)(decoder, initial_state=[encoder_last, encoder_last])

attention = dot([decoder, encoder], axes=[2, 2])
attention = Activation('softmax')(attention)

context = dot([attention, encoder], axes=[2, 1])
decoder_combined_context = concatenate([context, decoder])

output = TimeDistributed(Dense(64, activation="tanh"))(decoder_combined_context)  # equation (5) of the paper
output = TimeDistributed(Dense(output_dict_size, activation="softmax"))(output)

model = Model(inputs=[encoder_input, decoder_input], outputs=[output])
model.compile(optimizer='adam', loss="binary_crossentropy", metrics=['accuracy'])

es = EarlyStopping(monitor='val_loss', mode='min', verbose=1, patience=200, min_delta=0.0005)

1 Ответ

1 голос
/ 07 мая 2019

Я предвосхищу это, сказав, что если вы новичок в ML, я бы посоветовал вам изучить более «традиционные» алгоритмы, прежде чем переходить к нейронным сетям.Кроме того, ваша задача настолько специфична для названий компаний и местоположений, что использование скрытого семантического анализа (или аналогичного статистического метода) для генерации ваших вложений и SVM для определения того, какие слова актуальны, может дать вам лучшие результаты, чем в нейронных сетях с меньшим количеством экспериментов и меньшим количеством экспериментов.время тренировки.

Теперь, после всего сказанного, вот что я могу собрать.Если я правильно понимаю, у вас есть отдельный, второй набор проверки, на котором вы получаете 40% ошибок.Все цифры на скриншотах довольно хороши, что приводит меня к двум возможным выводам: либо ваш второй набор проверки очень отличается от вашего первого, и вы страдаете от некоторого переоснащения, либо где-то в вашем коде есть ошибка, котораязаставляет Кераса поверить, что у вашей модели все хорошо, хотя на самом деле это не так.(Имейте в виду, что я не очень знаком с Keras, поэтому я не знаю, насколько вероятен последний вариант)

Теперь, что касается самой модели, ваша задача явно экстрактивная ,Это означает, что вашей модели не нужно ничего перефразировать или придумывать что-то, чего нет в исходном тексте.Ваша модель должна учитывать это и никогда не допускать ошибок, например путать Индию с Новой Зеландией или Tecent с Google.Вероятно, вы можете основать свою модель на недавней работе в экстрактивном суммировании , которое является довольно активным полем (больше, чем извлечение ключевых слов и фраз). Вот недавняя статья , в которой используется модель нейронного внимания, вы можете использовать Google Scholar, чтобы легко найти больше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...