Key-value - бэкенды¶
Note
Этот раздел справки сгенерирован автоматически.
Ниже описаны скорее детали реализации. Чтоб использовать pymorphy, их знать необязательно.
Если вы не планируете участвовать в разработке pymorphy, полезнее ознакомиться со следующим документом: Поддерживаемые типы хранилищ
Базовый класс¶
- class pymorphy.backends.base.DictDataSource¶
Bases: object
Absctract base class for dictionary data source. Subclasses should make class variables (rules, lemmas, prefixes, gramtab, endings, possible_rule_prefixes) accessible through dict or list syntax (“duck typing”)
Абстрактный базовый класс для источников данных pymorphy. У подклассов должны быть свойства rules, lemmas, prefixes, gramtab, endings, possible_rule_prefixes, к которым можно было бы обращаться как к словарям, спискам или множествам.
- rules
для каждой парадигмы - список правил (приставка, грам. информация, префикс):
{paradigm_id->[ (suffix, ancode, prefix) ]}
- lemmas
для каждой леммы - список номеров парадигм (способов образования слов), доступных для данной леммы (основы слова):
{base -> [paradigm_id]}
- prefixes
фиксированые префиксы:
set([prefix])
- gramtab
грамматическая информация: словарь, ключи которого - индексы грам. информации (анкоды), значения - кортежи (часть речи, информация о грам. форме, какая-то непонятная буква):
{ancode->(type,info,letter)}
- rule_freq
частоты для правил, используется при подготовке словарей:
{paradigm_id->freq}
- endings
для каждого возможного 5 буквенного окончания - словарь, в котором ключи - номера возможных парадигм, а значения - номера возможных правил:
{word_end->{paradigm_id->(possible_paradigm_ids)}}
- possible_rule_prefixes
набор всех возможных приставок к леммам:
[prefix]
- calculate_rule_freq()¶
Подсчитать частоту, с которой встречаются различные правила. Требуется для предсказателя, чтобы выбирать наиболее распространенные варианты.
- convert_and_save(data_obj)¶
Взять данные из data_obj (наследник DataDictSource) и сохранить из в специфичном для класса формате.
- load()¶
Загрузить данные
DB-источники данных¶
- class pymorphy.backends.shelve_source.ShelveDataSource(path='', db_type=None, cached=True)¶
Bases: pymorphy.backends.base.DictDataSource
Источник данных для морфологического анализатора pymorphy, берущий информацию из key-value базы данных, используя модифицированный интерфейс shelve из стандартной библиотеки. Позволяет не держать все данные в памяти и в то же время обеспечивает достаточно быструю скорость работы.
Грамматическая информация и префиксы загружаются в память сразу.
- convert_and_save(data_obj)¶
- load()¶
Интерфейс к SQLite¶
- class pymorphy.backends.shelve_source.sqlite_shelve.SqliteDict(filename=None, connection=None, table='shelf')¶
Bases: object
A dictionary that stores its data in a table in sqlite3 database
- clear()¶
- close()¶
- has_key(key)¶
- sync()¶
- class pymorphy.backends.shelve_source.sqlite_shelve.SqliteShelf(filename=None, flag='', key_type='str', dump_method='json', cached=True, connection=None, table='shelf')¶
Bases: pymorphy.backends.shelve_source.shelf_with_hooks.ShelfWithHooks
- close()¶
Интерфейс к Shelve (BSDDB, GDBM, DBM)¶
- class pymorphy.backends.shelve_source.shelf_with_hooks.ShelfWithHooks(filename, flag, key_type='str', dump_method='json', cached=True, writeback=False)¶
Bases: shelve.DbfilenameShelf
Shelf class with key and value transform hooks.
- DUMP_METHODS = {'json': {'dumps': <function json_dumps at 0x7f74c3275ed8>, 'loads': <function loads at 0x7f74c3275cf8>}, 'marshal': {'dumps': <built-in function dumps>, 'loads': <built-in function loads>}}¶
- KEY_TRANSFORM_METHODS = {'int': {'encode': <function <lambda> at 0x7f74c2feb140>, 'decode': <function <lambda> at 0x7f74c2feb1b8>}, 'str': {'encode': <function <lambda> at 0x7f74c2feb230>, 'decode': <function <lambda> at 0x7f74c2feb2a8>}, 'unicode': {'encode': <function <lambda> at 0x7f74c2feb050>, 'decode': <function <lambda> at 0x7f74c2feb0c8>}}¶
- close()¶
- get(key, default=None)¶
- has_key(key)¶
- keys()¶
- pymorphy.backends.shelve_source.shelf_with_hooks.json_dumps(value)¶
Интерфейс к CDB¶
- class pymorphy.backends.shelve_source.cdb_shelve.CdbReadDict(filename)¶
Bases: object
- close()¶
- has_key(key)¶
- class pymorphy.backends.shelve_source.cdb_shelve.CdbShelf(filename, flag, key_type='str', dump_method='json', cached=True, writeback=False)¶
Bases: pymorphy.backends.shelve_source.shelf_with_hooks.ShelfWithHooks
- close()¶
Интерфейс к Tokyo Cabinet¶
Бэкенд для разбора исходных MRD-файлов¶
Алгоритм работы с ним “как есть” должен быть совсем не таким, как в pymorphy, pymorphy с исходными MRD-файлами работает крайне неэффективно.
Этот бэкенд используется только для переконвертации исходных словарей.
- class pymorphy.backends.mrd_source.MrdDataSource(dict_name, gramtab_name, strip_EE=True)¶
Bases: pymorphy.backends.base.DictDataSource
Источник данных для морфологического анализатора pymorphy, берущий информацию из оригинальных mrd-файлов (в которых кодировка была изменена с 1251 на utf-8). Используется для конвертации оригинальных данных в простые для обработки ShelveDict или PickledDict.
- load()¶
- static setup_psyco()¶
Оптимизировать узкие места в MrdDataSource с помощью psyco
Pickle-источник данных¶
- class pymorphy.backends.pickle_source.PickleDataSource(file)¶
Bases: pymorphy.backends.base.DictDataSource
Источник данных для морфологического анализатора pymorphy, берущий информацию из файлов, куда с помощью pickle были сохранены данные. Самый быстрый, но ест уйму памяти (> 100 MB).
- convert_and_save(data_obj)¶
- load()¶