Inglês | Chinês
Aproveitando a recuperação de passagens com modelos generativos para resposta a perguntas de domínio aberto
RetrievalDense Passage Retrieval para resposta a perguntas de domínio aberto
Agendador APS
Um sistema de diálogo de processo completo que pode ser implantado e executado
Modelo TensorFlow
Transformador
Seq2Seq
Modelo de recuperação SMN
Transformador de Amostragem Programada
GPT2
Diálogo de Tarefas
Modelo Pytorch
Transformador
Seq2Seq
Este projeto visa construir um sistema de diálogo que pode ser implantado online. Inclui sistemas de diálogo de domínio aberto e orientados a tarefas. Ele reproduz modelos relacionados. As notas de leitura em papel são colocadas em outro projeto: TensorFlow e Pytorch. no projeto.
O diretório de dados no warehouse contém dados de brinquedos para cada corpus, que podem ser usados para verificar a execução do sistema. O corpus completo e o Paper podem ser visualizados aqui.
LCCC
CrossWOZ
galinha amarela
Douban
Ubuntu
Qingyun
Tieba
Linux executa run.sh e a verificação do diretório do projeto executa check.sh (ou check.py)
atuator.py no diretório raiz é a entrada de execução geral, que é executada chamando o seguinte formato de comando (observe que o arquivo requirements.txt é instalado antes da execução):
python actuator.py --version [Options] --model [Options] ...
Ao executar através de atuator.py no diretório raiz, --version
, --model
e --act
são parâmetros obrigatórios, entre os quais --version
é a versão do código tf/torch
--model
é o modelo correspondente transformer/smn...
para execução. transformer/smn...
e act é o modo de execução (modo pre_treat
por padrão). Para parâmetros de comando mais detalhados, consulte actuator.py
em cada modelo ou o arquivo de configuração json correspondente no diretório de configuração.
O modo de execução --act
é descrito a seguir:
O modo pre_treat é o modo de pré-processamento de texto. Se não houver conjunto de resultados de segmentação de palavras e dicionário, você precisará executar o modo pre_treat primeiro.
modo de trem é modo de treinamento
modo de avaliação é modo de avaliação de indicador
O modo de bate-papo é um modo de conversa. Ao executar no modo de bate-papo, digite ESC para sair da conversa.
A sequência de execução normal é pre_treat->train->evaluate->chat
Há um atuator.py separado em cada modelo, que pode ignorar o acoplamento externo para execução e desenvolvimento. No entanto, preste atenção ao ajustar o caminho do diretório do projeto durante a execução.
No diálogo, o código central do modelo relevante é colocado para facilitar o encapsulamento e empacotamento futuro.
pontos de verificação salva a localização dos pontos de verificação
config é o diretório onde o arquivo de configuração é salvo
data é o local de armazenamento dos dados originais. Ao mesmo tempo, os arquivos de dados intermediários gerados durante a execução do modelo também são salvos neste diretório.
modelos salvam diretório para modelos
tensorflow e pytorch colocam o código principal para construção do modelo e execução de cada módulo
preprocess_corpus.py é um script de processamento de corpus, que processa cada corpus em diálogos de rodada única e múltipla e padroniza chamadas de interface unificadas.
read_data.py é usado para a chamada do formato de carregamento de dados de load_dataset.py
métricas.py é um script para vários indicadores
tools.py é um script de ferramenta que contém separadores de palavras, operações de log, scripts para salvar/carregar pontos de verificação, etc.
Coloque as instruções da documentação em documentos, incluindo notas de leitura de modelo de papel
docker (móvel) é usado para scripts de implantação de servidor (terminal móvel)
Servidor é a interface de serviço da UI. Use o flask para construí-lo e usá-lo.
tools é o diretório de ferramentas reservado
atuator.py (run.sh) é a entrada total do atuador
check.py (check.sh) é o script de verificação do diretório do projeto
Antes de usar o sistema de diálogo de recuperação SMN, você precisa preparar o ambiente Solr Linux é recomendado para o ambiente do sistema de implantação Solr. Recomenda-se usar a implantação de contêiner (Docker é recomendado) para ferramentas e preparar:
Solr(8.6.3)
pisolr(3.9.0)
Uma breve explicação é fornecida abaixo. Para obter mais detalhes, consulte o artigo: Obtenha a recuperação da resposta do candidato no sistema de diálogo de recuperação - usando o pysolr para chamar o Solr.
Para garantir que o Solr seja executado de forma estável on-line e facilitar a manutenção subsequente, use o DockerFile para implantação. Endereço de aquisição do DockerFile: docker-solr.
Somente para uso do modelo de teste, você pode usar as seguintes instruções de construção mais simples:
docker pull solr:8.6.3 # 然后启动solr docker run -itd --name solr -p 8983:8983 solr:8.6.3 # 然后创建core核心选择器,这里取名smn(可选) docker exec -it --user=solr solr bin/solr create_core -c smn
Em relação às ferramentas de segmentação de palavras no Solr, existem IK Analyzer, Smartcn, Pinyin word segmenter, etc. Você precisa baixar o jar correspondente e, em seguida, adicionar a configuração no esquema gerenciado do arquivo de configuração principal do Solr.
Nota especial : Se você usar TF-IDF, também precisará habilitar a configuração de similaridade no esquema gerenciado.
Após implantar o Solr online, use pysolr em Python para conectar e usar:
pip install pysolr
O método de adição de dados de índice (geralmente exigindo primeiro a verificação de segurança) é o seguinte. Adicione um índice aos dados de resposta. As respostas são um json no formato: [{},{},{},...]. Cada objeto nele é construído de acordo com suas necessidades de resposta:
solr = pysolr.Solr(url=solr_server, always_commit=True, timeout=10) # 安全检查 solr.ping() solr.add(docs=responses)
O método de consulta é o seguinte: Para consultar todas as instruções usando TF-IDF, o método de consulta é o seguinte:
{!func}sum(product(idf(utterance,key1),tf(utterance,key1),product(idf(utterance,key2),tf(utterance,key2),...)
Você precisa adicionar os dados ao Solr antes de usar. Para usá-los neste modelo SMN, basta executar primeiro o modo pre_treat.
Atenção é tudo que você precisa | Notas de leitura: O trabalho pioneiro do Transformer, digno de leitura intensiva |
Rede de correspondência sequencial: uma nova arquitetura para seleção de respostas multivoltas em chatbots baseados em recuperação | Notas de leitura: modelo de diálogo de recuperação SMN, extração de informações multicamadas e multigranularidade |
Exploração massiva de arquiteturas de tradução automática neural | Notas de leitura: É apresentada a primeira análise em grande escala usando hiperparâmetros da arquitetura NMT. O experimento traz novos insights e sugestões práticas para construir e estender arquiteturas NMT. Denny et al., 2017
Amostragem Programada para Transformadores | Notas de Leitura: Aplicando Amostragem Programada no Transformador |
Licenciado sob a licença Apache, versão 2.0. Copyright 2021 DengBoCong.