Closed Devamitta closed 8 months ago
Запрос в работе, есть продвижение.
Подскажите пожалуйста, правильно ли я понял:
output/html tables/*.html
.declensions·&·conjugations.xlsx
с листа abbreviations
.ābādhika is a masc declension like buddha
должно стать ābādhika — это м. склонение как buddha
.Верно переводить нужно в файлах output/html tables/*.html
только нужно учитывать что нужно иметь 2 варианта, оригинальный англ для SBS словаря и переведенный русский для DPS
переводы аббревиатур берем из листа abbreviations
в шапке переводим все кроме Pattern например "a masc" или "ī adj" их оставляем
вот пример как может выглядеть html:
Переводит:
Сделаю несколько правок, прежде чем сливать. :pray:
Бхантэ @Devamitta, функции *_suttas
и директория output/html suttas
относятся к словарю SBS?
На данный момент оба словаря берут таблицы склонений из output/html suttas
какие именно функции *_suttas
вы имеете в виду?
Кажется, пока разобрался, спасибо. Вопрос был про test_if_inflections_exist_suttas
.
В функции modules.read_and_clean_sutta_text()
читаются файлы из директории dpd-br/pure-machine-readable-corpus/cscd/
. Что это за ресурс? Где его найти?
В функции
modules.read_and_clean_sutta_text()
читаются файлы из директорииdpd-br/pure-machine-readable-corpus/cscd/
.
По видимости, это образ с tipitaka.org.
Добавил вас в тот РЕПО.
Но эта часть кода не влияет на создания HTML склонений.
Этот код делает лист слов из выбранной сутты, отсутствующих в DPS. Чтобы можно было добавить их.
Эту часть кода не нужно русифицировать.
Спасибо, бхантэ. Увидел. Прогоню, чтобы удостовериться, что всё работает.
Скачал обновления сделал все что написано в readme удалил все файлы в output, потому как программа не генерировала новые пока старые есть, все сгенерировалось с переводом, но теперь оба словаря SBS и DPS имеют одинаковые таблицы склонений - русские а русские нужны только в DPS , SBS - английские оригинальные
И программа не может сгенерировать все. Пишет ошибку.
после слова vassānotu:
File "/home/deva/Documents/dps/inflection/inflection generator.py", line 11, in <module> generate_inflections(args) File "/home/deva/Documents/dps/inflection/inflection_generator/cli.py", line 40, in generate_inflections table_generator.generate_html() File "/home/deva/Documents/dps/inflection/inflection_generator/modules.py", line 525, in generate_html self._create_html_table(row) File "/home/deva/Documents/dps/inflection/inflection_generator/modules.py", line 506, in _create_html_table heading = self._make_heading(pos, example, headword_clean, pattern) File "/home/deva/Documents/dps/inflection/inflection_generator/modules.py", line 431, in _make_heading f" {derivative_type} как <b>{example}</b>") UnboundLocalError: local variable 'derivative_type' referenced before assignment Mon Jan 9 05:23:53 PM +08 2023
Здесь log кода dictALL.sh
у глаголов заменяет с ошибкой
reflexive должен заменяться на возвр. в соответствии с таблицей
Жаль, что появились ошибки. В конце недели я собираюсь в поездку и не смогу заниматься кодом до начала февраля. Давайте попробуем исправить, бхантэ.
К сожалению, я не смог полностью «прогнать» inflection_generator --kind SBS
. В ходе выполнения требуются некие файлы *-class.csv
. Сейчас увидел, что для них есть какие-то скрипты в utils
.
Если бы я получил текущую версию dps.ods
и необходимый class-файл, это могло бы помочь в отладке.
Как вижу, и для SBS, и для DPS, таблицы берутся из output/html tables/
. Поскольку таблицы теперь должны существовать в двух вариантах, предлагаю, соответственно, сохранять их в output/html_tables_dps
и output/html_tables_sbs
(или _ru
/_en
). В exporter
читать из соответствующих директорий согласно kind
.
reflexive должен заменяться на возвр. в соответствии с таблицей
Если правильно понял проблему, заменяется часть слова (окончание 'x' + 've'
). Это можно проработать, но займёт время. Предлагаю пока завести issue.
Нужно ли читать сокращения assets/abbreviations.csv
(их там много), или мы можем завести небольшой дополнительный список слов (таких, как reflexive
), которые будут переводиться в заголовке таблиц?
vassānotu
local variable 'derivative_type' referenced before assignment
Это значит, что pos
для слова не нашёлся ни в списке declensions
, ни в списке conjugations
класса InflectionTableGenerator
. В таком случае вижу такие варианты:
pos
содержит ошибку, то следует поправить его (там может быть, скажем, незаметный пробел справа). Я бы добавил более информативное сообщение об ошибке для такого случая.pos
корректное, то следует добавить обработку такой ситуации. Может быть оно попадает в indeclinables
или должно обрабатываться как-то иначе?Здесь log кода dictALL.sh
Не стоит сохранять журналы вместе с кодом — они остаются в репозитории навсегда. Когда вы хотите поделиться каким-то текстом, можно использовать, например, GitHub Gist.
В шелл-скрипты (такие, как dictALL.sh) можно добавлять set -e
первой командой. Тогда скрипт будет завершаться сразу, как только какая-то команда завершится ошибкой. Это позволяет сразу увидеть ошибку.
:pray: :pray: :pray:
может быть будет полезным описать процесс создания словаря как он происходит у меня:
сохраняю свежую копию dps.ods с google sheets
запускаю скрипт anki.sh
и код dictALL.sh
или мы можем завести небольшой дополнительный список слов (таких, как reflexive), которые будут переводиться в заголовке таблиц?
Согласен, что для простоты можно создать отдельную таблицу замен. Займусь этим
создал отдельную таблицу для замены HTML склонений. https://github.com/Devamitta/inflection-generator-dps/blob/main/rusification.csv
нашел ошибку. исправил. в столбце pattern было неверно. сейчас работает. теперь для всех слов создает русскую версию таблицы склонений.
также сейчас перестали работать функции: test if inflection exists in sutta.py ошибка:
Traceback (most recent call last):
File "/home/deva/Documents/dps/inflection/test if inflection exists in sutta.py", line 35, in
и
test for most common words.py ошибка:
Traceback (most recent call last):
File "/home/deva/Documents/dps/inflection/test for most common words.py", line 42, in
no eg3: {" ".joint(no_eg3)}'
AttributeError: 'str' object has no attribute 'joint'. Did you mean: 'join'?
test if inflection exists in sutta.py
NameError: name 'no_eg3_list' is not defined. Did you mean: 'no_eg1_list'?
Дело в том, что no_eg3_list
наполняется только в функции make_list_of_all_inflections_potential()
, но она не вызывается в test if inflection exists in sutta.py
. В файле есть закомментированный вызов make_list_of_all_inflections_no_eg3(data)
, но в modules.py
такой функции нет.
Самым простым решением будет no_eg3_list: List[str]
к виду no_eg3_list: List[str] = []
, но это будет пустой список, не уверен, что это корректно.
test for most common words.py
AttributeError: 'str' object has no attribute 'joint'. Did you mean: 'join'?
Сегодня исправлю.
Рассчитываю так же проработать перевод аббревиатур и разводку таблиц по директориям. :heart::pray:
Дело в том, что no_eg3_list наполняется только в функции make_list_of_all_inflections_potential(), но она не вызывается в test if inflection exists in sutta.py. В файле есть закомментированный вызов make_list_of_all_inflections_no_eg3(data), но в modules.py такой функции нет.
мне кажется я вносил изменения в код уже после того, как вы ответвились на работу по русификации. Посмотрю лог
test if inflection exists in sutta.py NameError: name 'no_eg3_list' is not defined. Did you mean: 'no_eg1_list'?
исправил добавлением def make_list_of_all_inflections_no_eg3
из архива, действительно по какой то причине этот commit не перешел в вашу версию. теперь у обоих функций одинаковая ошибка
Traceback (most recent call last):
File "/home/deva/Documents/dps/inflection/test if inflection exists in sutta.py", line 35, in
no eg3: {" ".joint(no_eg3)}'
AttributeError: 'str' object has no attribute 'joint'. Did you mean: 'join'?
Скачал все обновления, запускаю той же командой, но код не создает склонения в папку html_tables_sbs
мне кажется обе функции должны работать вместе, а сейчас они или-или
if self._kind is Kind.DPS:
tables_dir = settings.HTML_TABLES_DPS_DIR
elif self._kind is Kind.SBS:
tables_dir = settings.HTML_TABLES_SBS_DIR
пока временно запускаю новый и старый вместе, поэтому в exporter временно поменял путь
коды 'test' работают отлично, благодарю.
@bergentroll
Можете посмотреть все же что не работает в TABLES_SBS_DIR и почему папка html_tables_sbs пуста?
Я добрался посмотреть проблему, но забыл, как запускал у себя код.
Запуск inflection-generator --kind DPS
с таблицами exporter/examples/spreadsheets/ приводит к ошибке KeyError: 'pali_1'
(как я понимаю, в таблицах отсутствует необходимое поле).
@Devamitta :pray::pray::pray:
мне кажется обе функции должны работать вместе, а сейчас они
или-или
Насколько помню, с флагом --kind DPS
должны собираться только файлы для русско-палийского словаря, с флагом --kind SBS
только для словаря к служебнику, и эти файлы не зависят друг от друга. Но если зависят, то может быть дело в этом. При изменениях я старался, чтобы разные процессы не зависели друг от друга.
Для выполнения inflection-generator --kind DPS
необходимы файлы *-class.csv
, не могу их найти.
Запуск
inflection-generator --kind DPS
с таблицами exporter/examples/spreadsheets/ приводит к ошибкеKeyError: 'pali_1'
(как я понимаю, в таблицах отсутствует необходимое поле).
обновил файлы исходников
Для выполнения
inflection-generator --kind DPS
необходимы файлы*-class.csv
, не могу их найти.
думаю для теста будет достаточно этих файлов: https://github.com/Devamitta/word-frequency/tree/main/csv-for-examples
Тогда как inflection-generator --kind DPS
читает spreadsheets/dps-full.csv
, inflection-generator --kind SBS
читает word-frequency/csv-for-examples/1-class.csv
(или прочие *-class.csv
в зависимости от аргумента командной строки --class-file-name
). Это поведение мной не менялось.
В последнем коммите https://github.com/Devamitta/word-frequency/ файл 1-class.csv содержит 80 строк без учёта заголовка. При выполнении команды inflection-generator --kind SBS
с предварительно установленной переменной среды export DPS_DIR=ПУТЬ_К_ДИРЕКТОРИИ
(где ПУТЬ_К_ДИРЕКТОРИИ
указывает на директорию, содержащую репозиторий word-frequency
) в директории output/html_tables_sbs/
создаётся 80 файлов по числу вхождений в 1-class.csv
.
В ходе изучения вопроса внесено несколько правок, не меняющих логику работы. Открыт запрос на слияние #8.
:pray: :pray: :pray:
Благодарю
ожидаемое поведение: для словаря DPS - создание таблиц склонений на русском для словаря SBS - создание таблиц склонений на английском
исходный файл для обоих словарей dps-full.csv
я поменял путь в cli.py в строке 30:
csv_file = settings.DPS_DIR/"spreadsheets"/"dps-full.csv"
ввожу команды в директории репозитория: python3 -m venv env source env/bin/activate pip3 install -e . export DPS_DIR='../' inflection-generator --kind DPS inflection-generator --kind SBS
но наполняется только папка html_tables_dps а папка html_tables_sbs так и остается пустой.
возможно ли производить такую же замену в html inflections? но для этого думаю нужно менять код https://github.com/Devamitta/inflection-generator-dps думаю что для этого нужно будет производить замену в xls https://github.com/Devamitta/inflection-generator-dps/blob/main/declensions%20%26%20conjugations.xlsx и так как этот файл время от времени меняется оригинальным автором DPD дост Бодхираса, то замену нужно делать тоже на лету. Также в строке:
ābādhika is a masc declension like buddha
, словаa masc
берутся из dps_df["Pattern"] думаю чтобы не переделывать весь процесс можно производить замену лишь в окончательном файлеimput этого кода тот же что у exporter