[PYTHON] Quoi qu'il en soit, classez immédiatement le langage naturel [simple transformateur, transformateur]

Quoi qu'il en soit, je veux classer la ligne la plus basse du langage naturel (texte)

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.

Installation

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.

Installer pytorch

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

Installation de transformateurs simples

Je ne pense pas que de simples transformateurs puissent être réalisés avec conda.

pip install simpletransformers

Installation facultative (wandb) (facultative)

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

comment utiliser

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".

Réglage de chaque paramètre

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.

Code utilisé pour 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".

Méthode d'inférence

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.

Résumé

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.

Recommended Posts

Quoi qu'il en soit, classez immédiatement le langage naturel [simple transformateur, transformateur]
Langage naturel: GPT - Transformateur de pré-formation génératif japonais
Natural Language: Machine Translation Part2 - Transformateur de traduction automatique neurale
Python: traitement du langage naturel
RNN_LSTM2 Traitement du langage naturel