Skip to main content

rutermextract

Библиотека для извлечения ключевых слов из текстов на русском языке. Для морфологического анализа используется pymorphy2. Разработка вдохновлена библиотекой topia.termextract, которая делает то же самое с англоязычными текстами.

Установка

pip install rutermextract

Использование

>>> from rutermextract import TermExtractor
>>> term_extractor = TermExtractor()
>>> text = u'Съешь ещё этих мягких французских булок да выпей же чаю.'
>>> for term in term_extractor(text):
>>>    print term.normalized, term.count
мягкие французские булки 1
чай 1

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

Возможные применения

  • Автоматическое присвоение тегов.

  • Вычисление похожести текстов на основе извлеченных ключевых слов.

Вызов библиотеки

Аргументы при вызове экземпляра класса TermExtractor:

  • text — текст.

  • (опционально) limit — максимальное количество извлечённых ключевых слов. По умолчанию ограничения нет.

  • (опционально) nested — True, если нужно ивзлекать ключевые слова, лежащие внутри других ключевых слов. Например, вместе с «функциональный язык программирования» извлекаются «язык программирования» и «программирование».

  • (опционально) weight — функция для вычисления веса извлеченного ключевого слова. В нее передается объект типа Term. По умолчанию ключевые слова упорядочиваются по количеству употреблений, затем по количеству слов.

  • (опционально) strings — True, если результатом вызова должен быть список нормализованных строк. По умолчанию возвращается список объектов типа Term.

Term имеет следующие свойства: words (список слов), word_count (количество слов), normalized (тёрм в виде нормализованной строки), count — количество употреблений.

Пример использования функции веса

>>> from rutermextract import TermExtractor
>>> term_extractor = TermExtractor()
>>> text = ...
>>> idf = ...  # Словарь соответствия ключевых слов их обратным частотам.
>>> terms = term_extractor(text, weight=lambda term: idf.get(term.normalized, 1.0) * term.count)

Зависимости

  • Python 2.6+ или 3.3+.

  • pymorphy2.

  • enum34 (для версий ниже 3.4).

Качество работы

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

Основные проблемы:

  1. Неполные правила. Например, сейчас не извлекаются ключевые слова, содержащие предлоги («вор в законе», «сосед по парте»). Эта проблема может решаться при дальнейшем развитии библиотеки, но правил, покрывающих все случаи всё равно быть не может.

  2. Неоднозначность при морфологическом разборе. Сейчас она разрешается выбором наиболее вероятного варианта, что в некоторых случаях неверно. Проблема может проявляться как при извлечении ключевых слов, так и при их нормализации. (Например, из заголовка «Мальчика назвали в честь нападающего футбольного клуба» будет извлечена фраза «нападающий футбольный клуб».)

  3. Ложные ключевые слова. Некоторые извлеченные фразы могут не являться на самом деле ключевыми. Размера текста не всегда бывает достаточно для того, чтобы отличить важные для текста слова от неважных, основываясь только на количестве употреблений. Поэтому необходимо использовать сторонние модели (например, tf-idf) для определения важности ключевых слов.

Обратная связь

Буду рад услышать предложения по улучшению или сообщения о багах в issues или по почте.

Лицензия

MIT

Metadata

Release files for rutermextract 0.3

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

Source distribution (sdist)

Source distribution for rutermextract 0.3
File Size Uploaded Provenance Actions
rutermextract-0.3.tar.gz 8.1 kB Without provenance Details for rutermextract-0.3.tar.gz

Release files / rutermextract-0.3.tar.gz

Download URL rutermextract-0.3.tar.gz
Size 8.1 kB
Tags Source
SHA-256 checksum
How to use checksums
1cb4cf836878ffad2c61b036215ec6c6bc0fff1c93348152ca652246aa88db65
BLAKE2b-256 checksum
How to use checksums
7adb71ff21868a9065cd1f37d15e88922a790263ef8b565162f13bf1befb2cc0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Security for rutermextract 0.3

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.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.3 This release

1 release file No provenance

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