Skip to main content

A Python wrapper for the RuWordNet thesaurus.

Project description

python-ruwordnet

This is a Python wrapper for the RuWordNet thesaurus.

Это питонячья обёртка для тезауруса RuWordNet.

В настоящий момент поддержана версия начала 2020 года: 49713 синсетов (смысловых групп), 130417 значений слов и словосочетаний.

Что это такое

RuWordNet --- это один из немногих тезаурусов для русского языка.

Тезаурус --- это машиночитаемый словарь какого-то языка, составленный лингвистами и содержащий информацию о связях между словами.

RuWordNet разбит на синсеты --- наборы синонимичных слов и словосочетаний. Между синсетами установлены бинарные отношения, такие, как гипоним-гипероним, то есть "частное-общее". Например, "спаржа" является частным случаем "овощей". Такая разметка на синонимы и гиперонимы позволяет устанавливать отношения между словами с большей надёжностью (по крайней мере, в теории), чем при помощи word2vec и прочей дистрибутивной семантики.

Основными сущностями в тезаурусе являются Sense (смысл) - одно конкретное слово или словосочетание с конкретным же значением, а также Synset (синсет) - множество сущностей Sense с одинаковыми значениями и с одной частью речи. Части речи поддержано три: существительное N, глагол V, и прилагательное A. Некоторые Sense состоят из нескольких слов, и часть речи им присваивается по главному слову.

В текущей версии тезауруса поддержаны следующие отношения между синсетами:

  • hyponyms / hypernyms : более частные и более общие понятия, например, "спаржа" / "овощи"
  • domains / domain_items: домены и их атрибуты, например, "спорт" / "мяч"
  • meronyms / holonyms: части и целые, например, "желудь" / "дуб"
  • classes / instances : классы и экземпляры, например, "Смоленск" / "областной центр"
  • premises / conclusions: предпосылки и возможные выводы из них, например, "прибежать" / "бегать" (поддержано только для глаголов)
  • causes / effects: причины и следствия, например, TODO (только для глаголов)
  • pos_synonyms: синонимы из других частей речи
  • antonyms: антонимы

Кроме того, есть отношения между смыслами:

  • words / phrases - из каких слов состоит фраза, и в каких фразах участвует слово, например, "чувство" / "порыв чувств"
  • sources / derivations - от каких слов произошло данное, и какие произошли от него, например, "приятель" / "приятельский"

В данном пакете тезаурус обёрнут в ORM SQLAlchemy. Это значит, что вы можете скачать его содержимое в виде текстовой базы sqlite, либо переложить его в свою собственную базу данных.

Как запускать

Чтобы воспользоваться тезаурусом, выберите одну из двух опций:

  1. Либо клонируйте этот репозиторий;
  2. Либо установите пакет и скачайте файл с тезаурусом (около 80 мб):
pip install ruwordnet
ruwordnet download

Для применения пакета нужно создать объект RuWordNet:

from ruwordnet import RuWordNet
wn = RuWordNet()

Если вы не использовали команду ruwordnet download, вы можете самостоятельно указать путь до файла либо передать в конструктор открытую сессию SQLAlchemy:

from ruwordnet import RuWordNet
wn = RuWordNet(filename_or_session='ruwordnet/static/ruwordnet.db')

После этого можно, например, искать синсеты, в которые входит слово

for sense in wn.get_senses('замок'):
    print(sense.synset)
# Synset(id="126228-N", title="СРЕДНЕВЕКОВЫЙ ЗАМОК")
# Synset(id="114707-N", title="ЗАМОК ДЛЯ ЗАПИРАНИЯ")

Для каждого синсета можно глядеть на гиперонимы...

wn.get_senses('спаржа')[0].synset.hypernyms
# [Synset(id="348-N", title="ОВОЩИ"),
#  Synset(id="4789-N", title="ТРАВЯНИСТОЕ РАСТЕНИЕ"),
#  Synset(id="6878-N", title="ОВОЩНАЯ КУЛЬТУРА")]

... или, наоборот, на гипонимы

vegetables = wn.get_senses('спаржа')[0].synset.hypernyms[0]
vegetables.hyponyms
# [Synset(id="107993-N", title="АРТИШОК"),
# Synset(id="108482-N", title="СПАРЖА"),
# Synset(id="118660-N", title="ЗЕЛЕНЫЙ ГОРОШЕК"),
# ...

Больше примеров использования есть в .ipynb файлах в данном репозитории.

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

ruwordnet-0.0.2.tar.gz (6.6 kB view hashes)

Uploaded source

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page