Textaugment - это библиотека Python 3 для дополнения текста для приложений обработки естественного языка. Textaugment стоит на гигантских плечах NLTK, Gensim v3.x и TextBlob и хорошо играет с ними.
Пригласите эту статью при использовании этой библиотеки. Версия 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}
}
Улучшение короткой текстовой классификации с помощью глобальных методов увеличения .
Следующие программные пакеты являются зависимостями и будут установлены автоматически.
$ pip install numpy nltk gensim==3.8.3 textblob googletrans
Следующий код загружает NLTK Corpus для Wordnet.
nltk . download ( 'wordnet' )Следующий код скачивает NLTK Tokenizer. Этот токенизатор делит текст в список предложений, используя неконтролируемый алгоритм для создания модели для сокращения слов, колокатов и слов, которые начинают предложения.
nltk . download ( 'punkt' )Следующая загрузка кода по умолчанию модель теггера чар-речи. Часть речи тегат обрабатывает последовательность слов и прикрепляет часть речевой теги к каждому слову.
nltk . download ( 'averaged_perceptron_tagger' )Используйте gensim для загрузки предварительно обученной модели Word2VEC. Как Google News от Google Drive.
import gensim
model = gensim . models . KeyedVectors . load_word2vec_format ( './GoogleNews-vectors-negative300.bin' , binary = True )Вы также можете использовать Gensim для загрузки быстрого текста Facebook и многоязычных моделей
import gensim
model = gensim.models.fasttext.load_facebook_model('./cc.en.300.bin.gz')
Или обучение одного с нуля, используя ваши данные или следующего открытого набора данных:
Текст8 Вики
Набор данных из «Определенного эталона моделирования языка слов на один миллиард»
Установите из PIP [Рекомендуется]
$ pip install textaugment
or install latest release
$ pip install [email protected]:dsfsi/textaugment.gitУстановите из источника
$ git clone [email protected]:dsfsi/textaugment.git
$ cd textaugment
$ python setup.py installЕсть три типа увеличения, которые можно использовать:
from textaugment import Word2vec from textaugment import Fasttext from textaugment import Wordnet from textaugment import Translate Смотрите этот записной книжку для примера
Основной пример
> >> 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 goodРасширенный пример
> >> 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 Основной пример
> >> 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 townРасширенный пример
> >> 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 .Пример
> >> 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
Смотрите этот записной книжку для примера
Случайно выбирайте n слов из предложения, которые не останавливают слова. Замените каждое из этих слов одним из его синонимов, выбранных случайным образом.
Основной пример
> >> from textaugment import EDA
> >> t = EDA ()
> >> t . synonym_replacement ( "John is going to town" , top_n = 10 )
John is give out to town Случайно удалить каждое слово в предложении с вероятностью с .
Основной пример
> >> from textaugment import EDA
> >> t = EDA ()
> >> t . random_deletion ( "John is going to town" , p = 0.2 )
is going to town Случайно выбирайте два слова в предложении и поменяйте их позиции. Сделай это в время.
Основной пример
> >> from textaugment import EDA
> >> t = EDA ()
> >> t . random_swap ( "John is going to town" )
John town going to is Найдите случайный синоним случайного слова в предложении, которое не является остановским словом. Вставьте этот синоним в случайную позицию в предложении. Сделай это в время
Основной пример
> >> from textaugment import EDA
> >> t = EDA ()
> >> t . random_insertion ( "John is going to town" )
John is going to make up townЭто реализация AEDA Карими и др., Вариант EDA. Он основан на случайной вставке знаков пунктуации.
https://aclanthology.org/2021.findings-emnlp.234.pdf
Смотрите этот записной книжку для примера
Основной пример
> >> from textaugment import AEDA
> >> t = AEDA ()
> >> t . punct_insertion ( "John is going to town" )
! John is going to townЭто реализация увеличения смешивания Хонги Чжан, Мустафа Сиссе, Янна Дофина, Дэвида Лопеса-Паза, адаптированного к НЛП.
Используется при дополнении данных с помощью смешивания для классификации предложений: эмпирическое исследование.
Mixup - это общий и простой принцип увеличения данных. По сути, смешивание обучает нейронную сеть на выпуклые комбинации пар примеров и их ярлыков. Таким образом, Mixup регулирует нейронную сеть, чтобы поддержать простое линейное поведение между примерами обучения.
Смотрите этот записной книжку для примера
Пригласите эту статью при использовании этой библиотеки. Версия 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 лицензирован. Смотрите в комплекте лицензии в комплекте.