Melhorando o desempenho do modelo de linguagem por meio de vocabulários inteligentes
Este projeto foi desenvolvido para explorar o uso do pré-processamento do Billion Word Corpus com rótulos de classes gramaticais e entidades nomeadas, a fim de criar um vocabulário "mais inteligente". Usando essas técnicas é possível obter melhores pontuações de perplexidade do que usar apenas as N palavras principais do corpus.
Para obter uma explicação completa do processamento e seu impacto nas pontuações de perplexidade obtidas, consulte Melhorando o desempenho do modelo de linguagem com vocabulários mais inteligentes.
O projeto inclui scripts para
O projeto foi projetado para ser utilizado no local e não há instalação de pip para ele. Basta baixar o código-fonte do GitHub, definir as opções de configuração e executar os scripts numerados em ordem. Observe que este código foi projetado para o pesquisador, portanto, espere precisar revisar o código nos scripts que estão sendo executados e modificar as opções conforme necessário para obter resultados específicos.
Os scripts do diretório principal são prefixados com um número para indicar a ordem em que devem ser executados. A maioria dos scripts no diretório principal são uma série relativamente curta de chamadas às funções da biblioteca associadas. Antes de executar cada script, certifique-se de abri-lo e definir qualquer um dos parâmetros de configuração para obter os resultados desejados.
As opções de configuração global usadas por vários scripts são definidas em ./configs/config.py. Certifique-se de acessar este arquivo e modificar os caminhos para seus dados antes de executar qualquer um dos scripts abaixo.
00_StanfordCoreNLPServer.py : inicia o analisador Stanford Core NLP usando o arquivo de configuração ./configs/snlp_server.py. O script é bloqueado enquanto o servidor está em execução. Se preferir, o servidor pode ser iniciado manualmente. Este script é apenas por conveniência.
10_ExtractUniqueSents.py : Extrai frases exclusivas do Billion Word Corpus antes da análise. Perto do topo do arquivo estão algumas instruções sobre como baixar e configurar o corpus bruto.
12_STParseBWCorpus.py : executa todas as frases exclusivas por meio do Stanford Parser. Observe que esta etapa leva um tempo considerável (possivelmente um dia inteiro) e se beneficia muito de um processador multi-core. Veja notas no arquivo sobre tempos de execução.
14_RemoveDuplicates.py : Faz uma segunda passagem pelos dados para remover sentenças duplicadas que ocorrem após a análise/normalização.
20_CreateEnglishDictionary.py : Obrigatório para criação de vocabulário inteligente.
22_CreateVocab.py : Este script cria vários tipos de vocabulários. Existe um grande bloco if/elif no arquivo para o usuário escolher que tipo de vocabulário criar.
24_IndexVocab.py : Cria os dados do corpus indexado usados para treinar o modelo de linguagem. Novamente, há um grande bloco if/elif aqui que precisa ser definido pelo usuário para selecionar o tipo de vocabulário a ser usado.
30_TrainBasicLM.py : configura e executa o treinamento do modelo. Novamente, há um bloco de instruções aqui que permite ao usuário escolher o vocabulário para treinar. Adicionalmente o usuário precisa escolher o arquivo com os parâmetros de configuração do modelo. Os parâmetros de configuração do modelo são armazenados no diretório de configuração sob nomes de arquivos como L1_2048_512.py.
32_TestPerplexity : executa um teste de perplexidade no modelo treinado. Escolha o modelo a ser testado na parte inferior do script.
34_NextWordPrediction.py : permite ao usuário inserir a primeira parte de uma frase e chama o modelo para prever a próxima palavra. Configure qual modelo usar na parte principal do script.
Partes do código foram adaptadas do kit de ferramentas de modelo de linguagem da Saarland University. Consulte TF-NNLM-TK.
Esse código foi parcialmente baseado no modelo de exemplo TensorflowPTB-LM.