Git Product home page Git Product logo

dialogs_data_parsers's Introduction

Dialogs Data Parsers

Репозиторий для парсинга диалоговых данных. Только для исследовательских целей!

pip install -U -e .

Pikabu

Parsing

Для сбора и парсинга данных с pikabu нужно сперва собрать ссылки на истории:

python scripts/crawl_pikabu_story_links.py --root_dir path/to/output/dir 
  • --root_dir - Путь к root директории, в которой будут лежать результаты парсинга.

Остальные аргументы можно посмотреть в скрипте (для них есть дефолтные значения).

После того, как ссылки на истории собраны, можно запускать парсер:

python scripts/crawl_pikabu_stories.py --root_dir path/to/output/dir 
  • --root_dir - Путь к root директории, в которой лежат ссылки на истории (тот же самый путь, что указывали в предыдущем скрипте).

Парсинг всего pikabu длится примерно неделю. Скрипт устойчив к прерываниям. Если по какой-то причине парсинг прервался, то его можно перезапустить, указав тот же самый --root_dir. Парсинг продолжится с того же места, где был прерван.

Data format

Результатом парсинга pikabu является jsonl файл. Каждая строчка - отдельный json со структурой (пример изображён с индентацией, но в настоящем файле этот Json будет записан в одну строку):

{
 "url": "story url",
 "story": {
  "title": "story title",
  "text": "story text",
  "user_nick": "story author",
  "tags": ["tag1", "tag2", "tag3"],
  "comments_count": 42,
  "shares": 10,
  "saves": 228,
  "timestamp": "2017-04-21T11:38:56+03:00",
  "rating": 5
 },
 "comments": {
  "8811": {
   "text": "comment text",
   "parent_id": 0,
   "children": [8812, 8813]
  },
  "8812": {
   "text": "comment text",
   "parent_id": 8811,
   "children": [8814, 8815, 8816] 
  }
 }
}

Несколько важных моментов:

  • Ключи в словаре comments - это id комментариев. Как ключи, они имеют текстовый формат, однако, id, которые записаны в поля parent_id и children - имеют integer тип. Учитывайте это во время парсинга файла.
  • Если у комментария parent_id равен 0, то это значит, что у комментария нет родителя (в данном случае саму историю можно воспринимать как родителя).
  • Комментарии хранятся в формате дерева. Такой формат можно распарсить в виде диалогов. Пример парсера в examples/pikabu_dialogs_iterator

Flibusta

Parsing

Для того, чтобы распарсить диалоги из книг с флибусты нужен дамп книг. Ссылку на дамп я здесь, разумеется, прикладывать не буду :)

Дапм представляет из себя директорию с множеством .zip архивов примерно с такими названиями: f.fb2-188228-190111.zip. Каждый архив в свою очередь содержит множество файлов формата fb2.

Для парсинга диалогов используется скрипт:

python parse_flibusta_dialogs.py --flibusta_archives_dir path/to/flibusta/dir/with/archives --out_file_path path/to/dialogs/results/file --logs_dir path/to/logs/dir
  • --flibusta_archives_dir - Путь к root директории со всеми архивами;
  • --out_file_path - Путь к выходному jsonl файлу с диалогами;
  • --logs_dir - Путь к директории, куда будут писаться логи.

Парсинг 130 архивов длится примерно 13 часов и это примерно 40-50 миллионов диалогов. Можно переписать на мультипроцессинге и парсинг будет за 2 часа. Но мне лень.

Data format

Результатом парсинга flibusta является jsonl файл. Каждая строчка этого файла - просто список сообщений:

["Привет, как дела?", "Нормально", "Ясно, понятно"]

По идее, в этих данных должны быть отфильтрованы слова автора, но возможно иногда они будут попадаться. Плюс, возможны другие аномалии. Но беглый ручной осмотр пары сотен диалогов ничего странного не выявил.

dialogs_data_parsers's People

Contributors

alexeykarnachev avatar

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.