# python-ruwordnet
Питоновская обёртка для тезауруса [RuWordNet](https://ruwordnet.ru/ru).

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

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

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

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



## Как запустить
Чтобы воспользоваться тезаурусом, выберите одну из двух опций:
1. Либо клонируйте этот репозиторий;
2. Либо установите пакет и скачайте файл с тезаурусом (около 40 мб):
```commandline
pip install ruwordnet
ruwordnet download
```

Для применения пакета нужно создать объект `RuWordNet`:
```python
from ruwordnet import RuWordNet
wn = RuWordNet()
```

Если вы не использовали команду `ruwordnet download`, вы можете самостоятельно
указать путь до файла либо передать в конструктор открытую сессию SQLAlchemy:
```python
from ruwordnet import RuWordNet
wn = RuWordNet(filename_or_session='ruwordnet/static/ruwordnet.db')
```

После этого можно, например, искать синсеты, в которые входит слово
```python
for sense in wn.get_senses('замок'):
    print(sense.synset)
# Synset(id="126228-N", title="СРЕДНЕВЕКОВЫЙ ЗАМОК")
# Synset(id="114707-N", title="ЗАМОК ДЛЯ ЗАПИРАНИЯ")
```

Для каждого синсета можно глядеть на гиперонимы...
```python
wn.get_senses('спаржа')[0].synset.hypernyms
# [Synset(id="348-N", title="ОВОЩИ"),
#  Synset(id="4789-N", title="ТРАВЯНИСТОЕ РАСТЕНИЕ"),
#  Synset(id="6878-N", title="ОВОЩНАЯ КУЛЬТУРА")]
```
... или, наоборот, на гипонимы
```python
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="ЗЕЛЕНЫЙ ГОРОШЕК"),
# ...
```

