Easy-Bert-это мертвый простой API для использования высококачественной модели BERT в 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.
Чтобы создать Embedder из модели концентратора TensowFlow, просто создайте экземпляр объекта 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/" ) После загрузки модели 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 встраивания в качестве массивов Numpy
Каждый раз, когда вы называете bert.embed , создается новый сеанс Tensorflow для вычисления. Если вы звоните bert.embed My So More, вы можете ускорить свой код, поделившись сеансом 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 для удобного выполнения одноразовых встроенных последовательностей с BERT. Он также может преобразовать модель Tensorflow Hub в сохраненную модель.
Запустите bert --help , bert embed --help или bert download --help чтобы получить подробную информацию о инструменте CLI.
Easy-Bert поставляется с сборкой Docker, которая может использоваться в качестве базового изображения для приложений, которые полагаются на Enterdings BERT, или для простого запуска инструмента 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 в свой 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
} Как только у вас загружена модель 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" ); Различные модели Tensorflow Hub Bert доступны в формате Easy-Bert на Maven Central. Чтобы использовать один в вашем проекте, добавьте следующее в свой pom.xml , заменив один из идентификаторов артефакта, перечисленных ниже вместо 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
}| Модель | Языки | Слои | Размер встраивания | Головы | Параметры | Идентификатор артефакта | Путь ресурса |
|---|---|---|---|---|---|---|---|
| BERT-BASE, UNCASED | Английский | 12 | 768 | 12 | 110 м | Easy-Bert-Undased-L-12-H-768-A-12 | com/robrua/nlp/easy-bert/bert-oundased-l-12-h-768-a-12 |
| BERT-баз, обсадный | Английский | 12 | 768 | 12 | 110 м | Easy-Bert-Case-L-12-H-768-A-12 | com/robrua/nlp/easy-bert/bert-cased-l-12-h-768-a-12 |
| BERT-BASE, многоязычный корпус | 104 языка | 12 | 768 | 12 | 110 м | Easy-Bert-Multi-Caved-L-12-H-768-A-12 | com/robrua/nlp/easy-bert/bert-multi-cased-l-12-h-768-a-12 |
| Берт-баз, китайский | Китайский упрощенный и традиционный | 12 | 768 | 12 | 110 м | 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 для своего исследования, пожалуйста, процитируйте проект.