O Textaugment é uma biblioteca Python 3 para aumentar o texto para aplicações de processamento de linguagem natural. O Textaugment fica sobre os ombros gigantes do NLTK, Gensim v3.x e TextBlob e toca muito bem com eles.
Cite este artigo ao usar esta biblioteca. Versão 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}
}
Melhorando a classificação de texto curto por meio de métodos globais de aumento .
Os pacotes de software a seguir são dependências e serão instalados automaticamente.
$ pip install numpy nltk gensim==3.8.3 textblob googletrans
O código a seguir download NLTK Corpus para WordNet.
nltk . download ( 'wordnet' )O código a seguir Download NLTK Tokenizer. Este tokenizador divide um texto em uma lista de frases usando um algoritmo não supervisionado para criar um modelo para palavras, colocações e palavras de abreviação que iniciem frases.
nltk . download ( 'punkt' )O código do código a seguir Downloads padrão NLTK padrão do tagger de parte do fala. Um tagger de parte da fala processa uma sequência de palavras e anexa uma parte da tag de fala a cada palavra.
nltk . download ( 'averaged_perceptron_tagger' )Use Gensim para carregar um modelo Word2VEC pré-treinado. Como o Google News, do Google Drive.
import gensim
model = gensim . models . KeyedVectors . load_word2vec_format ( './GoogleNews-vectors-negative300.bin' , binary = True )Você também pode usar o Gensim para carregar modelos FastText em inglês e multilíngues do Facebook
import gensim
model = gensim.models.fasttext.load_facebook_model('./cc.en.300.bin.gz')
Ou treinando um do zero usando seus dados ou o seguinte conjunto de dados público:
Text8 wiki
Conjunto de dados de "One bilhão de benchmark de modelagem de idiomas de palavras"
Instale a partir do PIP [recomendado]
$ pip install textaugment
or install latest release
$ pip install [email protected]:dsfsi/textaugment.gitInstale da fonte
$ git clone [email protected]:dsfsi/textaugment.git
$ cd textaugment
$ python setup.py installExistem três tipos de aumentos que podem ser usados:
from textaugment import Word2vec from textaugment import Fasttext from textaugment import Wordnet from textaugment import Translate Veja este caderno para um exemplo
Exemplo básico
> >> 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 goodExemplo avançado
> >> 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 Exemplo básico
> >> 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 townExemplo avançado
> >> 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 .Exemplo
> >> 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
Veja este caderno para um exemplo
Escolha aleatoriamente n palavras da frase que não são palavras de parada. Substitua cada uma dessas palavras por um de seus sinônimos escolhidos aleatoriamente.
Exemplo básico
> >> from textaugment import EDA
> >> t = EDA ()
> >> t . synonym_replacement ( "John is going to town" , top_n = 10 )
John is give out to town Remova aleatoriamente cada palavra na frase com probabilidade p .
Exemplo básico
> >> from textaugment import EDA
> >> t = EDA ()
> >> t . random_deletion ( "John is going to town" , p = 0.2 )
is going to town Escolha aleatoriamente duas palavras na frase e troque suas posições. Faça isso N vezes.
Exemplo básico
> >> from textaugment import EDA
> >> t = EDA ()
> >> t . random_swap ( "John is going to town" )
John town going to is Encontre um sinônimo aleatório de uma palavra aleatória na frase que não é uma palavra de parada. Insira esse sinônimo em uma posição aleatória na frase. Faça isso N vezes
Exemplo básico
> >> from textaugment import EDA
> >> t = EDA ()
> >> t . random_insertion ( "John is going to town" )
John is going to make up townEsta é a implementação de Aeda por Karimi et al, uma variante da EDA. É baseado na inserção aleatória dos marcos de pontuação.
https://aclanthology.org/2021.findings-emnlp.234.pdf
Veja este caderno para um exemplo
Exemplo básico
> >> from textaugment import AEDA
> >> t = AEDA ()
> >> t . punct_insertion ( "John is going to town" )
! John is going to townEsta é a implementação do aumento da mistura de Hongyi Zhang, Moustapha Cisse, Yann Dauphin, David Lopez-Paz adaptado à PNL.
Utilizado no aumento de dados com a Mixup para classificação de frases: um estudo empírico.
A mistura é um princípio genérico e direto de aumento de dados. Em essência, a mistura treina uma rede neural em combinações convexas de pares de exemplos e seus rótulos. Ao fazer isso, a mistura regulariza a rede neural para favorecer o comportamento linear simples entre os exemplos de treinamento.
Veja este caderno para um exemplo
Cite este artigo ao usar esta biblioteca. Versão 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 licenciado. Consulte o arquivo de licença empacotado para obter mais detalhes.