Git Product home page Git Product logo

nlp_datasets's Introduction

Русскоязычные NLP датасеты

В этом репозитории выложены толко датасеты, которые я создавал (обычно автоматически, иногда с ручной правкой) для решения разных задач с текстами на русском языке.

Диалоги и обмены репликами

Диалоги с имиджборд - строго 18+, есть некоторое количество поломанных диалогов, так как отфильтровать их автоматически очень трудно:
часть 1 часть 2 часть 3 часть 4 часть 5 часть 6

Разметка реплик в этих диалогах оценками релевантности и специфичности, файл в формате jsonl, чтобы отбирать самые качественные диалоги:
часть 1 часть 2 часть 3 часть 4 часть 5 часть 6 часть 7 часть 8 часть 9 часть 10 часть 11 часть 12

Код для выполнения разметки: tinkoff_model_dialogues_scoring.py

Чтобы распаковать этот архив, нужно сначала объединить файлы в один:

cat chan_dialogues_scored.zip* > 1.zip

Затем распаковать его и получить 700 Мб json файл:

unzip 1.zip

Диалоги из анекдотов - около 90000 диалогов, собранных с разных развлекательных сайтов. Расширенная версия датасета с другим форматированием доступна тут inkoziev/jokes_dialogues.

Почищенные диалоги Cornell Movie Corpus - почищенные субтитры, много диалогов "с середины"

Диалоги из худлита (флибуста) - около 400 Мб после распаковки:
часть 1 часть 2

Еще русскоязычные диалоги из худлита - более 130 Мб, собранных из художественной литературы и подобных источников. В диалогах есть некоторое, относительное небольшое, количество оставшегося после автоматической чистки мусора.

Пример кода для тренировки читчата на одном из вышеуказанных датасетов: train_chitchat_rugpt.py. В коде надо поправить пути к датасету и каталог, куда будет сохраняться модель, а также скорректировать batch_size.

Проверить натренированный читчат можно с помощью кода run_chitchat_query.py. Например, натренированный на "анекдотах" читчат для запроса "Дай денег в долг" выдаст примерно такие варианты ответа:

[1] -  Откуда у меня деньги?!
[2] -  А ты мне что, должен?
[3] -  А зачем?
[4] -  Что, опять?
[5] -  На себя и детей?
[6] -  У меня денег нет.
[7] -  Откуда у меня деньги?
[8] -  Нет.
[9] -  Не дам!
[10] -  Не дам!

Синтетические пары вопрос-ответ с арифметическими задачами: train test. Значительно расширенный вариант этого датасета с длинными диалогами можно найти в репозитории inkoziev/arithmetic.

Готовую модель генеративного читчата, обученного на части вышеперечисленных датасетов, можно найти здесь: https://huggingface.co/inkoziev/rugpt_chitchat

Перефразировки диалоговых реплик и строк стихотворений

Датасет доступен в репозитории inkoziev/paraphrases. Он используется для тренировки детектора перефразировок inkoziev/sbert_synonymy и для перефразировщика в проекте генеративной поэзии inkoziev/paraphraser.

Короткие предложения и словосочетания.

Датасеты используются для тренировки чат-бота. Они содержат короткие предложения, извлеченные из большого текстового корпуса, а также некоторые паттерны и словосочетания.

Шаблоны предложений с открытыми именными группами

В архиве templates.clause_with_np.100000.zip находится часть датасета с сэмплами следующего вида:

52669	есть#NP,Nom,Sing#.
25839	есть#NP,Nom,Plur#.
18371	NP,Masc,Nom,Sing#пожал#NP,Ins#.
17709	NP,Masc,Nom,Sing#покачал#NP,Ins#.

Первый столбец - частота. Всего было собрано примерно 21 миллион предложений.

Второй столбец содержит результат shallow parsing'а, в котором именные группы заменены подстановочными масками вида NP,тэги. Задается падеж, а также число и грамматический род в случаях, когда это необходимо для правильного согласования с глаголом. Например, запись NP,Nom,Sing описывает группу существительного в именительном падеже и единственном числе. Символ '#' используется как разделитель слов и чанков.

Словосочетания и неполные предложения

