Skip to main content

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

Metadata

Release files for epythets 0.2.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for epythets 0.2.6
File Size Uploaded Provenance
epythets-0.2.6.tar.gz 17.7 kB Without provenance Details

Release files / epythets-0.2.6.tar.gz

Download URL epythets-0.2.6.tar.gz
Size 17.7 kB
Tags Source
SHA-256 checksum
How to use checksums
b788966ab9321a16ce22a9d1eaef5f735066d7a931196faa8bff925f960d7fec
BLAKE2b-256 checksum
How to use checksums
91336a94aa94d7963bd827ad58ae4a2f7ba1e8ddfe932348078a1d2ab64b7b1b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.8.0

Security for epythets 0.2.6

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page