Easy-Bert เป็น API แบบง่ายที่ตายแล้วสำหรับการใช้โมเดลภาษาเบิร์ตคุณภาพสูงของ Google ใน Python และ Java
ปัจจุบัน Easy-Bert มุ่งเน้นไปที่การฝังตัวจากรุ่น Bert ที่ผ่านการฝึกอบรมมาก่อนทั้ง Python และ Java การสนับสนุนสำหรับการปรับแต่งและการฝึกอบรมล่วงหน้าใน Python จะถูกเพิ่มเข้ามาในอนาคตรวมถึงการสนับสนุนการใช้ Easy-Bert สำหรับงานอื่น ๆ นอกเหนือจากการฝังตัว
Easy-Bert มีให้บริการใน PYPI คุณสามารถติดตั้งด้วย pip install easybert หรือ pip install git+https://github.com/robrua/easy-bert.git หากคุณต้องการล่าสุด
คุณสามารถใช้ Easy-Bert กับรุ่น Bert ที่ผ่านการฝึกอบรมมาแล้วจาก TensorFlow Hub หรือจากรุ่นท้องถิ่นในรูปแบบรุ่น Tensorflow ที่บันทึกไว้
ในการสร้าง Bert Embedder จากรุ่น Tensowflow Hub เพียงแค่สร้างอินสแตนซ์วัตถุ Bert ด้วย URL เป้าหมาย TF-Hub:
from easybert import Bert
bert = Bert ( "https://tfhub.dev/google/bert_multi_cased_L-12_H-768_A-12/1" ) นอกจากนี้คุณยังสามารถโหลดโมเดลท้องถิ่นในรูปแบบรุ่นที่บันทึกไว้ของ TensorFlow โดยใช้ Bert.load :
from easybert import Bert
bert = Bert . load ( "/path/to/your/model/" ) เมื่อคุณโหลดโมเดลเบิร์ตแล้วคุณจะได้รับ Embeddings ลำดับโดยใช้ bert.embed :
x = bert . embed ( "A sequence" )
y = bert . embed ([ "Multiple" , "Sequences" ]) หากคุณต้องการ embeddings per-token คุณสามารถตั้งค่า per_token=True :
x = bert . embed ( "A sequence" , per_token = True )
y = bert . embed ([ "Multiple" , "Sequences" ], per_token = True )Easy-Bert ส่งคืน Bert Embeddings เป็นอาร์เรย์ numpy
ทุกครั้งที่คุณโทรหา bert.embed เซสชัน TensorFlow ใหม่จะถูกสร้างและใช้สำหรับการคำนวณ หากคุณกำลังโทรหา bert.embed ตามลำดับคุณสามารถเร่งรหัสของคุณได้โดยการแชร์เซสชัน TensorFlow ระหว่างการโทรโดยใช้คำสั่ง with :
with bert :
x = bert . embed ( "A sequence" , per_token = True )
y = bert . embed ([ "Multiple" , "Sequences" ], per_token = True ) คุณสามารถบันทึกรุ่น Bert โดยใช้ bert.save จากนั้นโหลดใหม่ในภายหลังโดยใช้ Bert.load :
bert . save ( "/path/to/your/model/" )
bert = Bert . load ( "/path/to/your/model/" )Easy-Bert ยังให้บริการเครื่องมือ CLI เพื่อทำการฝังตัวแบบหนึ่งครั้งด้วยเบิร์ต นอกจากนี้ยังสามารถแปลงรุ่นฮับเทนเซอร์โฟลเป็นรุ่นที่บันทึกไว้
Run bert --help , bert embed --help หรือ bert download --help เพื่อรับรายละเอียดเกี่ยวกับเครื่องมือ CLI
Easy-Bert มาพร้อมกับบิลด์ Docker ที่สามารถใช้เป็นภาพพื้นฐานสำหรับแอปพลิเคชันที่พึ่งพา Bert Embeddings หรือเพียงแค่เรียกใช้เครื่องมือ CLI โดยไม่จำเป็นต้องติดตั้งสภาพแวดล้อม
Easy-Bert มีให้บริการบน Maven Central นอกจากนี้ยังมีการแจกจ่ายผ่านหน้าเผยแพร่
หากต้องการเพิ่มเวอร์ชัน Easy-Bert รุ่นล่าสุดลงในโครงการ Maven ของคุณให้เพิ่มการพึ่งพาในส่วนการพึ่งพา pom.xml ของคุณ:
< dependencies >
< dependency >
< groupId >com.robrua.nlp</ groupId >
< artifactId >easy-bert</ artifactId >
< version >1.0.3</ version >
</ dependency >
</ dependencies > หรือหากคุณต้องการรับเวอร์ชันการพัฒนาล่าสุดให้เพิ่มพื้นที่เก็บข้อมูล Sonaype Snapshot ลงใน 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 >คุณสามารถใช้ Easy-Bert กับรุ่น Bert ที่ผ่านการฝึกอบรมมาแล้วที่สร้างขึ้นด้วยเครื่องมือ Python ของ Easy-Bert คุณยังสามารถใช้โมเดลที่สร้างไว้ล่วงหน้าบน Maven Central
ในการโหลดโมเดลจากระบบไฟล์ในเครื่องของคุณคุณสามารถใช้:
try ( Bert bert = Bert . load ( new File ( "/path/to/your/model/" ))) {
// Embed some sequences
}หากโมเดลอยู่ใน ClassPath ของคุณ (เช่นหากคุณกำลังดึงมันเข้ามาทางผ่าน Maven) คุณสามารถใช้:
try ( Bert bert = Bert . load ( "/resource/path/to/your/model" )) {
// Embed some sequences
} เมื่อคุณโหลดโมเดลเบิร์ตแล้วคุณจะได้รับ Embeddings ตามลำดับโดยใช้ bert.embedSequence หรือ bert.embedSequences :
float [] embedding = bert . embedSequence ( "A sequence" );
float [][] embeddings = bert . embedSequences ( "Multiple" , "Sequences" ); หากคุณต้องการ embeddings per-token คุณสามารถใช้ bert.embedTokens :
float [][] embedding = bert . embedTokens ( "A sequence" );
float [][][] embeddings = bert . embedTokens ( "Multiple" , "Sequences" ); รุ่น Tensorflow Hub Bert ต่างๆมีให้บริการในรูปแบบ Easy-Bert บน Maven Central หากต้องการใช้หนึ่งในโครงการของคุณเพิ่มสิ่งต่อไปนี้ลงใน pom.xml ของคุณแทนหนึ่งใน ID สิ่งประดิษฐ์ที่ระบุไว้ด้านล่างแทน ARTIFACT-ID ใน artifactId :
< dependencies >
< dependency >
< groupId >com.robrua.nlp.models</ groupId >
< artifactId >ARTIFACT-ID</ artifactId >
< version >1.0.0</ version >
</ dependency >
</ dependencies > เมื่อคุณดึงการพึ่งพาคุณสามารถโหลดโมเดลโดยใช้รหัสนี้ แทนที่เส้นทางทรัพยากรที่เหมาะสมจากรายการด้านล่างแทน RESOURCE-PATH ตามแบบจำลองที่คุณเพิ่มเป็นการพึ่งพา:
try ( Bert bert = Bert . load ( "RESOURCE-PATH" )) {
// Embed some sequences
}| แบบอย่าง | ภาษา | ชั้น | ขนาดฝัง | หัว | พารามิเตอร์ | ID สิ่งประดิษฐ์ | เส้นทางทรัพยากร |
|---|---|---|---|---|---|---|---|
| เบิร์ตฐาน | ภาษาอังกฤษ | 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 |
| เบิร์ตเบส | ภาษาอังกฤษ | 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, cased หลายภาษา | 104 ภาษา | 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 |
| เบิร์ตเบสจีน | ภาษาจีนเรียบง่ายและดั้งเดิม | 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 |
สำหรับตอนนี้ Easy-Bert สามารถใช้รุ่น Tensorflow Hub Bert ที่ผ่านการฝึกอบรมมาแล้วซึ่งได้รับการแปลงโดยใช้เครื่องมือ Python เราจะเพิ่มการสนับสนุนสำหรับการปรับแต่งและการฝึกอบรมรุ่นใหม่ล่วงหน้าได้อย่างง่ายดาย แต่ไม่มีแผนที่จะสนับสนุนสิ่งเหล่านี้ในฝั่ง Java คุณจะต้องฝึกใน Python บันทึกโมเดลจากนั้นโหลดใน Java
หากคุณพบข้อบกพร่องโปรดแจ้งให้เราทราบผ่านคำขอดึงหรือปัญหา
หากคุณใช้ Easy-Bert สำหรับการวิจัยของคุณโปรดอ้างอิงโครงการ