С помощью 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | b788966ab9321a16ce22a9d1eaef5f735066d7a931196faa8bff925f960d7fec |
|
MD5 | 7afb1090587d0f1420012973bc5ebee6 |
|
BLAKE2b-256 | 91336a94aa94d7963bd827ad58ae4a2f7ba1e8ddfe932348078a1d2ab64b7b1b |