En introduisant des méthodes d'apprentissage et d'inférence sans prétraitement ni vectorisation de mots, la précision n'est souvent pas si élevée.
simpletransformer Il est implémenté dans le package python afin que vous puissiez facilement faire diverses choses dans le système de langage naturel.
Je l'ai écrit en supposant que des éléments de base tels que les pandas sont inclus et que vous pouvez faire les deux avec conda et pip.
Si pytorch est déjà inclus, ignorez les étapes ci-dessous. Pour gpu
pip install pytorch>=1.6 cudatoolkit=10.2 -c pytorch
cpu uniquement
pip install pytorch cpuonly -c pytorch
Je ne pense pas que de simples transformateurs puissent être réalisés avec conda.
pip install simpletransformers
Il s'agit d'une installation de wandb pour visualiser l'apprentissage sur le Web, cela fonctionne sans lui, alors veuillez l'ignorer si vous n'en avez pas besoin. L'utilisation n'est pas décrite.
pip install wandb
Utilisez-le en supposant que le dataframe pandas contient le texte et l'étiquette correspondante.
Changé le nom de la colonne où le texte des pandas est écrit en "texte" et le nom de la colonne où l'étiquette est écrite en "étiquette".
params = {
"output_dir": "out_models/bert_model/",
"max_seq_length": 256,
"train_batch_size": 128,
"eval_batch_size": 128,
"num_train_epochs": 10,
"learning_rate": 1e-4,
}
Spécifiez n'importe quel répertoire pour output_dir. Ce sera le répertoire de destination de sauvegarde du modèle créé lors de l'apprentissage.
from simpletransformers.classification import ClassificationModel
model = ClassificationModel(“bert”, “bert-base-cased”,num_labels=10, args=params, use_cuda=True)
model.train_model(train_df)
Entrez le nom de chaque modèle que vous souhaitez utiliser dans "bert" et le nom du modèle pré-entraîné que vous souhaitez utiliser dans "bert-base-cased". Voir ici pour les modèles entraînés et leurs noms. num_labels est le nombre d'étiquettes Veuillez formater les étiquettes de sorte qu'elles commencent à 0. train_df est un dataframe créé avec des colonnes "text" et "label".
On suppose qu'il existe une trame de données pour le test qui a le même format que la trame de données pour l'apprentissage.
pred, _ = model.predict(test_df['text'])
L'étiquette prédite est sortie vers pred.
La documentation pour simpletransformers est ici (https://simpletransformers.ai/). Il semble qu'il existe de nombreuses autres fonctions, alors essayez de les utiliser. N'oubliez pas que le prétraitement, le post-traitement, etc. sont importants, donc si vous les ignorez cette fois, vous ne pouvez pas vous attendre à une grande précision.