Easy-Bert es una API simple y simple para usar el modelo de lenguaje Bert de alta calidad de Google en Python y Java.
Actualmente, Easy-Bert se centra en obtener incrustaciones de los modelos Bert previamente capacitados en Python y Java. El soporte para el ajuste y el pretruento en Python se agregará en el futuro, así como el soporte para usar fácil-berts para otras tareas además de obtener incrustaciones.
Easy-Bert está disponible en Pypi. Puede instalar con pip install easybert o pip install git+https://github.com/robrua/easy-bert.git si desea lo último.
Puede usar Easy-Bert con modelos Bert previamente capacitados de TensorFlow Hub o de modelos locales en el formato de modelo guardado TensorFlow.
Para crear un embedido Bert a partir de un modelo de concentrador Tensowflow, simplemente instanciar un objeto Bert con la URL TF-HUB objetivo:
from easybert import Bert
bert = Bert ( "https://tfhub.dev/google/bert_multi_cased_L-12_H-768_A-12/1" ) También puede cargar un modelo local en formato de modelo guardado de TensorFlow usando Bert.load :
from easybert import Bert
bert = Bert . load ( "/path/to/your/model/" ) Una vez que tenga un modelo Bert cargado, puede obtener incrustaciones de secuencia usando bert.embed :
x = bert . embed ( "A sequence" )
y = bert . embed ([ "Multiple" , "Sequences" ]) Si desea incrustaciones por juicio, puede configurar per_token=True :
x = bert . embed ( "A sequence" , per_token = True )
y = bert . embed ([ "Multiple" , "Sequences" ], per_token = True )Easy-Bert Devuelve Bert Increddings como matrices Numpy
Cada vez que llame bert.embed . Si está llamando bert.embed mucho secuencialmente, puede acelerar su código compartiendo una sesión de TensorFlow entre esas llamadas usando una declaración with una declaración:
with bert :
x = bert . embed ( "A sequence" , per_token = True )
y = bert . embed ([ "Multiple" , "Sequences" ], per_token = True ) Puede guardar un modelo Bert usando bert.save , luego recargarlo más tarde usando Bert.load :
bert . save ( "/path/to/your/model/" )
bert = Bert . load ( "/path/to/your/model/" )Easy-Bert también proporciona una herramienta CLI para hacer incrustaciones únicas de secuencias con Bert. También puede convertir un modelo de concentrador TensorFlow a un modelo guardado.
Ejecute bert --help , bert embed --help o bert download --help para obtener detalles sobre la herramienta CLI.
Easy-Bert viene con una compilación Docker que puede usarse como una imagen base para aplicaciones que dependen de Bert Incrustes o simplemente para ejecutar la herramienta CLI sin necesidad de instalar un entorno.
Easy-Bert está disponible en Maven Central. También se distribuye a través de la página de lanzamientos.
Para agregar la última versión de lanzamiento de Easy-Bert a su proyecto Maven, agregue la dependencia a su sección de dependencias pom.xml :
< dependencies >
< dependency >
< groupId >com.robrua.nlp</ groupId >
< artifactId >easy-bert</ artifactId >
< version >1.0.3</ version >
</ dependency >
</ dependencies > O, si desea obtener la última versión de desarrollo, agregue el repositorio de instantáneas de Sonaype a su pom.xml también:
< 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 >Puede usar Easy-Bert con modelos Bert previamente capacitados generados con herramientas Python de Easy-Bert. También puede utilizar modelos previamente generados en Maven Central.
Para cargar un modelo desde su sistema de archivos local, puede usar:
try ( Bert bert = Bert . load ( new File ( "/path/to/your/model/" ))) {
// Embed some sequences
}Si el modelo está en su classpath (por ejemplo, si lo está tirando a través de Maven), puede usar:
try ( Bert bert = Bert . load ( "/resource/path/to/your/model" )) {
// Embed some sequences
} Una vez que tenga un modelo Bert cargado, puede obtener incrustaciones de secuencia usando bert.embedSequence bert.embedSequences
float [] embedding = bert . embedSequence ( "A sequence" );
float [][] embeddings = bert . embedSequences ( "Multiple" , "Sequences" ); Si desea incrustaciones por juicio, puede usar bert.embedTokens :
float [][] embedding = bert . embedTokens ( "A sequence" );
float [][][] embeddings = bert . embedTokens ( "Multiple" , "Sequences" ); Varios modelos Bert de Hub TensorFlow están disponibles en formato fácil de bertir en Maven Central. Para usar uno en su proyecto, agregue lo siguiente a su pom.xml , sustituyendo uno de los ID de artefactos que se enumeran a continuación en lugar de ARTIFACT-ID en el artifactId :
< dependencies >
< dependency >
< groupId >com.robrua.nlp.models</ groupId >
< artifactId >ARTIFACT-ID</ artifactId >
< version >1.0.0</ version >
</ dependency >
</ dependencies > Una vez que haya atraído la dependencia, puede cargar el modelo usando este código. Sustituya la ruta de recursos apropiada de la lista a continuación en lugar de la RESOURCE-PATH según el modelo que agregó como dependencia:
try ( Bert bert = Bert . load ( "RESOURCE-PATH" )) {
// Embed some sequences
}| Modelo | Lenguas | Capas | Tamaño de incrustación | Cabezales | Parámetros | ID de artefacto | Ruta de recursos |
|---|---|---|---|---|---|---|---|
| Bert-base, no basado | Inglés | 12 | 768 | 12 | 110m | fácil-berts-unbased-l-12-h-768-a-12 | com/robrua/nlp/easy-bert/bert-unsed-l-12-h-768-a-12 |
| Bert-Base, carcasa | Inglés | 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, Multilingüe Cased | 104 idiomas | 12 | 768 | 12 | 110m | Easy-Bert-Multi-Case-L-12-H-768-A-12 | com/robrua/nlp/easy-bert/bert-multi-caded-l-12-h-768-a-12 |
| Bert-Base, chino | Chino simplificado y 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 ahora, Easy-Bert solo puede usar modelos Bert de Hub TensorFlow Presurados que se han convertido utilizando las herramientas de Python. Agregaremos soporte para ajustar y pre-entrenamiento nuevos modelos fácilmente, pero no hay planes para apoyarlos en el lado de Java. Tendrá que entrenar en Python, guardar el modelo y luego cargarlo en Java.
Si encuentra errores, háganoslo saber a través de una solicitud de extracción o problema.
Si usó Easy-Bert para su investigación, cite el proyecto.