O Easy-Bert é uma API simples e morta para usar o modelo de linguagem Bert de alta qualidade do Google em Python e Java.
Atualmente, a Easy-Bert está focada em obter incorporações de modelos BERT pré-treinados em Python e Java. O suporte para ajustes finos e pré-treinamento no Python será adicionado no futuro, bem como suporte ao uso do Easy-Bert para outras tarefas, além de obter incorporação.
Easy-Bert está disponível no Pypi. Você pode instalar com pip install easybert ou pip install git+https://github.com/robrua/easy-bert.git se você deseja o mais recente.
Você pode usar o Easy-Bert com modelos BERT pré-treinados do Hub Tensorflow ou de modelos locais no formato do modelo salvo tensorflow.
Para criar uma incorporação Bert a partir de um modelo de hub de tensowflow, basta instanciar um objeto Bert com o URL de alvo TF-HUB:
from easybert import Bert
bert = Bert ( "https://tfhub.dev/google/bert_multi_cased_L-12_H-768_A-12/1" ) Você também pode carregar um modelo local no formato de modelo salvo do TensorFlow usando Bert.load :
from easybert import Bert
bert = Bert . load ( "/path/to/your/model/" ) Depois de carregar um modelo Bert, você pode obter incorporações de sequência usando bert.embed :
x = bert . embed ( "A sequence" )
y = bert . embed ([ "Multiple" , "Sequences" ]) Se você deseja incorporações por token, você pode definir per_token=True :
x = bert . embed ( "A sequence" , per_token = True )
y = bert . embed ([ "Multiple" , "Sequences" ], per_token = True )Easy-Bert retorna incorporações de Bert como matrizes Numpy
Toda vez que você chama bert.embed , uma nova sessão de tensorflow é criada e usada para o cálculo. Se você está chamando bert.embed muito sequencialmente, pode acelerar seu código compartilhando uma sessão de tensorflow entre aqueles que usam uma instrução with uma instrução:
with bert :
x = bert . embed ( "A sequence" , per_token = True )
y = bert . embed ([ "Multiple" , "Sequences" ], per_token = True ) Você pode salvar um modelo Bert usando bert.save e recarregá -lo mais tarde usando Bert.load :
bert . save ( "/path/to/your/model/" )
bert = Bert . load ( "/path/to/your/model/" )A Easy-Bert também fornece uma ferramenta da CLI para fazer incorporações únicas de sequências com Bert. Ele também pode converter um modelo de hub de tensorflow em um modelo salvo.
Run bert --help , bert embed --help ou bert download --help para obter detalhes sobre a ferramenta da CLI.
O Easy-Bert vem com uma compilação do Docker que pode ser usada como uma imagem base para aplicativos que dependem de incorporação de Bert ou apenas executar a ferramenta CLI sem precisar instalar um ambiente.
Easy-Bert está disponível no Maven Central. Também é distribuído pela página de lançamentos.
Para adicionar a versão mais recente de lançamento do Easy-Bert ao seu projeto Maven, adicione a dependência à sua seção pom.xml Dependências:
< dependencies >
< dependency >
< groupId >com.robrua.nlp</ groupId >
< artifactId >easy-bert</ artifactId >
< version >1.0.3</ version >
</ dependency >
</ dependencies > Ou, se você deseja obter a versão mais recente de desenvolvimento, adicione o repositório Sonaype Snapshot ao seu pom.xml também:
< dependencies >
< dependency >
< groupId >com.robrua.nlp</ groupId >
< artifactId >easy-bert</ artifactId >
< version >1.0.4-SNAPSHOT</ version >
</ dependency >
</ dependencies >
< repositories >
< repository >
< id >snapshots-repo</ id >
< url >https://oss.sonatype.org/content/repositories/snapshots</ url >
< releases >
< enabled >false</ enabled >
</ releases >
< snapshots >
< enabled >true</ enabled >
</ snapshots >
</ repository >
</ repositories >Você pode usar o Easy-Bert com modelos Bert pré-treinados gerados com as ferramentas Python da Easy-Bert. Você também pode usar modelos pré-gerados no Maven Central.
Para carregar um modelo do sistema de arquivos local, você pode usar:
try ( Bert bert = Bert . load ( new File ( "/path/to/your/model/" ))) {
// Embed some sequences
}Se o modelo estiver no seu caminho de classe (por exemplo, se você estiver puxando -o via Maven), poderá usar:
try ( Bert bert = Bert . load ( "/resource/path/to/your/model" )) {
// Embed some sequences
} Depois de carregar um modelo Bert, você pode obter incorporações de sequência usando bert.embedSequence ou bert.embedSequences :
float [] embedding = bert . embedSequence ( "A sequence" );
float [][] embeddings = bert . embedSequences ( "Multiple" , "Sequences" ); Se você deseja incorporações por token, você pode usar bert.embedTokens :
float [][] embedding = bert . embedTokens ( "A sequence" );
float [][][] embeddings = bert . embedTokens ( "Multiple" , "Sequences" ); Vários modelos Bert do Tensorflow Hub estão disponíveis no formato Easy-Bert no Maven Central. Para usar um em seu projeto, adicione o seguinte ao seu pom.xml , substituindo um dos IDs de artefatos listados abaixo no lugar do ARTIFACT-ID no artifactId :
< dependencies >
< dependency >
< groupId >com.robrua.nlp.models</ groupId >
< artifactId >ARTIFACT-ID</ artifactId >
< version >1.0.0</ version >
</ dependency >
</ dependencies > Depois de obter a dependência, você pode carregar o modelo usando este código. Substitua o caminho de recurso apropriado da lista abaixo no lugar do RESOURCE-PATH com base no modelo que você adicionou como uma dependência:
try ( Bert bert = Bert . load ( "RESOURCE-PATH" )) {
// Embed some sequences
}| Modelo | Idiomas | Camadas | Tamanho da incorporação | Cabeças | Parâmetros | Id de artefato | Caminho de recurso |
|---|---|---|---|---|---|---|---|
| Bert-Base, não baseado | Inglês | 12 | 768 | 12 | 110m | Easy-Bert-Uncased-L-12-H-768-A-12 | com/robrua/nlp/easy-bert/bert-uncased-l-12-h-768-A-12 |
| Bert-Base, revestido | Inglês | 12 | 768 | 12 | 110m | Easy-Bert-Case-L-12-H-768-A-12 | com/robrua/NLP/Easy-Bert/Bert-Cased-L-12-H-768-A-12 |
| Bert-base, multilíngue | 104 idiomas | 12 | 768 | 12 | 110m | Easy-Bert-Multi-Case-L-12-H-768-A-12 | com/robrua/nlp/easy-bert/bert-multi-case-l-12-h-768-A-12 |
| Bert-Base, chinês | Chinês simplificado e tradicional | 12 | 768 | 12 | 110m | Easy-Bert-Chinese-L-12-H-768-A-12 | com/robrua/nlp/easy-bert/bert-chinese-l-12-h-768-A-12 |
Por enquanto, o Easy-Bert só pode usar os modelos Bert de Hub Tensorflow pré-treinado que foram convertidos usando as ferramentas Python. Adicionaremos suporte para novos modelos de ajuste fino e pré-treinamento facilmente, mas não há planos de apoiá-los no lado Java. Você precisará treinar em Python, salvar o modelo e carregá -lo em Java.
Se você encontrar bugs, informe -nos por meio de uma solicitação ou problema de tração.
Se você usou o Easy-Bert para sua pesquisa, cite o projeto.