Архив PRN+PreposAdj+V.zip содержит сэмплы вида:

Я на автобус опоздаю
Я из автобуса пришел
Мы из автобуса вышли
Я из автобуса вышла
Я из автобуса видел
Я на автобусах езжу
Они на автобусах приезжают
Мы на автобусах объездили

Архив adv+verb.zip содержит пары наречие+глагол в личной форме:

ПРЯМО АРЕСТОВАЛИ
ЛИЧНО атаковал
Немо атаковал
Ровно атаковала
Сегодня АТАКУЕТ
Ближе аттестует
Юрко ахнул

Архив adj+noun.zip содержит сэмплы типа:

ПОЧЕТНЫМ АБОНЕНТОМ
Вашим абонентом
Калининским абонентом
Калининградских аборигенов
Тунисских аборигенов
Байкальских аборигенов
Марсианских аборигенов
Голландские аборигены

Более новая и расширенная версия этого набора, собранная другим способом, находится в архиве patterns.adj_noun.zip. Этот датасет имеет выглядит так:

8	смутное	предчувствие
8	городская	полиция
8	среднеазиатские	государства
8	чудесное	средство
8	<<<null>>>	претендентка
8	испанский	король

Токен <<>> вместо прилагательного означает, что существительное употреблено без атрибутирующего прилагательного. Такие записи нужны для правильной маргинализации частот употребления словосочетаний.

Архив prep+noun.zip содержит такие паттерны:

У аборигенных народов
У аборигенных кобыл
Из аборигенных пород
С помощью аборигенов
На аборигенов
Для аборигенов
От аборигенов
У аборигенов

Архив patterns.noun_gen.zip содержит паттерны из двух существительных, из которых второе в родительном падеже:

4	французские	<<<null>>>
4	дворец	фестивалей
4	названье	мест
4	классы	вагонов
4	доступность	магазина

Обратите внимание, что если в исходном предложении у генитива были подчиненные прилагательные или PP, то они в этом датасете будут удалены. Токен <<>> в столбце генитива обозначает ситуацию, когда первое существительное употреблено без генитива. Эти записи упрощают маргинализацию частот.

Архив patterns.noun_np_gen.zip содержит паттерны из существительного и полного правого генитива:

окно браузера
течение дня
укус медведки
изюминка такой процедуры
суть декларации
рецепт вкусного молочного коктейля
музыка самого высокого уровня

Архив S+V.zip содержит образцы такого вида:

Мы абсолютно не отказали.
Мужчина абсолютно не пострадал.
Они абсолютно совпадают.
Михаил абсолютно не рисковал.
Я абсолютно не выспалась.
Они абсолютно не сочетаются.
Я абсолютно не обижусь...

В архиве S+V+INF.zip находятся такие образцы:

Заславский бахвалился превратить
Ленка бегает поспать
Она бегает умываться
Альбина бегает мерить
Вы бегаете жаловаться
Димка бегал фотографироваться

Архив S+V+INDOBJ.zip содержит автоматически собранные паттерны подлежащее+глагол+предлог+существительное:

Встревоженный аббат пошел навстречу мэру.
Бывший аббат превратился в настоятеля.
Старый Абдуррахман прохаживался возле дома.
Лопоухий абориген по-прежнему был в прострации.
Высокий абориген вернулся с граблями;
Сморщенный абориген сидел за столиком.

В архиве S+V+ACCUS.zip находятся сэмплы такого вида:

Мой агент кинул меня.
Ричард аккуратно поднял Диану.
Леха аккуратно снял Аленку...
Они активируют новые мины!
Адмирал активно поддержал нас.

Архив S+V+INSTR.zip содержит сэмплы:

Я вертел ими
Они вертели ими
Вы вертели мной
Он вертит нами
Она вертит тобой
Она вертит мной
Он вертит ими
Она вертит ими

Архив S+INSTR+V.zip содержит такие сэмплы:

Я тобой брезгую
Они ими бреются
Они ими вдохновляются
Мы ими вертим
Она тобой вертит
Он мной вертит
Он ими вертит

Остальные сэмплы - законченные предложения. Для удобства тренировки диалоговых моделей эти данные разбиты на 3 группы:

