All Projects → igor-shevchenko → Rutermextract

igor-shevchenko / Rutermextract

Licence: mit
Term extraction for Russian language

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Rutermextract

Hackerrank
This is the Repository where you can find all the solution of the Problems which you solve on competitive platforms mainly HackerRank and HackerEarth
Stars: ✭ 68 (-9.33%)
Mutual labels:  natural-language-processing
Man
Multinomial Adversarial Networks for Multi-Domain Text Classification (NAACL 2018)
Stars: ✭ 72 (-4%)
Mutual labels:  natural-language-processing
Nlp Tutorial
A list of NLP(Natural Language Processing) tutorials
Stars: ✭ 1,188 (+1484%)
Mutual labels:  natural-language-processing
Ai Writer data2doc
PyTorch Implementation of NBA game summary generator.
Stars: ✭ 69 (-8%)
Mutual labels:  natural-language-processing
Estnltk
Open source tools for Estonian natural language processing
Stars: ✭ 71 (-5.33%)
Mutual labels:  natural-language-processing
Absa Pytorch
Aspect Based Sentiment Analysis, PyTorch Implementations. 基于方面的情感分析,使用PyTorch实现。
Stars: ✭ 1,181 (+1474.67%)
Mutual labels:  natural-language-processing
Capsnet Nlp
CapsNet for NLP
Stars: ✭ 66 (-12%)
Mutual labels:  natural-language-processing
Nlp Tutorial
Natural Language Processing Tutorial for Deep Learning Researchers
Stars: ✭ 9,895 (+13093.33%)
Mutual labels:  natural-language-processing
Causal Text Papers
Curated research at the intersection of causal inference and natural language processing.
Stars: ✭ 72 (-4%)
Mutual labels:  natural-language-processing
Senta
Baidu's open-source Sentiment Analysis System.
Stars: ✭ 1,187 (+1482.67%)
Mutual labels:  natural-language-processing
Get started with deep learning for text with allennlp
Getting started with AllenNLP and PyTorch by training a tweet classifier
Stars: ✭ 69 (-8%)
Mutual labels:  natural-language-processing
Usaddress
🇺🇸 a python library for parsing unstructured address strings into address components
Stars: ✭ 1,165 (+1453.33%)
Mutual labels:  natural-language-processing
Sense2vec
🦆 Contextually-keyed word vectors
Stars: ✭ 1,184 (+1478.67%)
Mutual labels:  natural-language-processing
Touchdown
Cornell Touchdown natural language navigation and spatial reasoning dataset.
Stars: ✭ 69 (-8%)
Mutual labels:  natural-language-processing
Course Computational Literary Analysis
Course materials for Introduction to Computational Literary Analysis, taught at UC Berkeley in Summer 2018, 2019, and 2020, and at Columbia University in Fall 2020.
Stars: ✭ 74 (-1.33%)
Mutual labels:  natural-language-processing
Intent classifier
Stars: ✭ 67 (-10.67%)
Mutual labels:  natural-language-processing
Mt Dnn
Multi-Task Deep Neural Networks for Natural Language Understanding
Stars: ✭ 72 (-4%)
Mutual labels:  natural-language-processing
Hunspell
The most popular spellchecking library.
Stars: ✭ 1,196 (+1494.67%)
Mutual labels:  natural-language-processing
Stminsights
A Shiny Application for Inspecting Structural Topic Models
Stars: ✭ 74 (-1.33%)
Mutual labels:  natural-language-processing
Python nlp tutorial
This repository provides everything to get started with Python for Text Mining / Natural Language Processing (NLP)
Stars: ✭ 72 (-4%)
Mutual labels:  natural-language-processing

============= rutermextract

Библиотека для извлечения ключевых слов из текстов на русском языке. Для морфологического анализа используется pymorphy2 <http://pymorphy2.readthedocs.org/en/latest/>. Разработка вдохновлена библиотекой topia.termextract <https://pypi.python.org/pypi/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 — максимальное количество извлечённых ключевых слов. По умолчанию ограничения нет.

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

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

  • (опционально) stringsTrue, если результатом вызова должен быть список нормализованных строк. По умолчанию возвращается список объектов типа 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 <http://pymorphy2.readthedocs.org/en/latest/>_.

  • enum34 <https://pypi.python.org/pypi/enum34>_ (для версий ниже 3.4).

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

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

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

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

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

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

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

Буду рад услышать предложения по улучшению или сообщения о багах в issues <https://github.com/igor-shevchenko/rutermextract/issues>_ или по почте <mailto:[email protected]>_.

Лицензия

MIT

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].