View all files | ||||
Настраиваемый пайплайн для очистки текстовых датасетов от мусора (некорректный язык, бранная речь, HTML-теги и т.д.). Список обработчиков для очистки можно комбинировать и настраивать на свой вкус с помощью конфигурационного файла в YAML формате.
Использовалось на Ubuntu 18.04 с Python 3.7.
Для запуска нужно установить этот пакет, чтобы получить cli-команду, с помощью которой можно творить чудеса:
Запустить обработку файлов можно внутри Docker контейнера.
Предоставляются следующие volumes:
Примеры использования
В данном инструменте предусмотрено 3 стадии обработки:
Все обработчики (processors) делятся на 2 типа:
У любого из них могут быть обязательные и опциональные параметры, которые задаются в конфигурационном файле.
Построчный обработчик для добавления текста в конец каждой строки.
| text | Да | str | - | Текст для добавления в конец строки. |
Построчный обработчик для добавления текста в начало каждой строки.
| text | Да | str | - | Текст для добавления в начало строки. |
Построчный обработчик для очистки HTML-тегов. По умолчанию включается только если в строке есть оба символа: < и >.
| or_condition | Нет | bool | False | True - обрабатывать есть ли есть хотя бы один из символов: < и >. False - когда обязательно есть оба. |
Построчный обработчик для очистки различных utf-8 и непечатных символов и замены их на ASCII-эквиваленты.
Обрабатывает следующие виды символов:
Построчный обработчик для определения языка текста через библиотеку fastText, с использованием их предобученной или собственной модели. Если строка имеет язык отличный от заданого, то она пропускается (выкидывается) и не будет участвовать в других обработчиках.
| language_code | Да | str | - | Ожидаемый код языка (ru, en и т.д.). Список поддерживаемых языков |
| threshold | Нет | float | 0.9 | Пороговое значение, ниже которого считается что язык определён некорректно. |
| model_path | Нет | str | `` | Путь на диске к модели (если не указано, то скачается официальная). |
| model_url | Нет | str | `` | URL кастомной модели (если указано, то скачается за место официальной). |
| delimiter | Нет | str | `` | Разделитель в тексте. Если у вас TSV и нужно определить язык только выбранного столбца. |
| delimited_position | Нет | int | -1 | Позиция столбца после разделения строки с помощью .split. По дефолту - последний. |
Построчный обработчик для замены или удаления строк, которые имеют один из символов валюты.
| mode | Нет | str | remove_line | Что делать со строкой: remove_line - удалить (выбросить), replace - заменить найденные совпадения. |
| replace_with | Нет | str | [пробел] | На что заменять, если выбран режим replace. |
Построчный обработчик для замены или удаления строк, содержащих email-адрес.
| mode | Нет | str | remove_line | Что делать со строкой: remove_line - удалить (выбросить), replace - заменить найденные совпадения. |
| replace_with | Нет | str | [пробел] | На что заменять, если выбран режим replace. |
Построчный обработчик для замены или удаления строк, содержащих emoji.
| mode | Нет | str | remove_line | Что делать со строкой: remove_line - удалить (выбросить), replace - заменить найденные совпадения. |
| replace_with | Нет | str | [пробел] | На что заменять, если выбран режим replace. |
Построчный обработчик для замены или удаления строк, содержащих #хэштеги.
| mode | Нет | str | remove_line | Что делать со строкой: remove_line - удалить (выбросить), replace - заменить найденные совпадения. |
| replace_with | Нет | str | [пробел] | На что заменять, если выбран режим replace. |
Построчный обработчик для удаления строк, которые длиннее заданного порога.
| threshold | Да | int | `` | Пороговое значение, выше которого все строки выбрасываются. |
| delimiter | Нет | str | `` | Разделитель в тексте. Если у вас TSV и нужно определить язык только выбранного столбца. |
| delimited_position | Нет | int | -1 | Позиция столбца после разделения строки с помощью .split. По дефолту - последний. |
Построчный обработчик для удаления строк, которые короче заданного порога.
| threshold | Да | int | `` | Пороговое значение, ниже которого все строки выбрасываются. |
| delimiter | Нет | str | `` | Разделитель в тексте. Если у вас TSV и нужно определить язык только выбранного столбца. |
| delimited_position | Нет | int | -1 | Позиция столбца после разделения строки с помощью .split. По дефолту - последний. |
Построчный обработчик для замены или удаления строк, содержащих числа вне контекста слов.
| mode | Нет | str | remove_line | Что делать со строкой: remove_line - удалить (выбросить), replace - заменить найденные совпадения. |
| replace_with | Нет | str | [пробел] | На что заменять, если выбран режим replace. |
Построчный обработчик для замены или удаления строк, содержащих телефонные номера.
| mode | Нет | str | remove_line | Что делать со строкой: remove_line - удалить (выбросить), replace - заменить найденные совпадения. |
| replace_with | Нет | str | [пробел] | На что заменять, если выбран режим replace. |
Построчный обработчик для замены или удаления строк, содержащих стоп-слова (список языков и слов см. ниже).
| language_code | Да | str | - | Ожидаемый код языка (ru, en и т.д.). Список поддерживаемых языков. |
| mode | Нет | str | remove_line | Что делать со строкой: remove_line - удалить (выбросить), replace - заменить найденные совпадения. |
| replace_with | Нет | str | [пробел] | На что заменять, если выбран режим replace. |
Построчный обработчик для замены или удаления строк, содержащих URL-адреса.
| mode | Нет | str | remove_line | Что делать со строкой: remove_line - удалить (выбросить), replace - заменить найденные совпадения. |
| replace_with | Нет | str | [пробел] | На что заменять, если выбран режим replace. |
Построчный обработчик для замены или удаления строк, содержащих @юзернеймы.
| mode | Нет | str | remove_line | Что делать со строкой: remove_line - удалить (выбросить), replace - заменить найденные совпадения. |
| replace_with | Нет | str | [пробел] | На что заменять, если выбран режим replace. |
Построчный обработчик для смены регистра.
| mode | Да | str | - | Варианты: title - делает первую букву во всех словах заглавной; lower - понижает регистр; upper - повышает регистр. |
Построчный обработчик для удаления стартовых и конечных пробельных символов.
Построчный обработчик для исправления слов в тексте, которые были разделены дефисом для переноса слов по слогам в конце строки. Объединяет кусочки слов воедино, убирая дефис и пробелы.
Построчный обработчик для исправления одинарных и двойных кавычек, а также апострофов до их ASCII-эквивалентов.
Построчный обработчик для удаления повторяющихся пунктуационных символов. Обрабатывает следующий список символов: !"#$%&\'()*+,-/:;<=>?@[\\]^_``{|}~, а также исправляет многоточие в строках (превращает .. в ... и если есть 4 подряд повторяющихся точки, то заменяет их в многоточие).
Построчный обработчик для исправления юникодных символов в тексте в их канонический вид.
| form | Да | str | NFKC | Формы преобразования: NFC, NFKC, NFD, NFKD. Подробнее о формах. |
Построчный обработчик для исправления: смежных пробелов нулевой ширины на пустую строку; перевода каретки в Windows-стиле (\r\n) и перевода каретки с вертикальной табуляцией (\n\v) на простой перевод каретки \n; пробельных символов без переноса каретки на одинарный пробел; и удаления стартовых/конечных пробелов в строке.
Построчный обработчик для транслитерации юникодных символов в ASCII-эквиваленты.
Построчный обработчик для удаления строк с матерной речью на английском языке.
| threshold | Нет | float | 0.9 | Пороговое значение, выше которого считается что в строке есть бранная речь. |
Файловый обработчик для перемешивания строк. Используется системная реалзация GNU shuf.
Файловый обработчик для удаления повторов в строках. Используются системные реализации BSD sort и uniq.
К существующим скриптам препроцессинга хочется допилить:
Список людей, которые делают этот мир и данный инструмент – лучше :)
Большое спасибо за вклад в развитие TextDatasetCleaner!