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 details)

Uploaded Source

File details

Details for the file ruwordnet-0.0.2.tar.gz.

File metadata

  • Download URL: ruwordnet-0.0.2.tar.gz
  • Upload date:
  • Size: 6.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.53.0 CPython/3.7.9

File hashes

Hashes for ruwordnet-0.0.2.tar.gz
Algorithm Hash digest
SHA256 0b9fe66d53b3c67c6d6b063b9af8d7c89c8e3bb1b72b0cc85a356394a88ba3ea
MD5 db943204688caec1adccf9e0bee0d914
BLAKE2b-256 c4e666880ddbd7a76c2d3553da6fb51b29031c49ab58ce4708293a3f0d062a20

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page