Предложения с глаголом в 1-м лице единственного числа

Я только продаю!
Я не курю.
Я НЕ ОТПРАВЛЯЮ!
Я заклеил моментом.
Ездил только я.

Предложения с глаголом в 2-м лице единственного числа

Как ты поступишь?
Ты это читаешь?
Где ты живешь?
Док ты есть.
Ты видишь меня.

Предложения с подлежащим-существительным и глаголом в 3-м лице

Фонарь имел металлическую скобу.
Щенок ищет добрых хозяев.
Массажные головки имеют встроенный нагрев
Бусины переливаются очень красиво!

Предложения в датасетах facts4_1s.txt, facts5_1s.txt, facts5_2s.txt, facts4.txt, facts6_1s.txt, facts6_2s.txt отсортированы с помощью кода sort_facts_by_LSA_tSNE.py. Идея сортировки следующая. Для предложений в файле сначала выполняем LSA, получая векторы длиной 60 (см. константу LSA_DIMS в коде). Затем эти векторы встраиваются в одномерное пространство с помощью t-SNE, так что в итоге для каждого предложения получается действительное число, такое, что декартово-близкие в LSA-пространстве предложения имеют небольшую разность этих tsne-чисел. Далее сортируем предложения согласно t-SNE значения и сохраняем получающийся список.

Предложения в остальных файлах отсортированы программой sort_samples_by_kenlm.py в порядке убывания вероятности. Вероятность предложения получается с помощью предварительно обученной 3-грамной языковой модели KenLM.

Отдельно выложен файл questions_2s.txt с вопросами, содержащими финитный глагол в форме 2 лица единственного числа. Эти вопросы собраны из большого корпуса с текстами, наскрапленными с форумов, субтитрами и так далее. Для удобства сэмплы отсортированы по финитному глаголу:


Берёшь 15 долларов ?
Берёшь денёк на отгул?
Берёшь отпуск за свой счёт?
Берёшь с собой что-нибудь на букву «К»?


Беспокоишься за меня?
Беспокоишься из-за Питера?
Беспокоишься из-за чего?

Вопросы отобраны автоматически с помощью POS Tagger'а и могут содержать небольшое количество ошибочных сэмплов.

Разрешение анафоры (Rucoref-2015)

Задача и датасет описаны на официальной странице соревнования. Исходный датасет, предоставленный организаторами, доступен по ссылке. С помощью скрипта extract_anaphora.py были раскрыты анафоры, в результате чего получился более простой для тренировки чатбота датасет. Например, фрагмент данных:

1	159	Кругом	кругом	R  
1	166	она	она	P-3fsnn	одинокую дачу  
1	170	была	быть	Vmis-sfa-e  
1	175	обнесена	обнесена	Vmps-sfpsp  
1	184	высоким	высокий	Afpmsif  
1	192	забором	забор	Ncmsin  

Видно, что местоимение "она" раскрывается в словосочетание "одинокая дача". Приведение раскрытого словосочетания к правильной грамматической форме оставлено для следующего этапа.

Ударения

Упакованный tsv файл.

Данные собраны для решения задачи конкурса ClassicAI. Использованы открытые данные - Википедия и Викисловарь. В случаях, когда ударение известно только для одной нормальной формы слова (леммы), я использовал таблицы словоизменения в грамматическом словаре и генерировал записи с отметкой ударности. При этом подразумевается, что позиция ударения в слове не меняется при его склонении или спряжении. Для некоторого количества слов в русском языке это не так, например:

р^еки (именительный падеж множественное число)
рек^и (родительный падеж единственное число)

В таких случаях в датасете будет один из вариантов ударения.

Статистика употребляемости слов в группах по 2, 3 и 4 слова

Датасеты содержат числовые оценки того, насколько слова чаще употребляются вместе, чем порознь. Подробности о содержимом и способе получения датасетов см. на отдельной странице.

Сэмплы со сменой грамматического лица

Пары предложений в этих сэмплах могут быть полезны для тренировки моделей в составе чат-бота. Данные выглядят так:

