Skip to main content

С помощью pymorphy извлекаем из текстов множества эпитетов, нормализуем и сохраняем их в БД sqlite.

Project description

epythets

С помощью pymorphy извлекаем, нормализуем из текста множество эпитетов, сохраняя их в sqlite.

Зачем?

Так можно извлечь специфические эпитеты и неологизмы из текста для дальнейшего использования. Теоретически это что-то вроде частотного словаря для словосочетаний без вычисления частоты. Назову это "Словосочетарь".

Зачем-зачем?

Затем.

Эпитеты?

Словосочетания соответствующие шаблону

< прилагательное | причастие в страдательном залоге > < существительное >

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

Как использовать

Установка

Из pypi:

sudo pip3 install epythets

Альтернативые способы.

Совместимость

Поддерживается только python3.8+. Если хочется что-то старее - можно форкнуть, поправить в mgrep.py единственное использование := на две отдельные строчки и установить из исходников.

Обучение

БД будет инициализирована в файле epythets.sqlite в текущей директории при первом запуске, если этого файла ещё нет. Путь можно переопределить параметром --db /your/db.sqlite, но его придётся указывать для каждого скармливаемого файла.

"Обучаем" на классике, чтобы типовые обороты не считались спецификой последующих текстов. На самом деле одного "Идиота" для этого мало - ~2.8к фраз. Метка (label) "idiot" внутри БД будет автоматически вычислена из имени файла.

epythets --filename texts/idiot.txt

Дообучим на нескольких произведениях Говарда Филиппса Лавкрафта. Из "Случая Чарльза Декстера Уальда" извлеклось около 2 500 фраз, а из "Хребтов Безумия" - 1 500, при значительно меньших длинах текста.

В этом примере используется альтернативный подход с флагами утилиты - метку указываем явно, а файл читаем с stdin.

epythets --label 'wild' < texts/wild.txt
epythets --label 'madness' < texts/at_the_mountains_of_madness.txt

"Шлифанём" "Снами в Ведьмином Доме" - 662 фразы, но поскольку мы неплохо "обучились" ранее около 40-60% извлечённых фраз являются довольно-таки специфичными для этого произведения. Что и было моей исследовательской целью. Если увеличить объём первичного обучения, выйдет ещё точнее.

epythets --filename texts/witchhouse.txt

Можно читать RSS-ленты, а не файлы

Вместо --filename указывайте --url с адресом rss-фида. Параметр --label автоматически выставится в доменное имя ресурса плюс суффикс в виде сегодняшней даты. Могу порекомендовать поиграться со следующими ресурсами:

https://tass.ru/rss/v2.xml
https://pritchi.ru/rss_latest
https://habr.com/ru/rss/all/all/
https://www.opennet.ru/opennews/opennews_all_utf.rss
https://www.linux.org.ru/section-rss.jsp

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

Просмотр результатов

Копаемся себе в извлечённых фразах:

epythets --label=witchhouse --dump
  • Современная Работа
  • Замкнутое Пространство
  • Детские Кости
  • Скрытый Страх
  • Другая Находка
  • Странные Умолчания
  • Скупые Сведения
  • Пятипалые Лапки
  • Маленький Череп
  • Режущий Слух
  • ...

Как посмотреть статистику по файлам (сколько эпитетов из какого текста извлечено):

epythets --stat
label count
ilf_petrov:12_chairs 3891
gogol:viy 243
platon:gosudarstvo 322
dostoevsky:idiot 2271
lovecraft:madness 1385
lovecraft:wild 1334
lovecraft:witchhouse 615
limstin_python:fun_in_morrowind 1362

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

epythets-0.2.6.tar.gz (17.7 kB view details)

Uploaded Source

File details

Details for the file epythets-0.2.6.tar.gz.

File metadata

  • Download URL: epythets-0.2.6.tar.gz
  • Upload date:
  • Size: 17.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.8.0

File hashes

Hashes for epythets-0.2.6.tar.gz
Algorithm Hash digest
SHA256 b788966ab9321a16ce22a9d1eaef5f735066d7a931196faa8bff925f960d7fec
MD5 7afb1090587d0f1420012973bc5ebee6
BLAKE2b-256 91336a94aa94d7963bd827ad58ae4a2f7ba1e8ddfe932348078a1d2ab64b7b1b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page