
Os modelos de rotulagem de sequência são bastante populares em muitas tarefas de PNL, como reconhecimento de entidade nomeado (NER), marcação de parte da fala (POS) e segmentação de palavras. Os modelos de rotulagem de sequência de última geração utilizam principalmente a estrutura do CRF com os recursos de entrada do Word. LSTM (ou LSTM bidirecional) é um extrator de recurso baseado em aprendizado profundo popular na tarefa de rotulagem de sequência. E a CNN também pode ser usada devido a computação mais rápida. Além disso, os recursos dentro do Word também são úteis para representar o Word, que pode ser capturado pelo caractere LSTM ou estrutura da CNN de caracteres ou características neurais definidas pelo homem.
O NCRF ++ é uma estrutura baseada em Pytorch com opções flexíveis de recursos de entrada e estruturas de saída. O design dos modelos de rotulagem de sequência neural com NCRF ++ é totalmente configurável através de um arquivo de configuração, que não requer nenhum trabalho de código. O NCRF ++ pode ser considerado como uma versão de rede neural do CRF ++, que é uma famosa estrutura estatística do CRF.
Essa estrutura foi aceita pela ACL 2018 como documento de demonstração. E o relatório e análise de experimentos detalhados usando o NCRF ++ foi aceito no Coling 2018 como o melhor artigo.
O NCRF ++ suporta diferentes combinações de estrutura de três níveis: representação da sequência de caracteres, representação da sequência de palavras e camada de inferência.
Bem -vindo a estrelar este repositório!
Python: 2 or 3
PyTorch: 1.0
A versão compatível Pytorch 0.3 está aqui.
nbest (com suas probabilidades). O NCRF ++ suporta o design da estrutura da rede neural através de um arquivo de configuração. O programa pode ser executado em dois status; treinamento e decodificação . (A configuração e os dados de amostras foram incluídos neste repositório)
No status de treinamento : python main.py --config demo.train.config
No status de decodificação : python main.py --config demo.decode.config
O arquivo de configuração controla a estrutura da rede, E/S, configuração de treinamento e hiperparâmetro.
As configurações e explicações detalhadas estão listadas aqui.
O NCRF ++ foi projetado em três camadas (mostradas abaixo): camada de sequência do caractere; camada de sequência de palavras e camada de inferência. Ao usar o arquivo de configuração, a maioria dos modelos de ponta pode ser facilmente replicada sem codificação . Por outro lado, os usuários podem estender cada camada projetando seus próprios módulos (por exemplo, eles podem querer projetar suas próprias estruturas neurais que não sejam CNN/LSTM/GRU). Nosso design de camada e cultivo torna a extensão do módulo conveniente, a instrução da extensão do módulo pode ser encontrada aqui.

