LineFlow: Framework-Agnostic NLP Data Loader в Python
LineFlow — это простой загрузчик наборов данных для задач глубокого обучения в области обработки естественного языка (NLP). Он предназначен для использования во всех фреймворках глубокого обучения. LineFlow позволяет создавать конвейеры с помощью функциональных API (map
, filter
, flat_map
).
Основные возможности:
Пример использования:
>>> import lineflow.datasets as lfds
>>> train = lfds.PennTreebank('train')
>>> train.first()
'aer banknote berlitz calloway centrust cluett fromstein gitano guterman hydro-quebec ipo kia memotec mlx nahb punts rake regatta rubens sim snack-food ssangyong swapo wachter'
>>> # продолжение из предыдущего примера
>>> train = train.map(str.split)
>>> train.first()
['aer', 'banknote', 'berlitz', 'calloway', 'centrust', 'cluett', 'fromstein', 'gitano', 'guterman', 'hydro-quebec', 'ipo', 'kia', 'memotec', 'mlx', 'nahb', 'punts', 'rake', 'regatta', 'rubens', 'sim', 'snack-food', 'ssangyong', 'swapo', 'wachter']
>>> # продолжение из предыдущего примера
>>> words = train.flat_map(lambda x: x)
>>> words.take(5) # Это полезно для создания словаря.
['aer', 'banknote', 'berlitz', 'calloway', 'centrust']
Для установки LineFlow используется команда pip install lineflow.
Также в статье рассказывается о поддержке различных наборов данных, таких как Commonsense Reasoning, Language Modeling, Machine Translation, Paraphrase, Question Answering, Sentiment Analysis, Sequence Tagging и Text Summarization. Перевод текста на русский язык:
lfds.PennTreebank('train')
dev = lfds.PennTreebank('dev') test = lfds.PennTreebank('test')
#### [WikiText-103](https://blog.einstein.ai/the-wikitext-long-term-dependency-language-modeling-dataset/)
Загружает набор данных WikiText-103:
```py
import lineflow.datasets as lfds
train = lfds.WikiText103('train')
dev = lfds.WikiText103('dev')
test = lfds.WikiText103('test')
Этот набор данных предварительно обработан, поэтому вы можете токенизировать каждую строку с помощью str.split
:
>>> import lineflow.datasets as lfds
>>> train = lfds.WikiText103('train').flat_map(lambda x: x.split() + ['<eos>'])
>>> train.take(5)
['<eos>', '=', 'Valkyria', 'Chronicles', 'III']
Загружает набор данных WikiText-2:
import lineflow.datasets as lfds
train = lfds.WikiText2('train')
dev = lfds.WikiText2('dev')
test = lfds.WikiText2('test')
Этот набор данных предварительно обработан, поэтому вы можете токенизировать каждую строку с помощью str.split
:
>>> import lineflow.datasets as lfds
>>> train = lfds.WikiText2('train').flat_map(lambda x: x.split() + ['<eos>'])
>>> train.take(5)
['<eos>', '=', 'Valkyria', 'Chronicles', 'III']
Загружает небольшой англо-японский параллельный корпус small_parallel_enja:
import lineflow.datasets as lfds
train = lfds.SmallParallelEnJa('train')
dev = lfds.SmallParallelEnJa('dev')
test = lfd.SmallParallelEnJa('test')
Этот набор данных предварительно обработан, поэтому можно токенизировать каждую строку с помощью str.split
:
>>> import lineflow.datasets as lfds
>>> train = lfds.SmallParallelEnJa('train').map(lambda x: (x[0].split(), x[1].split()))
>>> train.first()
(['i', 'can', "'t", 'tell', 'who', 'will', 'arrive', 'first', '.'], ['誰', 'が', '一番', 'に', '着', 'く', 'か', '私', 'に', 'は', '分か', 'り', 'ま', 'せ', 'ん', '。']
Загружает корпус парафраза Microsoft Research:
import lineflow.datasets as lfds
train = lfds.MsrParaphrase('train')
test = lfds.MsrParaphrase('test')
Элемент в этом наборе данных выглядит следующим образом:
>>> import lineflow.datasets as lfds
>>> train = lfds.MsrParaphrase('train')
>>> train.first()
{'quality': '1',
'id1': '702876',
'id2': '702977',
'string1': 'Amrozi accused his brother, whom he called "the witness", of deliberately distorting his evidence.',
'string2': 'Referring to him as only "the witness", Amrozi accused his brother of deliberately distorting his evidence.'
}
Загружает набор данных SQuAD:
import lineflow.datasets as lfds
train = lfds.Squad('train')
dev = lfds.Squad('dev')
Элемент этого набора данных выглядит так:
>>> import lineflow.datasets as lfds
>>> train = lfds.Squad('train')
>>> train.first()
{'answers': [{'answer_start': 515, 'text': 'Saint Bernadette Soubirous'}],
'question': 'To whom did the Virgin Mary allegedly appear in 1858 in Lourdes France?',
'id': '5733be284776f41900661182',
'title': 'University_of_Notre_Dame',
'context': 'Architecturally, the school has a Catholic character. Atop the Main Building\'s gold dome is a golden statue of the Virgin Mary. Immediately in front of the Main Building and facing it, is a copper statue of Christ with arms upraised with the legend "Venite Ad Me Omnes". Next to the Main Building is the Basilica of the Sacred Heart. Immediately behind the basilica is the Grotto, a Marian place of prayer and reflection. It is a replica of the grotto at Lourdes, France where the Virgin Mary reputedly appeared to Saint Bernadette Soubirous in 1858. At the end of the main drive (and in a direct line that connects through 3 statues and the Gold Dome), is a simple, modern stone statue of Mary.'}
Загружает IMDB. dataset:
импорт lineflow.datasets как lfds
поезд = lfds.Imdb('поезд')
тест = lfds.Imdb('тест')
Элемент этого набора данных выглядит следующим образом:
>>> импорт lineflow.datasets как lfds
>>> поезд = lfds.Imbd('поезд')
>>> поезд.первый()
('Для фильма, который не уважают, есть много запоминающихся цитат, перечисленных для этой жемчужины. Представьте себе фильм, в котором Джо Пископо на самом деле забавен! Морин Стэплтон — воровка сцены. Персонаж Мороний — это абсолютный крик. Следите за Аланом «Шкипером» Хейлом-младшим в роли полицейского сержанта.', 0)
Загружает набор данных CoNLL2000:
импорт lineflow.datasets как lfds
поезд = lfds.Conll2000('поезд')
тест = lfds.Conll2000('тест')
Загружает набор данных CNN / Daily Mail:
импорт lineflow.datasets как lfds
поезд = lfds.CnnDailymail('поезд')
разработка = lfds.CnnDailymail('разработка')
тест = lfds.CnnDailymail('тест')
Этот набор данных предварительно обработан, поэтому вы можете токенизировать каждую строку с помощью str.split
:
>>> импорт lineflow.datasets как lfds
>>> поезд = lfds.CnnDailymail('поезд').map(лямбда x: (x[0].split(), x[1].split()))
>>> поезд.первый()
... # вывод опущен, потому что он слишком длинный для отображения здесь.
Загружает набор данных TLDR:
импорт lineflow.datasets как lfds
поезд = lfds.SciTLDR('поезд')
разработка = lfds.SciTLDR('разработка')
тест = lfds.SciTLDR('тест')
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )