Easy-Bert는 Python과 Java에서 Google의 고품질 Bert 언어 모델을 사용하기위한 죽은 간단한 API입니다.
현재 Easy-Bert는 Python과 Java 모두에서 미리 훈련 된 Bert 모델의 삽입에 중점을두고 있습니다. 파이썬의 미세 조정 및 사전 훈련에 대한 지원은 향후에 추가 될 것이며, 임베드를 얻는 것 외에 다른 작업에 Easy-Bert를 사용하는 지원을 제공 할 것입니다.
Easy-Bert는 PYPI에서 사용할 수 있습니다. pip install easybert 또는 pip install git+https://github.com/robrua/easy-bert.git 으로 설치할 수 있습니다.
Tensorflow 허브 또는 Tensorflow 저장 모델 형식의 로컬 모델에서 미리 훈련 된 버트 모델과 함께 Easy-Bert를 사용할 수 있습니다.
TensowFlow 허브 모델에서 Bert Embedder를 생성하려면 대상 TF-Hub URL과 함께 Bert 객체를 인스턴스화합니다.
from easybert import Bert
bert = Bert ( "https://tfhub.dev/google/bert_multi_cased_L-12_H-768_A-12/1" ) Bert.load 사용하여 TensorFlow의 저장된 모델 형식에 로컬 모델을로드 할 수도 있습니다.
from easybert import Bert
bert = Bert . load ( "/path/to/your/model/" ) Bert 모델이로드되면 bert.embed 사용하여 시퀀스 임베딩을 얻을 수 있습니다.
x = bert . embed ( "A sequence" )
y = bert . embed ([ "Multiple" , "Sequences" ]) 마당 임베딩을 원한다면 per_token=True 설정할 수 있습니다.
x = bert . embed ( "A sequence" , per_token = True )
y = bert . embed ([ "Multiple" , "Sequences" ], per_token = True )Easy-Bert는 Bert Embeddings를 Numpy Array로 반환합니다
bert.embed 호출 할 때마다 새로운 텐서 플로우 세션이 작성되어 계산에 사용됩니다. bert.embed . with 명령문을 사용하여 해당 통화 중에 텐서 플로우 세션을 공유하여 코드 속도를 높일 수 있습니다.
with bert :
x = bert . embed ( "A sequence" , per_token = True )
y = bert . embed ([ "Multiple" , "Sequences" ], per_token = True ) bert.save 사용하여 Bert 모델을 저장 한 다음 Bert.load 사용하여 나중에 다시로드 할 수 있습니다.
bert . save ( "/path/to/your/model/" )
bert = Bert . load ( "/path/to/your/model/" )Easy-Bert는 또한 CLI 도구를 제공하여 Bert와 일회성 시퀀스를 편리하게 수행 할 수 있습니다. 또한 텐서 플로우 허브 모델을 저장된 모델로 변환 할 수도 있습니다.
CLI 도구에 대한 세부 정보를 얻으려면 bert --help , bert embed --help 또는 bert download --help 실행하십시오.
Easy-Bert에는 Bert 임베딩에 의존하거나 환경을 설치하지 않고도 CLI 도구를 실행하는 응용 프로그램의 기본 이미지로 사용할 수있는 Docker 빌드가 제공됩니다.
Easy-Bert는 Maven Central에서 제공됩니다. 또한 릴리스 페이지를 통해 배포됩니다.
Maven 프로젝트에 최신 Easy-Bert 릴리스 버전을 추가하려면 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의 Python 도구로 생성 된 미리 훈련 된 Bert 모델과 함께 Easy-Bert를 사용할 수 있습니다. Maven Central에서 사전 생성 된 모델을 사용할 수도 있습니다.
로컬 파일 시스템에서 모델을로드하려면 다음을 사용할 수 있습니다.
try ( Bert bert = Bert . load ( new File ( "/path/to/your/model/" ))) {
// Embed some sequences
}모델이 클래스 경로에있는 경우 (예 : Maven을 통해 가져 오는 경우) : 사용할 수 있습니다.
try ( Bert bert = Bert . load ( "/resource/path/to/your/model" )) {
// Embed some sequences
} Bert 모델이로드되면 bert.embedSequence 또는 bert.embedSequences 사용하여 시퀀스 임베딩을 얻을 수 있습니다.
float [] embedding = bert . embedSequence ( "A sequence" );
float [][] embeddings = bert . embedSequences ( "Multiple" , "Sequences" ); 덩어리 당 내장을 원한다면 bert.embedTokens 사용할 수 있습니다.
float [][] embedding = bert . embedTokens ( "A sequence" );
float [][][] embeddings = bert . embedTokens ( "Multiple" , "Sequences" ); Maven Central의 다양한 Tensorflow Hub Bert 모델은 Easy-Bert 형식으로 제공됩니다. 프로젝트에서 하나를 사용하려면 pom.xml 에 다음을 추가하여 artifactId 에서 ARTIFACT-ID 대신 아래에 나열된 아티팩트 ID 중 하나를 대체하십시오.
< 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-uncanced-l-12-H-768-A-12 | com/robrua/nlp/easy-bert/bert-uncincased-l-12-H-768-A-12 |
| 베르트-베이스, 케이스 | 영어 | 12 | 768 | 12 | 110m | Easy-Bert-Cased-L-H-768-A-12 | com/robrua/nlp/easy-bert/bert-cased-l-12-H-768-A-12 |
| Bert-Base, 다국어 케이스 | 104 언어 | 12 | 768 | 12 | 110m | Easy-Bert-Multi-Cased-L-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-H-H-768-A-12 | com/robrua/nlp/easy-bert/bert-chinese-l-12-h-768-a-12 |
현재 Easy-Bert는 Python 도구를 사용하여 변환 된 미리 훈련 된 Tensorflow Hub Bert 모델 만 사용할 수 있습니다. 우리는 새로운 모델을 쉽게 미세 조정하고 사전 훈련하는 것에 대한 지원을 추가 할 것이지만 Java 측에서이를 지원할 계획은 없습니다. 파이썬으로 훈련하고 모델을 저장 한 다음 Java로로드해야합니다.
버그를 찾으면 풀 요청 또는 문제를 통해 알려주십시오.
연구에 Easy-Bert를 사용했다면 프로젝트를 인용하십시오.