Transformadores são a base de muitos dos modelos de linguagem de última geração, como BERT e GPT. Eles são altamente eficientes para tarefas de NLP devido à sua capacidade de capturar dependências de longo alcance no texto.
Exemplo: Usar BERT para Classificação de Texto
from transformers import BertTokenizer, TFBertForSequenceClassification
from transformers import glue_convert_examples_to_features, glue_processors
import tensorflow as tf
# Carregar o modelo e o tokenizador BERT pré-treinados
modelo = TFBertForSequenceClassification.from_pretrained('bert-base-uncased')
tokenizador = BertTokenizer.from_pretrained('bert-base-uncased')
# Exemplo de dados
sentencas = ["I love this!", "I hate this!"]
rotulos = [1, 0]
# Tokenizar as entradas
ids_entrada = []
mascaras_atencao = []
for enviado in sentencas:
dict_codificado = tokenizador.encode_plus(
enviado,
add_special_tokens = True,
max_length = 64,
pad_to_max_length = True,
return_attention_mask = True,
return_tensors = 'tf'
)
ids_entrada.append(dict_codificado['ids_entrada'])
mascaras_atencao.append(dict_codificado['attention_mask'])
ids_entrada = tf.concat(ids_entrada, axis=0)
mascaras_atencao = tf.concat(mascaras_atencao, axis=0)
rotulos = tf.convert_to_tensor(rotulos)
# Treinar o modelo
otimizador = tf.keras.optimizers.Adam(learning_rate=2e-5, epsilon=1e-8)
perda = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)
modelo.compile(optimizer=otimizador, loss=perda, metrics=['accuracy'])
modelo.fit(
[ids_entrada, mascaras_atencao],
rotulos,
epochs=4,
batch_size=8
)
# Avaliar o modelo
perda, acuracia = modelo.evaluate([ids_entrada, mascaras_atencao], rotulos)
print(f'Acurâcia: {acuracia}')