Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Проблема с компиляцией актуальных словарей из XML в DAWG #108

Open
V-ctor opened this issue Mar 28, 2018 · 7 comments

Comments

@V-ctor
Copy link

V-ctor commented Mar 28, 2018

Как откомпилировать актуальные версии словарей?
Делаю так:
1 компилирую питон 3.5.1 (требование совместимости) в домашний каталог
2 через его pip3 ставлю pymorhy2
3 Скачиваю исходный словарь в виде xml
4 Компилирую командой
pymorphy dict compile
5 получаю словари в каталоге dict
6 подсовываю их в /site-packages//pymorphy2_dicts
7 ругается на meta.json
8 все ломается на этапе ввода
>>> morph = pymorphy2.MorphAnalyzer(path="/home/victor/DevelopTools/python-3.5.1/lib/python3.5/site-packages/pymorphy2_dicts/data.compiled")
с выводом
Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/home/victor/DevelopTools/python-3.5.1/lib/python3.5/site-packages/pymorphy2/analyzer.py", line 174, in __init__ self.dictionary = opencorpora_dict.Dictionary(path) File "/home/victor/DevelopTools/python-3.5.1/lib/python3.5/site-packages/pymorphy2/opencorpora_dict/wrapper.py", line 18, in __init__ self._data = load_dict(path) File "/home/victor/DevelopTools/python-3.5.1/lib/python3.5/site-packages/pymorphy2/opencorpora_dict/storage.py", line 45, in load_dict meta = _load_meta(_f('meta.json')) File "/home/victor/DevelopTools/python-3.5.1/lib/python3.5/site-packages/pymorphy2/opencorpora_dict/storage.py", line 148, in _load_meta meta = json_read(filename, parse_float=str) File "/home/victor/DevelopTools/python-3.5.1/lib/python3.5/site-packages/pymorphy2/utils.py", line 96, in json_read with codecs.open(filename, 'r', 'utf8') as f: File "/home/victor/DevelopTools/python-3.5.1/lib/python3.5/codecs.py", line 895, in open file = builtins.open(filename, mode, buffering) FileNotFoundError: [Errno 2] No such file or directory: '/home/victor/DevelopTools/python-3.5.1/lib/python3.5/site-packages/pymorphy2_dicts/data.compiled/meta.json'
9 Понятно что проблема с meta.json сравнивая его с тем что скачан по зависимостям , я вношу в него нужные коррективы и на него ругани больше нет, но оно все равно все падает с таким выводом. Тут, я так понял, что-то не пошло с двоичными словарями.
Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/home/victor/DevelopTools/python-3.5.1/lib/python3.5/site-packages/pymorphy2/analyzer.py", line 177, in __init__ self.prob_estimator = probability_estimator_cls(path) File "/home/victor/DevelopTools/python-3.5.1/lib/python3.5/site-packages/pymorphy2/analyzer.py", line 65, in __init__ self.p_t_given_w = ConditionalProbDistDAWG().load(cpd_path) File "dawg.pyx", line 394, in dawg.CompletionDAWG.load (src/dawg.cpp:8095) OSError: It's not possible to read file stream

При работе со словарем скаченным по зависимостям все хорошо.
Запускаю в jmorphy - та же история (библиотека dawg общая?).

Может кто-то сказать в чем дело?

@ghost
Copy link

ghost commented Mar 28, 2018

через его pip3 ставлю pymorhy2

pip3 install pymorphy2 или pip3 install git+https://github.com/kmike/pymorphy2? Первая команда ставит старую версию 0.8.

@V-ctor
Copy link
Author

V-ctor commented Mar 28, 2018

я первый вариант делал
попробую второй

@V-ctor
Copy link
Author

V-ctor commented Mar 28, 2018

попробовал второй вариант, но там, как я понял, из кода убрана возможность компиляции словаря через cli, для этого отдельный скрипт https://github.com/kmike/pymorphy2-dicts .
Но с их помощью так же не удается откомпилировать:

PC:~/Developing/pymorphy2-dicts$ python3 build-dict.py dict.opcorpora.xml data
DEBUG  2018-03-29 01:11:42  Creating output folder data
INFO   2018-03-29 01:11:42  dictionary v0.92, rev405410
INFO   2018-03-29 01:11:42  parsing XML dictionary
Ошибка сегментирования (стек памяти сброшен на диск)

@ghost
Copy link

ghost commented Mar 28, 2018

That's Python for you. Похоже на баг в lxml 4.2.x:

Thread 1 "python3.5" received signal SIGSEGV, Segmentation fault.
0x00007ffff2d29f14 in __pyx_tp_dealloc_4lxml_5etree__ParserContext ()
   from /home/opennota/.local/lib64/python3.5/site-packages/lxml/etree.cpython-35m-x86_64-linux-gnu.so

С lxml 4.1.1 вроде работает:

pip3.5 install --user 'lxml<4.2.0'
python3.5 build-dict.py ~/dict.opcorpora.xml compiled-dicts --lang ru --corpus ~/annot.corpus.xml --clear

@V-ctor
Copy link
Author

V-ctor commented Mar 29, 2018

Да, спасибо, все заработало, откомпилированные словари понимает и pymorphy2 и jmorphy. Единственное, если я верно понял, pymorphy2-dicts в виде пакета не компилирует и его надо брать только из исходников да?

@ghost
Copy link

ghost commented Mar 29, 2018

@V-ctor Не знаю.

/cc @kmike

@kmike
Copy link
Collaborator

kmike commented Mar 29, 2018

На Travis CI тоже что-то сегфолтится на тесте, который связан со словарями. Детально не смотрел.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants