TextAugment est une bibliothèque Python 3 pour augmenter le texte pour les applications de traitement du langage naturel. TextAugment se dresse sur les épaules géantes de NLTK, Gensim V3.x et TextBlob et joue bien avec eux.
Citez cet article lorsque vous utilisez cette bibliothèque. Version arxiv
@inproceedings{marivate2020improving,
title={Improving short text classification through global augmentation methods},
author={Marivate, Vukosi and Sefara, Tshephisho},
booktitle={International Cross-Domain Conference for Machine Learning and Knowledge Extraction},
pages={385--399},
year={2020},
organization={Springer}
}
Amélioration de la classification de texte courte grâce à des méthodes d'augmentation globales .
Les packages logiciels suivants sont des dépendances et seront installés automatiquement.
$ pip install numpy nltk gensim==3.8.3 textblob googletrans
Le code suivant télécharge NLTK Corpus pour WordNet.
nltk . download ( 'wordnet' )Le code suivant télécharge NLTK Tokenizer. Ce tokenizer divise un texte en une liste de phrases en utilisant un algorithme non supervisé pour construire un modèle pour les mots d'abréviation, les collocations et les mots qui commencent les phrases.
nltk . download ( 'punkt' )Le code suivant télécharge le modèle de tagger par défaut par défaut NLTK. Une partie du tagger de discours traite une séquence de mots et attache une partie de la balise de la parole à chaque mot.
nltk . download ( 'averaged_perceptron_tagger' )Utilisez Gensim pour charger un modèle Word2Vec pré-formé. Comme Google News de Google Drive.
import gensim
model = gensim . models . KeyedVectors . load_word2vec_format ( './GoogleNews-vectors-negative300.bin' , binary = True )Vous pouvez également utiliser Gensim pour charger les modèles anglais et multilingues de Facebook
import gensim
model = gensim.models.fasttext.load_facebook_model('./cc.en.300.bin.gz')
Ou la formation à partir de zéro à l'aide de vos données ou de l'ensemble de données publique suivant:
Wiki text8
Ensemble de données à partir de "Billion Word Language Modeling Benchmark"
Installer à partir de PIP [recommandé]
$ pip install textaugment
or install latest release
$ pip install [email protected]:dsfsi/textaugment.gitInstaller à partir de la source
$ git clone [email protected]:dsfsi/textaugment.git
$ cd textaugment
$ python setup.py installIl existe trois types d'augmentations qui peuvent être utilisées:
from textaugment import Word2vec from textaugment import Fasttext from textaugment import Wordnet from textaugment import Translate Voir ce cahier pour un exemple
Exemple de base
> >> from textaugment import Word2vec , Fasttext
> >> t = Word2vec ( model = 'path/to/gensim/model' or 'gensim model itself' )
> >> t . augment ( 'The stories are good' )
The films are good
> >> t = Fasttext ( model = 'path/to/gensim/model' or 'gensim model itself' )
> >> t . augment ( 'The stories are good' )
The films are goodExemple avancé
> >> runs = 1 # By default.
> >> v = False # verbose mode to replace all the words. If enabled runs is not effective. Used in this paper (https://www.cs.cmu.edu/~diyiy/docs/emnlp_wang_2015.pdf)
> >> p = 0.5 # The probability of success of an individual trial. (0.1<p<1.0), default is 0.5. Used by Geometric distribution to selects words from a sentence.
> >> word = Word2vec ( model = 'path/to/gensim/model' or 'gensim model itself' , runs = 5 , v = False , p = 0.5 )
> >> word . augment ( 'The stories are good' , top_n = 10 )
The movies are excellent
> >> fast = Fasttext ( model = 'path/to/gensim/model' or 'gensim model itself' , runs = 5 , v = False , p = 0.5 )
> >> fast . augment ( 'The stories are good' , top_n = 10 )
The movies are excellent Exemple de base
> >> import nltk
> >> nltk . download ( 'punkt' )
> >> nltk . download ( 'wordnet' )
> >> from textaugment import Wordnet
> >> t = Wordnet ()
> >> t . augment ( 'In the afternoon, John is going to town' )
In the afternoon , John is walking to townExemple avancé
> >> v = True # enable verbs augmentation. By default is True.
> >> n = False # enable nouns augmentation. By default is False.
> >> runs = 1 # number of times to augment a sentence. By default is 1.
> >> p = 0.5 # The probability of success of an individual trial. (0.1<p<1.0), default is 0.5. Used by Geometric distribution to selects words from a sentence.
> >> t = Wordnet ( v = False , n = True , p = 0.5 )
> >> t . augment ( 'In the afternoon, John is going to town' , top_n = 10 )
In the afternoon , Joseph is going to town .Exemple
> >> src = "en" # source language of the sentence
> >> to = "fr" # target language
> >> from textaugment import Translate
> >> t = Translate ( src = "en" , to = "fr" )
> >> t . augment ( 'In the afternoon, John is going to town' )
In the afternoon John goes to townhttps://www.aclweb.org/anthology/d19-1670.pdf
Voir ce cahier pour un exemple
Choisissez au hasard n mots dans la phrase qui ne sont pas des mots d'arrêt. Remplacez chacun de ces mots par l'un de ses synonymes choisis au hasard.
Exemple de base
> >> from textaugment import EDA
> >> t = EDA ()
> >> t . synonym_replacement ( "John is going to town" , top_n = 10 )
John is give out to town Supprimez au hasard chaque mot de la phrase avec probabilité p .
Exemple de base
> >> from textaugment import EDA
> >> t = EDA ()
> >> t . random_deletion ( "John is going to town" , p = 0.2 )
is going to town Choisissez au hasard deux mots dans la phrase et échangez leurs positions. Faites cela n fois.
Exemple de base
> >> from textaugment import EDA
> >> t = EDA ()
> >> t . random_swap ( "John is going to town" )
John town going to is Trouvez un synonyme aléatoire d'un mot aléatoire dans la phrase qui n'est pas un mot d'arrêt. Insérez ce synonyme en position aléatoire dans la phrase. Faites ça n fois
Exemple de base
> >> from textaugment import EDA
> >> t = EDA ()
> >> t . random_insertion ( "John is going to town" )
John is going to make up townIl s'agit de la mise en œuvre d'AEDA par Karimi et al, une variante d'EDA. Il est basé sur l'insertion aléatoire des marques de ponctuation.
https://aclanthology.org/2021.findings-emllp.234.pdf
Voir ce cahier pour un exemple
Exemple de base
> >> from textaugment import AEDA
> >> t = AEDA ()
> >> t . punct_insertion ( "John is going to town" )
! John is going to townIl s'agit de la mise en œuvre de l'augmentation de la mélange par Hongyi Zhang, Moustapha Cisse, Yann Dauphin, David Lopez-Paz adapté à la PNL.
Utilisé dans l'augmentation des données avec une mélange pour la classification des phrases: une étude empirique.
Le mélange est un principe générique et simple d'augmentation des données. Essentiellement, Mixup forme un réseau neuronal sur les combinaisons convexes de paires d'exemples et leurs étiquettes. Ce faisant, le mélange régulise le réseau neuronal pour favoriser un comportement linéaire simple entre les exemples de formation.
Voir ce cahier pour un exemple
Citez cet article lorsque vous utilisez cette bibliothèque. Version arxiv
@inproceedings{marivate2020improving,
title={Improving short text classification through global augmentation methods},
author={Marivate, Vukosi and Sefara, Tshephisho},
booktitle={International Cross-Domain Conference for Machine Learning and Knowledge Extraction},
pages={385--399},
year={2020},
organization={Springer}
}
MIT sous licence. Voir le fichier de licence groupé pour plus de détails.