Я часто захожу !	ты часто заходишь !
Я сам перезвоню .	ты сам перезвонишь .
Я Вам перезвоню !	ты Вам перезвонишь !
Я не пью .	ты не пьешь .

В каждой строке находятся два предложения, отделенные символом табуляции.

Вопросы и ответы для чат-ботов

Датасеты сгенерированы автоматически из большого корпуса предложений.

Триады "предпосылка-вопрос-ответ" для предложений длиной 3 слова
Триады "предпосылка-вопрос-ответ" для предложений длиной 4 слова

Пример данных в вышеуказанных файлах:

T: Собственник заключает договор аренды
Q: собственник заключает что?
A: договор аренды

T: Спереди стоит защитное бронестекло
Q: где защитное бронестекло стоит?
A: спереди

Каждая группа предпосылка-вопрос-ответ отделена пустыми строками. Перед предпосылкой стоит метка T:, перед вопросом метка Q:, перед ответом метка A:

Леммы

Датасет с леммами

В архиве - список словоформ и их лемм, взятый из Грамматического Словаря Русского Языка. Некоторое количество (несколько процентов) слов имеют неоднозначную лемматизацию, например РОЙ - глагол РЫТЬ или существительное РОЙ. В таких случаях нужно учитывать контекст слова. К примеру, так работает библиотека для лемматизации rulemma.

NP chunking

Датасет с разметкой

Датасет содержит предложения, в которых выделены NP-чанки. Первое поле в каждой записи содержит метку принадлежности слова:

0 - не принадлежит NP-чанку
1 - начало NP-чанка
2 - продолжение NP-чанка

Разметка получена автоматической конвертацией из dependencies и может содержать некоторые артефакты.

Прочее

Перестановочные перефразировки

Частоты слов с учетом частей речи

Приведение слов к нейтральной форме "штучка-штука"

Корни слов

nlp_datasets's People

Contributors

koziev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nlp_datasets's Issues

Всем привет

15014782e6934a63cb6bacce189ccd727278aa2

Руководство
Примечания к выпуску
набор псевдонимов gh
Создайте ярлык для команды gh

Синопсис
Объявите слово как псевдоним команды, который будет расширяться до указанной команды (команд).

В раскрытии могут быть указаны дополнительные аргументы и флаги. Если расширение включает позиционные заполнители, такие как «$ 1», «$ 2» и т. Д., Любые дополнительные аргументы, следующие за вызовом псевдонима, будут вставлены соответствующим образом.

Если указан '--shell', псевдоним будет запущен через интерпретатор оболочки (sh). Это позволяет вам составлять команды с "|" или перенаправить с помощью ">". Обратите внимание, что дополнительные аргументы, следующие за псевдонимом, не будут автоматически переданы в расширенное выражение. Чтобы псевдоним оболочки принимал аргументы, вы должны явно принять их, используя «$ 1», «$ 2» и т. Д. Или «$ @», чтобы принять их все.

Примечание по платформе: в Windows псевдонимы оболочки выполняются через "sh", установленную Git для Windows. Если вы установили git в Windows каким-либо другим способом, псевдонимы оболочки могут вам не подойти.

При определении команды, как в примерах, всегда следует использовать кавычки.

gh alias set [flags]
Примеры
$ gh alias set pv 'pr view'
$ gh pv -w 123
#=> gh pr view -w 123

$ gh alias set bugs 'issue list --label="bugs"'
$ gh bugs

$ gh alias set homework 'issue list --assigned @me'
$ gh homework

$ gh alias set epicsBy 'issue list --author="$1" --label="epic"'
$ gh epicsBy vilmibm
#=> gh issue list --author="vilmibm" --label="epic"

$ gh alias set --shell igrep 'gh issue list --label="$1" | grep $2'
$ gh igrep epic foo
#=> gh issue list --label="epic" | grep "foo"

Опции
-s, --shell Declare an alias to be passed through a shell interpreter
Параметры, унаследованные от родительских команд
--help Show help for command
Товар
Функции
Безопасность
Предприятие
Истории клиентов
Ценообразование
Ресурсы
Платформа
API разработчика
Партнеры
Атом
Электрон
GitHub Desktop
Поддерживать
Помощь
форум

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.