1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-LineFlow

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

LineFlow: Framework-Agnostic NLP Data Loader в Python

LineFlow — это простой загрузчик наборов данных для задач глубокого обучения в области обработки естественного языка (NLP). Он предназначен для использования во всех фреймворках глубокого обучения. LineFlow позволяет создавать конвейеры с помощью функциональных API (map, filter, flat_map).

Основные возможности:

  • LineFlow был вдохновлён библиотеками tensorflow.data.Dataset и chainer.dataset.
  • lineflow.TextDataset ожидает текстовые файлы, ориентированные на строки.
  • Пример использования:
    • импорт библиотеки lineflow;
    • создание объекта TextDataset;
    • получение первого элемента набора данных с помощью метода first();
    • получение всех элементов набора данных с помощью метода all();
    • определение длины набора данных с помощью len();
    • применение функции map для преобразования элементов набора данных.

Пример использования:

  • Загрузка набора данных Penn Treebank:
>>> 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](https://blog.einstein.ai/the-wikitext-long-term-dependency-language- modeling-dataset/) (Добавлено @sobamchan, спасибо.)

Загружает набор данных 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:

Загружает небольшой англо-японский параллельный корпус 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 Paraphrase Corpus:

Загружает корпус парафраза 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:

Загружает набор данных 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:

Загружает IMDB. dataset:

импорт lineflow.datasets как lfds

поезд = lfds.Imdb('поезд')
тест = lfds.Imdb('тест')

Элемент этого набора данных выглядит следующим образом:

>>> импорт lineflow.datasets как lfds
>>> поезд = lfds.Imbd('поезд')
>>> поезд.первый()
('Для фильма, который не уважают, есть много запоминающихся цитат, перечисленных для этой жемчужины. Представьте себе фильм, в котором Джо Пископо на самом деле забавен! Морин Стэплтон — воровка сцены. Персонаж Мороний — это абсолютный крик. Следите за Аланом «Шкипером» Хейлом-младшим в роли полицейского сержанта.', 0)

Пометка последовательностей

CoNLL2000 (https://www.clips.uantwerpen.be/conll2000/chunking/)

Загружает набор данных CoNLL2000:

импорт lineflow.datasets как lfds

поезд = lfds.Conll2000('поезд')
тест = lfds.Conll2000('тест')

Сжатие текста

CNN / Daily Mail (https://github.com/harvardnlp/sent-summary):

Загружает набор данных 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()))
>>> поезд.первый()
... # вывод опущен, потому что он слишком длинный для отображения здесь.

SciTLDR (https://github.com/allenai/scitldr)

Загружает набор данных TLDR:

импорт lineflow.datasets как lfds

поезд = lfds.SciTLDR('поезд')
разработка = lfds.SciTLDR('разработка')
тест = lfds.SciTLDR('тест')

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

LineFlow — это легковесный загрузчик данных для NLP, который подходит для всех фреймворков глубокого обучения в Python. Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mirrors-LineFlow.git
git@api.gitlife.ru:oschina-mirror/mirrors-LineFlow.git
oschina-mirror
mirrors-LineFlow
mirrors-LineFlow
master