Nota: o repositório não é mantido. Sinta-se à vontade para me enviar uma mensagem privada se desejar fazer a manutenção.
Faça seq2seq para keras funcionar. E também experimente algumas outras implementações de seq2seq.
O código inclui:
Aviso
Artigos
Foto legal
Configurar e executar
git clone https://github.com/nicolas-ivanov/debug_seq2seq
cd debug_seq2seq
bash bin/setup.sh
python bin/train.py
e então
python bin/test.py
Resultados
Nenhum bom resultado foi alcançado até agora:
[why ?] -> [i ' . . $$$ . $$$ $$$ $$$ $$$ as as as as i i]
[who ?] -> [i ' . . $$$ . $$$ $$$ $$$ $$$ as as as as i i]
[yeah ?] -> [i ' . . $$$ . $$$ $$$ $$$ $$$ as as as as i i]
[what is it ?] -> [i ' . . $$$ . $$$ $$$ $$$ $$$ as as as as as i]
[why not ?] -> [i ' . . $$$ . $$$ $$$ $$$ $$$ as as as as i i]
[really ?] -> [i ' . . $$$ . $$$ $$$ $$$ $$$ as as as as i i]
Meu palpite é que existem alguns problemas fundamentais nesta abordagem:
Como os vetores word2vec são usados para representações de palavras e o modelo retorna um vetor aproximado para cada palavra seguinte, esse erro é acumulado de uma palavra para outra e, portanto, a partir da terceira palavra, o modelo não consegue prever nada significativo... Este problema pode ser superado se substituirmos nosso vetor word2vec aproximado a cada carimbo de tempo por um vetor "correto", ou seja, aquele que corresponde a uma palavra real do dicionário. Isso faz sentido? No entanto, você precisa se aprofundar no código seq2seq para fazer isso.
O segundo problema está relacionado à amostragem de palavras: mesmo que você consiga resolver o problema mencionado acima, caso você continue usando argmax() para escolher a palavra mais provável a cada carimbo de data / hora, as respostas serão muito simples e pouco interessantes, como:
are you a human? -- no .
are you a robot or human? -- no .
are you a robot? -- no .
are you better than siri? -- yes .
are you here ? -- yes .
are you human? -- no .
are you really better than siri? -- yes .
are you there -- you ' re not going to be
are you there?!?! -- yes .
Para não enganar você: esses resultados foram alcançados em uma arquitetura seq2seq diferente, baseada em tensorflow.
A amostragem com temperatura pode ser usada para diversificar os resultados de saída, porém isso novamente deve ser feito dentro da biblioteca seq2seq.