Easy-Bert ist eine tote einfache API für die Verwendung von Googles hochwertigem Bert-Sprachmodell in Python und Java.
Derzeit konzentriert sich Easy-Bert darauf, Einbettungen von vorgeborenen Bert-Modellen sowohl in Python als auch in Java zu erhalten. Die Unterstützung für Feinabstimmungen und Vorinstitut in Python wird in Zukunft hinzugefügt und unterstützt die Verwendung von Easy-Berg für andere Aufgaben und wird ein Einbettungsdings verwendet.
Easy-Bert ist auf PYPI erhältlich. Sie können mit pip install easybert oder pip install git+https://github.com/robrua/easy-bert.git wenn Sie die neueste möchten.
Sie können Easy-Berg mit vorgebildeten Bert-Modellen aus dem Tensorflow-Hub oder aus lokalen Modellen im TensorFlow-Speicherformat verwenden.
Um ein Bert-Einbettder aus einem Tensowflow-Hub-Modell zu erstellen, instanziieren Sie einfach ein Bert-Objekt mit der Ziel-TF-Hub-URL der Ziel:
from easybert import Bert
bert = Bert ( "https://tfhub.dev/google/bert_multi_cased_L-12_H-768_A-12/1" ) Sie können auch ein lokales Modell im gespeicherten Modellformat von TensorFlow unter Verwendung von Bert.load laden.
from easybert import Bert
bert = Bert . load ( "/path/to/your/model/" ) Sobald Sie ein Bert -Modell geladen haben, können Sie Sequenz -Einbettungen mit bert.embed erhalten:
x = bert . embed ( "A sequence" )
y = bert . embed ([ "Multiple" , "Sequences" ]) Wenn Sie pro-teuren Einbettungen möchten, können Sie per_token=True festlegen:
x = bert . embed ( "A sequence" , per_token = True )
y = bert . embed ([ "Multiple" , "Sequences" ], per_token = True )Easy-Bert gibt Bert Einbettungen als Numpy-Arrays zurück
Jedes Mal, wenn Sie bert.embed anrufen, wird eine neue Tensorflow -Sitzung erstellt und für die Berechnung verwendet. Wenn Sie bert.embed with
with bert :
x = bert . embed ( "A sequence" , per_token = True )
y = bert . embed ([ "Multiple" , "Sequences" ], per_token = True ) Sie können ein Bert -Modell mit bert.save speichern und später mit Bert.load : LOAD: LOADEN:
bert . save ( "/path/to/your/model/" )
bert = Bert . load ( "/path/to/your/model/" )Easy-Bert bietet außerdem ein CLI-Tool, um bequem einmalige Einbettungen von Sequenzen mit Bert durchzuführen. Es kann auch ein TensorFlow -Hub -Modell in ein gespeichertes Modell umwandeln.
Rennen Sie bert --help , bert embed --help oder bert download --help um Details zum CLI -Tool zu erhalten.
Easy-Bert wird mit einem Docker-Build geliefert, der als Grundbild für Anwendungen verwendet werden kann, die auf Bert-Einbettungen angewiesen sind, oder einfach das CLI-Tool ausführen, ohne eine Umgebung zu installieren.
Easy-Bert ist auf Maven Central erhältlich. Es wird auch über die Releases -Seite verteilt.
Um Ihr Maven-Projekt die neueste Version von Easy-Bert-Release hinzuzufügen, fügen Sie die Abhängigkeit von Ihrem Abschnitt pom.xml -Abhängigkeiten hinzu:
< dependencies >
< dependency >
< groupId >com.robrua.nlp</ groupId >
< artifactId >easy-bert</ artifactId >
< version >1.0.3</ version >
</ dependency >
</ dependencies > Oder wenn Sie die neueste Entwicklungsversion erhalten möchten, fügen Sie das Sonaype -Snapshot -Repository auch Ihrem pom.xml hinzu:
< 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 >Sie können Easy-Berg mit vorgebildeten Bert-Modellen verwenden, die mit Easy-Berg-Python-Tools erzeugt wurden. Sie können auch vorgenerierte Modelle auf Maven Central verwenden.
Um ein Modell aus Ihrem lokalen Dateisystem zu laden, können Sie verwenden:
try ( Bert bert = Bert . load ( new File ( "/path/to/your/model/" ))) {
// Embed some sequences
}Wenn sich das Modell in Ihrem Klassenpfad befindet (z. B. wenn Sie es über Maven einziehen) können Sie verwenden:
try ( Bert bert = Bert . load ( "/resource/path/to/your/model" )) {
// Embed some sequences
} Sobald Sie ein Bert -Modell geladen haben, können Sie Sequenz -Einbettungen mit bert.embedSequence oder bert.embedSequences erhalten:
float [] embedding = bert . embedSequence ( "A sequence" );
float [][] embeddings = bert . embedSequences ( "Multiple" , "Sequences" ); Wenn Sie pro-öfter Einbettungen möchten, können Sie bert.embedTokens verwenden:
float [][] embedding = bert . embedTokens ( "A sequence" );
float [][][] embeddings = bert . embedTokens ( "Multiple" , "Sequences" ); Verschiedene Tensorflow-Hub-Bert-Modelle sind im Easy-Berg-Format auf Maven Central erhältlich. Um eine in Ihrem Projekt zu verwenden, fügen Sie Folgendes Ihrem pom.xml hinzu und ersetzen Sie eine der unten aufgeführten Artefakt-IDs anstelle von ARTIFACT-ID in der artifactId :
< dependencies >
< dependency >
< groupId >com.robrua.nlp.models</ groupId >
< artifactId >ARTIFACT-ID</ artifactId >
< version >1.0.0</ version >
</ dependency >
</ dependencies > Sobald Sie die Abhängigkeit angerufen haben, können Sie das Modell mit diesem Code laden. Ersetzen Sie den entsprechenden Ressourcenpfad aus der folgenden Liste anstelle von RESOURCE-PATH basierend auf dem Modell, das Sie als Abhängigkeit hinzugefügt haben:
try ( Bert bert = Bert . load ( "RESOURCE-PATH" )) {
// Embed some sequences
}| Modell | Sprachen | Schichten | Einbettungsgröße | Köpfe | Parameter | Artefakt -ID | Ressourcenpfad |
|---|---|---|---|---|---|---|---|
| Bert-Base, ungezogen | Englisch | 12 | 768 | 12 | 110 m | Easy-Bert-L-12-H-768-A-12 | com/robrua/nlp/easy-berbert/bert-l-12-h-768-a-12 |
| Bert-Base, Gehäuse | Englisch | 12 | 768 | 12 | 110 m | Easy-Bert-Caid-L-12-H-768-A-12 | com/robrua/nlp/easy-bergt/bert-casiertes L-12-H-768-A-12 |
| Bert-Base, mehrsprachige Hähne | 104 Sprachen | 12 | 768 | 12 | 110 m | Easy-Bert-Multi-Casiertes-L-12-H-768-A-12 | com/robrua/nlp/easy-berbert/bert-multi-casiertes L-12-H-768-A-12 |
| Bert-Base, Chinesisch | Chinesisch vereinfacht und traditionell | 12 | 768 | 12 | 110 m | Easy-Bert-Chinese-L-12-H-768-A-12 | com/roBRUA/NLP/Easy-Bert/Bert-Chinese-12-H-768-A-12 |
Derzeit kann Easy-Bert nur vorgeborene Tensorflow-Hub-Bert-Modelle verwenden, die mit den Python-Tools konvertiert wurden. Wir werden leicht Unterstützung für die Feinabstimmung und die Vorausbildung neuer Modelle hinzufügen, aber es gibt keine Pläne, diese auf der Java-Seite zu unterstützen. Sie müssen in Python trainieren, das Modell speichern und es dann in Java laden.
Wenn Sie Fehler finden, teilen Sie uns dies bitte über eine Pull -Anfrage oder ein Problem mit.
Wenn Sie Easy-Bert für Ihre Forschung verwendet haben, zitieren Sie bitte das Projekt.