/preprocessing

Useful scripts for preprocessing .tex files

Primary LanguageTeX

preprocessing

Скрипты для обработки коллекции ММРО.

tex2json.py

Скрипт делает следующее:

  1. Выделяет из *.tex заголовок и автора статьи, а также текст между \maketitle и библиографией.
  2. Очищает текст от элементов LaTeX с помощью detex.
  3. Находит для всех слов начальную форму и часть речи с помощью Mystem (с контекстным снятием омонимии).
  4. Разбивает текст на абзацы.
  5. Разбивает абзацы на предложения с помощью обученного на русских фразах PunktSentenceTokenizer из NLTK.
  6. Собирает всё в JSON-файл следующего формата:
  • В файле содержится единственный документ.
  • Документ – объект с полями title, author и text.
  • В title и author находятся строки с заголовком и автором (авторами) статьи, в text находится массив абзацев.
  • Абзац – массив предложений.
  • Предложение – массив слов.
  • Слово – объект с обязательным полем raw и опциональными полями lex и pos.
  • В raw находится фрагмент исходного документа: слово или символы между слов; в lex находится исходная форма слова; в pos находится метка части речи в формате, используемом в Mystem.

Для корректной работы в папке со скриптом должны лежать:

Также должен быть установлен detex (входит в пакет texlive-extra-utils в Ubuntu).

Пример вызова

python3 tex2json.py tests/*.tex # создаст для каждого файла *.tex файл *.tex.json

json2vpwb.py

Преобразует набор документов в JSON-формате в коллекцию в формате Vowpal Wabbit.

Пример вызова

python3 json2vpwb.py tests/*.json collection.vpwb # создаст коллекцию collection.vpwb в текущей папке.

json2txt.py

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

Пример вызова

python3 json2txt.py tests/*.json collection.vpwb # создаст для каждого файла *.json файл *.json.txt

Полезные ссылки

Коллекция ММРО (UTF-8, юниксовые переводы строк)

Файлы JSON, полученные с помощью текущей версии из ММРО