Os resultados da tarefa de NER em inglês de 2003 são melhores ou comparáveis aos resultados do SOTA com as mesmas estruturas.
Charlstm+wordlstm+CRF: 91,20 vs 90,94 de Lample .etc, Naacl16;
Charcnn+wordlstm+crf: 91,35 vs 91.21 de ma .etc, ACL16.
Por padrão, LSTM é bidirecional LSTM.
| EU IA | Modelo | Nochar | Charlstm | Charcnn |
|---|---|---|---|---|
| 1 | Wordlstm | 88.57 | 90.84 | 90.73 |
| 2 | Wordlstm+CRF | 89.45 | 91.20 | 91.35 |
| 3 | Wordcnn | 88.56 | 90.46 | 90.30 |
| 4 | Wordcnn+crf | 88,90 | 90.70 | 90.43 |
Comparamos doze modelos de marcação de sequência neural ( {charLSTM, charCNN, None} x {wordLSTM, wordCNN} x {softmax, CRF} ) em três parâmetros de referência (POS, Chunking, NER) em experiências estatísticas e resultados detalhados e comparações podem ser encontradas em nossos relatórios de colagem de colagem de 2018, em conjunto).
O NCRF ++ integrou vários extratores de características de características de caracteres neurais SOTA: CNN (MA .ETC, ACL16), LSTM (Lample .etc, Naacl16) e GRU (Yang .etc, ICLR17). Além disso, os recursos artesanais foram provados importantes nas tarefas de rotulagem de sequência. O NCRF ++ permite que os usuários projetem seus próprios recursos, como capitalização, tags ou quaisquer outros recursos (círculos cinza na figura acima). Os usuários podem configurar os recursos autodefinidos por meio do arquivo de configuração (tamanho de incorporação do recurso, Recurso pré-treinado incorporação .etc). O formato de dados de entrada de amostra é fornecido em trem.cappos.bmes, que inclui dois recursos definidos pelo homem [POS] e [Cap] . ( [POS] e [Cap] são dois exemplos, você pode fornecer ao seu recurso qualquer nome desejado, basta seguir o formato [xx] e configurar o recurso com o mesmo nome no arquivo de configuração.) O usuário pode configurar cada recurso no arquivo de configuração usando o uso
feature = [ POS ] emb_size = 20 emb_dir = % your_pretrained_POS_embedding
feature = [ Cap ] emb_size = 20 emb_dir = % your_pretrained_Cap_embeddingO recurso sem incorporação pré -ridicularizado será inicializado aleatoriamente.
O NCRF ++ é implementado usando o cálculo totalmente em lotes, tornando -o bastante eficaz no treinamento e na decodificação do modelo. Com a ajuda da GPU (NVIDIA GTX 1080) e tamanho grande em lote, o modelo LSTMCRF construído com NCRF ++ pode atingir 1000 sessões/se 2000Sents/s no status de treinamento e decodificação, respectivamente.

A estrutura tradicional da CRF decodifica apenas uma sequência de etiquetas com maiores probabolidades (ou seja, 1 melhor saída). Embora o NCRF ++ possa fornecer uma grande opção, ele pode decodificar as seqüências de n com as principais probabilidades n (ou seja, ou melhor saída). O decodificação do NBest foi apoiado por várias estrutura estatísticas de CRF populares. No entanto, até onde sabemos, o NCRF ++ é o único e o primeiro kit de ferramentas que suportam a decodificação do NBE mais NBE nos modelos de CRF neurais .
Em nossa implementação, quando o NBEST = 10, o modelo Charcnn+WordLSTM+CRF incorporado em NCRF ++ pode fornecer 97,47% de valor Oracle F1 (F1 = 91,35% quando NBEST = 1) na tarefa de Conll 2003.

Para reproduzir os resultados em nosso artigo Coling 2018, você só precisa definir a iteration=1 como iteration=100 no arquivo de configuração demo.train.config e configure seu diretório de arquivos neste arquivo de configuração. O arquivo de configuração padrão descreve o modelo Char CNN + Word LSTM + CRF , você pode criar seu próprio modelo modificando a configuração de acordo. Os parâmetros neste arquivo de configuração de demonstração são os mesmos em nosso artigo. (Observe que a Word CNN precisam de parâmetros ligeiramente diferentes, os detalhes podem ser encontrados em nosso papel de coling.)
Se você deseja usar essa estrutura em novas tarefas ou conjuntos de dados, aqui estão algumas dicas de ajuste de @victor0118.
Se você deseja relatar um problema ou pedir um problema, anexe os seguintes materiais, se necessário. Com essas informações, posso dar uma discussão e sugestão rápidas e precisas.
log fileconfig filesample data Se você usar o NCRF ++ em seu artigo, cite nosso papel de demonstração da ACL:
@inproceedings{yang2018ncrf,
title={NCRF++: An Open-source Neural Sequence Labeling Toolkit},
author={Yang, Jie and Zhang, Yue},
booktitle={Proceedings of the 56th Annual Meeting of the Association for Computational Linguistics},
Url = {http://aclweb.org/anthology/P18-4013},
year={2018}
}
Se você usar os resultados dos experimentos e a análise do NCRF ++, cite nosso papel de Coling:
@inproceedings{yang2018design,
title={Design Challenges and Misconceptions in Neural Sequence Labeling},
author={Yang, Jie and Liang, Shuailong and Zhang, Yue},
booktitle={Proceedings of the 27th International Conference on Computational Linguistics (COLING)},
Url = {http://aclweb.org/anthology/C18-1327},
year={2018}
}