Closed vantu5z closed 6 years ago
В принципе "за". С пополнением однозначно станет проще, да и структура будет выглядеть лучше. Пока не представляю, как приспособить к обработке шаблонов - я очень мало имел дело с классами, ориентируюсь с трудом. Еще вот. Обработка текстов идет быстро, но пропускать их через все шаблоны подряд не оптимально. Скажем, проверять, присутствует ли число + г./гг. и, только если присутствует, запускать соответствующие шаблоны. Не знаю, стот ли игра свеч - конструкция точно усложнится, а будет ли выигрыш в скорости - вопрос.
Добавил ветку check_words_form
, посмотри.
Теперь нужно подумать над необходимыми запросами и оптимизацией.
Ну и если приживётся, нужно переносить словарь в новый формат.
По поводу пропуска через не все шаблоны, пока не очень понимаю, как это реализовать.
Посмотрел файлы пока в броузере. Ищу информацию, как клонировать новую ветку :) Как-то привычнее у себя на компе разбираться.
git fetch должен все подтянуть. А дальше git checkout <имя ветки>.
Пытался применять к правилам, иногда получается более громоздко. А где проверки с модификациями слова [:-2] вообще мрак :)
Спасибо, клонировал. Боюсь, что не скоро разберусь, что к чему - программист из меня... :)
Ну там вроде не сложно, если что не понятно спрашивай ;)
Я чего-то глобально не улавливаю :) от слова "туплю"
from words_forms import * Words.get_attr('автобус') Traceback (most recent call last): File "
", line 1, in TypeError: get_attr() missing 1 required positional argument: 'word'
from words_forms import *
# для начала нужно создать экземпляр с которым работать
w = Words()
# и уже к нему обращаться
print(w.get_attr('автобус'))
При создании экземпляра вызывается его инициализация def __init__(self)
, где создаются три экземпляра класса WordsForms с загрузкой словарей:
self.muz = WordsForms(words_muz.words, M_GENDER)
self.zen = WordsForms(words_zen.words, Z_GENDER)
self.sre = WordsForms(words_sre.words, S_GENDER)
Применил ко всем правилам. Даже и не знаю, местами сложно читаемо получилось.
Да и раньше не особо легко читалось - сам теперь порой не понимаю, чего наваял... Вот что значит, начинать изучение программирования с Бейсика.
Боюсь, проблемой станет конвертировать словари в новый формат - вручную нереально делать.
Да, это будет немного затруднительно.
Добавил возможность определения формы слова через pymorphy2 #215 Вроде работает.
Перевел словарь в новый формат.
Пытался синхронизировать ветку. Накосячил, как обычно.
git status
На ветке check_words_form
Ваша ветка опережает «origin/check_words_form» на 23 коммита.
(используйте «git push», чтобы опубликовать ваши локальные коммиты)
нечего коммитить, нет изменений в рабочем каталоге
Пребываю в задумчивости.
git pull
не помогает?
Может из-за того, что я делал rebase
и push --force
, чтобы внести изменения из мастера.
Я делал:
git fetch
git pull
(Выдал несколько конфликтов).
git add tools/preprocessing/*
Еще сделал git commit зачем-то.
Наверно проще снести всю папку и заново всё загрузить :)
Погоди пару минут, я сейчас последние изменения применю. И потом синхронизируешься :)
Всё, я закончил. Можешь обновляться :)
Обновил.
Не установлен "pymorphy2".Определение аттрибутов слова будет вестись по словарю. ВНИМАНИЕ! неверное преобразование: "в течение 21 сек" -> "в течение двадцати одного секунды." должно быть: "в течение двадцати одной секунды." ВНИМАНИЕ! неверное преобразование: "1 царя" -> "1 царя." должно быть: "одного царя."
Пройдено проверок: 44 из 46
Попробую разобраться.
Введите текст: 21 сек Обработанный текст: 21 секунда.
нашел косяк, исправил fcb889df22574528b081bc25de5156d9e975ff9c
Еще вопрос по поводу буквы Ё в словарях. Раньше все слова были с Е, а теперь с Ё. Как думаешь вернуть Е или добавить дубликаты слов?
Если возможно, думаю, лучше оба варианта. Если оставить один, то я бы оставил Е - чаще употребляют.
(кило-, мега-, гига-)парсекОВ.
Немного доработал определение падежа. Проверь теперь.
И поподробней напиши про (кило-, мега-, гига-)парсекОВ
.
Пока не обнаруживаю ошибок. В words_muz.py неправильная форма род. пад. мн. ч.: парсек. Должно быть парсеков. 1 парсек, 10 парсеков. И, соответственно, кило-, мега-, гига-.
поправил 2f8217b057b8bbbbe9755a9a7c0b01460d5d4904
Такая мысль - довести до логического конца разделение: в файле templates.py у нас шаблоны и функции: не стоит ли выделить функции в отдельный файл, а, возможно, txt_prep() вообще сделать отдельным файлом? Рефакторинг так рефакторинг...
Я тоже об этом подумываю :) Как тебе такой вариант?
templates.py
- шаблоны
functions.py
- функции
words_forms.py
- разбор слов
dict\words_muz.py...
- словари
main.py
- основной модуль c txt_prep()
(наверно стоит как-то по-другому назвать)
Согласен. В templates.py оставим кортежи, словари и строки вроде units и months. main.py или prep.py/txt_prep.py - как хочешь.
Эх! Наворотил всякого-разного, можешь проверить не забыл ли я чего?
Предлагаю, как только новый вариант будет готов, перенести его в ветку master, чтобы упростить редактирование шаблонов..
По-моему, нормально. Со временем может что-то проявиться, но пока порядок.
Cлил всё в мастер.
git status показыввает новые файлы и советует:
Ваша ветка обновлена в соответствии с «origin/master».
Изменения, которые будут включены в коммит: (используйте «git reset HEAD <файл>…», чтобы убрать из индекса)
Мне их перечислить в этой команде?
Как у тебя это получается))))
посмотри git reset -h
, думаю можно сделать git reset --hard
, если нечего терять.
Стоп. Там в списке файлы из tools/preprocessing/dict/__pycache__/
хм.. он их не должен видеть, каталог(и) __pycache__
включен в .gitignore
В любой директории не должен видеть?
Ну да. У меня не видит.
Удалю из tools/preprocessing/dict и сделаю git rm.
Вроде порядок.
Предлагаю новую ветку переименовать в testing, я буду в ней работать. Ты будешь смотреть и переносить в главную.
Думаю ветки стоит создавать, когда изменения неоднозначные или глобальные. А так, смотри сам, попробовать можно. Если запутаемся или не понравиться вернёмся к старой схеме :) Ну и сливать в master тоже можешь сам, как протестишь изменения ;)
Хорошо. Буду вносить изменения в мастер :)
Я тут подумал вынести определение падежа, рода, числа в отдельный класс. Основан будет на том словаре который уже есть, но немного в другом формате с описанием одного слова в разных формах, что упростит его пополнение. Использоваться будет в виде:
words.get_gender('слово')
-> мужской / женскийwords.get_case('слово')
-> [список совпавших падежей] например [0, 1, 0, 1, 1, 0]Буду рад услышать предложения, а также пожелания к необходимым запросам к этому классу. Через пару дней покажу первый вариант.