Easy-Bert est une API simple simple pour utiliser le modèle de langage Bert de haute qualité de Google à Python et Java.
Actuellement, Easy-Bert se concentre sur les intérêts des modèles Bert pré-formés à Python et Java. La prise en charge du réglage fin et de la pré-formation dans Python sera ajoutée à l'avenir, ainsi que pour utiliser Easy-Bertre pour d'autres tâches en plus d'obtenir des intégres.
Easy-Bert est disponible sur PYPI. Vous pouvez installer avec pip install easybert ou pip install git+https://github.com/robrua/easy-bert.git si vous voulez le tout dernier.
Vous pouvez utiliser Easy-BERT avec des modèles Bert pré-formés à partir de TensorFlow Hub ou à partir de modèles locaux dans le format de modèle enregistré TensorFlow.
Pour créer un Bert Embedder à partir d'un modèle de hub TensowFlow, instanciez simplement un objet Bert avec l'URL TF-HUB cible:
from easybert import Bert
bert = Bert ( "https://tfhub.dev/google/bert_multi_cased_L-12_H-768_A-12/1" ) Vous pouvez également charger un modèle local dans le format de modèle enregistré de TensorFlow à l'aide de Bert.load :
from easybert import Bert
bert = Bert . load ( "/path/to/your/model/" ) Une fois que vous avez un modèle Bert chargé, vous pouvez obtenir des incorporations de séquences à l'aide de bert.embed :
x = bert . embed ( "A sequence" )
y = bert . embed ([ "Multiple" , "Sequences" ]) Si vous voulez des incorporations par token, vous pouvez définir per_token=True :
x = bert . embed ( "A sequence" , per_token = True )
y = bert . embed ([ "Multiple" , "Sequences" ], per_token = True )Easy-Bert renvoie Bert embeddings comme des tableaux numpy
Chaque fois que vous appelez bert.embed , une nouvelle session TensorFlow est créée et utilisée pour le calcul. Si vous appelez bert.embed beaucoup séquentiellement, vous pouvez accélérer votre code en partageant une session TensorFlow parmi ces appels en utilisant une with :
with bert :
x = bert . embed ( "A sequence" , per_token = True )
y = bert . embed ([ "Multiple" , "Sequences" ], per_token = True ) Vous pouvez enregistrer un modèle Bert à l'aide de bert.save , puis le recharger plus tard en utilisant Bert.load :
bert . save ( "/path/to/your/model/" )
bert = Bert . load ( "/path/to/your/model/" )Easy-BRORD fournit également un outil CLI pour faire facilement des incorporations uniques de séquences avec Bert. Il peut également convertir un modèle de concentrateur TensorFlow en un modèle enregistré.
Exécutez bert --help , bert embed --help ou bert download --help pour obtenir des détails sur l'outil CLI.
Easy-BERT est livré avec une version Docker qui peut être utilisée comme image de base pour les applications qui s'appuient sur Bert Embeddings ou pour exécuter l'outil CLI sans avoir besoin d'installer un environnement.
Easy-Bert est disponible sur Maven Central. Il est également distribué via la page des versions.
Pour ajouter la dernière version de publication Easy-Bert à votre projet Maven, ajoutez la dépendance à votre section pom.xml Dependance:
< dependencies >
< dependency >
< groupId >com.robrua.nlp</ groupId >
< artifactId >easy-bert</ artifactId >
< version >1.0.3</ version >
</ dependency >
</ dependencies > Ou, si vous souhaitez obtenir la dernière version de développement, ajoutez également le référentiel instantané Sonaype à votre pom.xml :
< 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 >Vous pouvez utiliser Easy-BERT avec des modèles BERT pré-formés générés avec les outils Python d'Easy-Bert. Vous pouvez également utiliser des modèles pré-générés sur Maven Central.
Pour charger un modèle à partir de votre système de fichiers local, vous pouvez utiliser:
try ( Bert bert = Bert . load ( new File ( "/path/to/your/model/" ))) {
// Embed some sequences
}Si le modèle est dans votre chemin de classe (par exemple, si vous le tirez via Maven), vous pouvez utiliser:
try ( Bert bert = Bert . load ( "/resource/path/to/your/model" )) {
// Embed some sequences
} Une fois que vous avez un modèle Bert chargé, vous pouvez obtenir des incorporations de séquences en utilisant bert.embedSequence ou bert.embedSequences :
float [] embedding = bert . embedSequence ( "A sequence" );
float [][] embeddings = bert . embedSequences ( "Multiple" , "Sequences" ); Si vous voulez des incorporations par token, vous pouvez utiliser bert.embedTokens :
float [][] embedding = bert . embedTokens ( "A sequence" );
float [][][] embeddings = bert . embedTokens ( "Multiple" , "Sequences" ); Divers modèles Bert TensorFlow Hub Bert sont disponibles au format Easy-BERT sur Maven Central. Pour en utiliser un dans votre projet, ajoutez ce qui suit à votre pom.xml , en remplaçant l'un des ID d'artefacts énumérés ci-dessous à la place d' ARTIFACT-ID dans l' artifactId :
< dependencies >
< dependency >
< groupId >com.robrua.nlp.models</ groupId >
< artifactId >ARTIFACT-ID</ artifactId >
< version >1.0.0</ version >
</ dependency >
</ dependencies > Une fois que vous avez attiré la dépendance, vous pouvez charger le modèle en utilisant ce code. Remplacez le chemin de ressource approprié de la liste ci-dessous à la place du RESOURCE-PATH en fonction du modèle que vous avez ajouté en tant que dépendance:
try ( Bert bert = Bert . load ( "RESOURCE-PATH" )) {
// Embed some sequences
}| Modèle | Langues | Couches | Taille d'incorporation | Têtes | Paramètres | ID d'artefact | Chemin de ressources |
|---|---|---|---|---|---|---|---|
| Bert-base, sans base | Anglais | 12 | 768 | 12 | 110m | Easy-bert-onlence-L-12-H-768-A-12 | com / Robrua / NLP / Easy-Bert / Bert-Uslenced-L-12-H-768-A-12 |
| Bert-base, enveloppé | Anglais | 12 | 768 | 12 | 110m | Easy-bert-Cased-L-12-H-768-A-12 | com / Robrua / NLP / Easy-Bert / Bert-Cased-L-12-H-768-A-12 |
| Bert-base, en boîtier multilingue | 104 langues | 12 | 768 | 12 | 110m | Easy-Bert-Multi-Cased-L-12-H-768-A-12 | com / Robrua / NLP / Easy-Bert / Bert-Multi-Cased-L-12-H-768-A-12 |
| Bert-base, chinois | Chinois simplifié et traditionnel | 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 |
Pour l'instant, Easy-BRORD ne peut utiliser que des modèles de hub Bert pré-formés qui ont été convertis à l'aide des outils Python. Nous ajouterons une prise en charge des nouveaux modèles de réglage fin et pré-formation facilement, mais il n'est pas prévu de les soutenir du côté Java. Vous devrez vous entraîner à Python, enregistrer le modèle, puis le charger en Java.
Si vous trouvez des bogues, veuillez nous en informer via une demande ou un problème de traction.
Si vous avez utilisé Easy-Bert pour vos recherches, veuillez citer le projet.