Easy-Bert adalah API sederhana yang mati untuk menggunakan model bahasa Bert berkualitas tinggi Google di Python dan Java.
Saat ini, Easy-Bert fokus untuk mendapatkan embeddings dari model Bert yang terlatih di Python dan Java. Dukungan untuk penyempurnaan dan pra-pelatihan di Python akan ditambahkan di masa depan, serta dukungan untuk menggunakan Easy-BT untuk tugas-tugas lain selain mendapatkan embeddings.
Easy-Bert tersedia di PYPI. Anda dapat menginstal dengan pip install easybert atau pip install git+https://github.com/robrua/easy-bert.git jika Anda menginginkan yang terbaru.
Anda dapat menggunakan Easy-BT dengan model BerT yang terlatih dari TensorFlow Hub atau dari model lokal dalam format model yang disimpan TensorFlow.
Untuk membuat Bert Embedder dari model TensowFlow Hub, cukup instantiate objek Bert dengan URL TF-HUB target:
from easybert import Bert
bert = Bert ( "https://tfhub.dev/google/bert_multi_cased_L-12_H-768_A-12/1" ) Anda juga dapat memuat model lokal dalam format model yang disimpan TensorFlow menggunakan Bert.load :
from easybert import Bert
bert = Bert . load ( "/path/to/your/model/" ) Setelah model Bert dimuat, Anda bisa mendapatkan embeddings urutan menggunakan bert.embed . -Embed:
x = bert . embed ( "A sequence" )
y = bert . embed ([ "Multiple" , "Sequences" ]) Jika Anda ingin embeddings per token, Anda dapat mengatur per_token=True :
x = bert . embed ( "A sequence" , per_token = True )
y = bert . embed ([ "Multiple" , "Sequences" ], per_token = True )Easy-Bert Mengembalikan Bert Embeddings sebagai Numpy Arrays
Setiap kali Anda menelepon bert.embed , sesi TensorFlow baru dibuat dan digunakan untuk perhitungan. Jika Anda menelepon bert.embed banyak secara berurutan, Anda dapat mempercepat kode Anda dengan berbagi sesi TensorFlow di antara panggilan tersebut menggunakan pernyataan with :
with bert :
x = bert . embed ( "A sequence" , per_token = True )
y = bert . embed ([ "Multiple" , "Sequences" ], per_token = True ) Anda dapat menyimpan model Bert menggunakan bert.save , lalu muat ulang nanti menggunakan Bert.load :
bert . save ( "/path/to/your/model/" )
bert = Bert . load ( "/path/to/your/model/" )Easy-Bert juga menyediakan alat CLI untuk dengan mudah melakukan embedding sekuens satu kali dengan Bert. Ini juga dapat mengonversi model TensorFlow Hub menjadi model yang disimpan.
Jalankan bert --help , bert embed --help atau bert download --help untuk mendapatkan detail tentang alat CLI.
Easy-Bert dilengkapi dengan build Docker yang dapat digunakan sebagai gambar dasar untuk aplikasi yang mengandalkan Bert Embeddings atau hanya menjalankan alat CLI tanpa perlu memasang lingkungan.
Easy-Bert tersedia di Maven Central. Ini juga didistribusikan melalui halaman rilis.
Untuk menambahkan versi rilis Easy-Bert terbaru ke proyek Maven Anda, tambahkan ketergantungan ke bagian dependensi pom.xml Anda:
< dependencies >
< dependency >
< groupId >com.robrua.nlp</ groupId >
< artifactId >easy-bert</ artifactId >
< version >1.0.3</ version >
</ dependency >
</ dependencies > Atau, jika Anda ingin mendapatkan versi pengembangan terbaru, tambahkan repositori snapshot sonaype ke pom.xml Anda juga:
< 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 >Anda dapat menggunakan Easy-BT dengan model Bert pra-terlatih yang dihasilkan dengan alat Python Easy-Bert. Anda juga dapat menggunakan model yang dihasilkan sebelumnya di Maven Central.
Untuk memuat model dari sistem file lokal Anda, Anda dapat menggunakan:
try ( Bert bert = Bert . load ( new File ( "/path/to/your/model/" ))) {
// Embed some sequences
}Jika modelnya ada di classpath Anda (misalnya jika Anda menariknya melalui Maven), Anda dapat menggunakan:
try ( Bert bert = Bert . load ( "/resource/path/to/your/model" )) {
// Embed some sequences
} Setelah Anda memiliki model Bert dimuat, Anda bisa mendapatkan embeddings urutan menggunakan bert.embedSequence atau bert.embedSequences :
float [] embedding = bert . embedSequence ( "A sequence" );
float [][] embeddings = bert . embedSequences ( "Multiple" , "Sequences" ); Jika Anda ingin embeddings per token, Anda dapat menggunakan bert.embedTokens :
float [][] embedding = bert . embedTokens ( "A sequence" );
float [][][] embeddings = bert . embedTokens ( "Multiple" , "Sequences" ); Berbagai model TensorFlow Hub Bert tersedia dalam format mudah di Maven Central. Untuk menggunakan satu dalam proyek Anda, tambahkan yang berikut ini ke pom.xml Anda, ganti salah satu ID artefak yang tercantum di bawah ini di tempat ARTIFACT-ID dalam artifactId :
< dependencies >
< dependency >
< groupId >com.robrua.nlp.models</ groupId >
< artifactId >ARTIFACT-ID</ artifactId >
< version >1.0.0</ version >
</ dependency >
</ dependencies > Setelah Anda menarik ketergantungan, Anda dapat memuat model menggunakan kode ini. Ganti jalur sumber daya yang sesuai dari daftar di bawah ini sebagai pengganti RESOURCE-PATH berdasarkan model yang Anda tambahkan sebagai ketergantungan:
try ( Bert bert = Bert . load ( "RESOURCE-PATH" )) {
// Embed some sequences
}| Model | Bahasa | Lapisan | Ukuran embedding | Kepala | Parameter | ID Artefak | Jalur sumber daya |
|---|---|---|---|---|---|---|---|
| Bert-base, tidak terpelajar | Bahasa inggris | 12 | 768 | 12 | 110m | Easy-Bert-tidakased-L-12-H-768-A-12 | com/robrua/nlp/Easy-Bert/Bert-tidakased-L-12-H-768-A-12 |
| Bert-base, cased | Bahasa inggris | 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, multibahasa cased | 104 bahasa | 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, Cina | Cina disederhanakan dan tradisional | 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 |
Untuk saat ini, Easy-Bert hanya dapat menggunakan model TensorFlow Hub Bert yang sudah terlatih yang telah dikonversi menggunakan alat Python. Kami akan menambahkan dukungan untuk model baru yang menyempurnakan dan pra-pelatihan dengan mudah, tetapi tidak ada rencana untuk mendukung ini di sisi Java. Anda harus berlatih di Python, menyimpan model, lalu memuatnya di Java.
Jika Anda menemukan bug, beri tahu kami melalui permintaan tarik atau masalah.
Jika Anda menggunakan Easy-Bert untuk penelitian Anda, silakan kutip proyek ini.