Metadata-Version: 2.1
Name: ruwordnet
Version: 0.0.4
Summary: A Python wrapper for the RuWordNet thesaurus.
Home-page: https://github.com/avidale/python-ruwordnet
Author: David Dale
Author-email: dale.david@mail.ru
License: MIT
Description: # python-ruwordnet
        This is a Python wrapper for the [RuWordNet](https://ruwordnet.ru/en) thesaurus.
        
        Это питонячья обёртка для тезауруса [RuWordNet](https://ruwordnet.ru/ru).
        
        В настоящий момент поддержана версия 2021 года (RuWordNet 2.0): 59905 синсетов 
        (смысловых групп), 154111 значений слов и словосочетаний. 
        
        Аналогичные и связанные проекты: 
        - https://www.nltk.org/howto/wordnet.html (оригинальный английский Wordnet)
        - https://github.com/jamsic/ru-wordnet (русский тезаурус, выкачанный из wiktionary)
        - https://nlpub.ru/Russian_Distributional_Thesaurus#Гиперонимы (русский тезаурус, собранный автоматическими эвристиками в большом корпусе)
        
        ## Что это такое
        RuWordNet --- это один из немногих тезаурусов для русского языка.
        
        Тезаурус --- это машиночитаемый словарь какого-то языка, 
        составленный лингвистами и содержащий информацию о связях между словами.
        
        RuWordNet разбит на *синсеты* --- наборы синонимичных слов и словосочетаний.
        Между синсетами установлены бинарные отношения, такие, как *гипоним-гипероним*, 
        то есть "частное-общее". Например, "спаржа" является частным случаем "овощей".
        Такая разметка на синонимы и гиперонимы позволяет устанавливать отношения
        между словами с большей надёжностью (по крайней мере, в теории), 
        чем при помощи word2vec и прочей дистрибутивной семантики.
        
        Основными сущностями в тезаурусе являются `Sense` (смысл) - одно конкретное
        слово или словосочетание с конкретным же значением, а также `Synset` (синсет) - 
        множество сущностей `Sense` с одинаковыми значениями и с одной частью речи. 
        Части речи поддержано три: существительное `N`, глагол `V`, и прилагательное `A`.
        Некоторые `Sense` состоят из нескольких слов, и часть речи им присваивается
        по главному слову.
        
        В текущей версии тезауруса поддержаны следующие отношения между синсетами:
        - `hyponyms` / `hypernyms` : более частные и более общие понятия, например,
        "спаржа" / "овощи"
        - `domains` / `domain_items`: домены и их атрибуты, например, "спорт" / "мяч"
        - `meronyms` / `holonyms`: части и целые, например, "желудь" / "дуб"
        - `classes` / `instances` : классы и экземпляры, например, "Смоленск" / "областной центр"
        - `premises` / `conclusions`: предпосылки и возможные выводы из них, например, 
          "прибежать" / "бегать" (поддержано только для глаголов)
        - `causes` / `effects`: причины и следствия, например, "толпиться" / "переснимать" (только для глаголов)
        - `pos_synonyms`: синонимы из других частей речи
        - `antonyms`: антонимы
        - `related`: прочие смысловые связи, например, "овощи" / "овощехранилище"
        - `ili`: interlingual index, то есть аналогичный синсет в другом языке (английском)
        
        Кроме того, есть отношения между смыслами:
        - `words` / `phrases` - из каких слов состоит фраза, и в каких фразах участвует
        слово, например, "чувство" / "порыв чувств"
        - `sources` / `derivations` - от каких слов произошло данное, и какие произошли
        от него, например, "приятель" / "приятельский"
          
        В данном пакете тезаурус обёрнут в ORM `SQLAlchemy`. Это значит, что вы можете
        скачать его содержимое в виде текстовой базы sqlite, либо переложить его в
        свою собственную базу данных.
        
        
        ## Как запускать
        Чтобы воспользоваться тезаурусом, выберите одну из двух опций:
        1. Либо клонируйте этот репозиторий;
        2. Либо установите пакет и скачайте файл с тезаурусом (около 80 мб):
        ```commandline
        pip install ruwordnet
        ruwordnet download
        ```
        
        В настоящий момент существует несколько версий тезауруса:
        * версия 2020 года содержится в файле `ruwordnet/static/ruwordnet.db`, 
            и доступна в версии пакета `ruwordnet>=0.0.2`.
        * версия 2021 года (RuWordNet 2.0) содержится в файле `ruwordnet/static/ruwordnet-2021.db`, 
            и доступна по умолчанию начиная с версии пакета `ruwordnet>=0.0.4`.
            В этой версии увеличился размер словаря и добавились свойства 
            `related` (произвольная связь с другим синсетом) 
            и `ili` (interlingual index, т.е. связь с английским WordNet) у синсетов.
        
        Для применения пакета нужно создать объект `RuWordNet`:
        ```python
        from ruwordnet import RuWordNet
        wn = RuWordNet()
        ```
        
        Если вы не использовали команду `ruwordnet download`, вы можете самостоятельно
        указать путь до файла либо передать в конструктор открытую сессию SQLAlchemy:
        ```python
        from ruwordnet import RuWordNet
        wn = RuWordNet(filename_or_session='ruwordnet/static/ruwordnet-2021.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="ЗЕЛЕНЫЙ ГОРОШЕК"),
        # ...
        ```
        
        Больше примеров использования есть в .ipynb файлах в данном репозитории.
        
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Description-Content-Type: text/markdown
