Как использовать word2vec и RNN вместе?

Итак, я использую word2vec в Java и пытаюсь как-то обучить его, чтобы он давал мне векторное представление слов и предложений.

Могу ли я использовать это для подачи входных данных в нейронную сеть, чтобы получить ответ на основе данных word2vec? Я планирую сделать чат-бота с помощью этого.


person Harshdeep Singh    schedule 11.03.2016    source источник
comment
Итак, вы хотите получить векторное представление слова с помощью word2vec, а затем использовать этот вектор в качестве входных данных для RNN? Таким образом, word2vec действует как функция внедрения для RNN, но обучает ее отдельно? Или совместно?   -  person Guillem Cucurull    schedule 11.03.2016
comment
Я думаю, что использование этого в качестве входных данных для RNN было бы более полезным. Я хочу тренировать их вместе. Что вы думаете? Какой подход был бы лучше? @galloguille Отлично, если бы вы могли помочь мне с этим.   -  person Harshdeep Singh    schedule 11.03.2016
comment
Что ж, я не очень хорошо разбираюсь в НЛП, но полагаю, вы могли бы использовать предварительно обученный word2vec для создания вложений слов, а затем использовать эти вложения в качестве входных данных для RNN, поэтому вам не нужно обучать word2vec самостоятельно.   -  person Guillem Cucurull    schedule 12.03.2016
comment
Но даже для получения вложений из слов в виде векторов мне нужно будет обучить свой word2vec, а затем использовать его в качестве входных данных для RNN для обучения. Разве это не так?   -  person Harshdeep Singh    schedule 12.03.2016
comment
Ну, вы можете использовать предварительно обученный word2vec, поэтому вам нужно будет только обучить RNN с векторами в качестве входных данных.   -  person Guillem Cucurull    schedule 13.03.2016
comment
Но могу ли я найти предварительно обученный word2vec для предложений/сообщений, потому что, пока я искал ссылки в Интернете, большинство из них предназначены для слов. Не могли бы вы предложить мне кого-то, кто мог бы помочь мне с этим?   -  person Harshdeep Singh    schedule 14.03.2016


Ответы (1)


В дополнение к комментариям @galloguille вы можете использовать предварительно обученные векторы слов word2vec для инициализации вашего RNN. RNN может учиться на последовательности слов, чтобы предсказать следующее слово (слова). Хороший пример с кодом для этого вы можете найти здесь — https://github.com/larspars/word-rnn.

Здесь есть хорошая коллекция последних достижений в области чат-ботов - https://stanfy.com/blog/the-rise-of-chat-bots-useful-links-articles-libraries-and-platforms./

Насколько я понимаю, наиболее эффективные чат-боты не используют RNN напрямую (в настоящее время) для ответа на вопрос, а пытаются предсказать намерение (из фиксированного набора намерений) вопроса на первом этапе. Основываясь на каждом намерении, они вычисляют некоторые действенные идеи и логический ответ на вопрос.

person kampta    schedule 14.03.2016
comment
что было бы лучшим подходом, чтобы сделать это тогда? Вместо РНН? - person Harshdeep Singh; 18.03.2016
comment
RNN — хороший подход, если вы хотите поиграть с генерацией текста с помощью глубокого обучения. Но если вы хотите развернуть чат-бота в реальных приложениях, глубокого обучения пока нет. Вы должны жестко закодировать возможные намерения пользователя (в зависимости от варианта использования) и сопоставить каждый вопрос с намерением, а затем снова жестко закодировать фиксированный набор ответов для конкретного вопроса. - person kampta; 18.03.2016