-
Notifications
You must be signed in to change notification settings - Fork 108
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
Невозможные формы морфологии. #123
Comments
Если правильно разобрался в алгоритме работы, исправить сравнительно просто. Нужно предварительно определить список индексов допустимых форм и искать максимальный из них. pred = np.array([1, 2, 4, 1, 3]) # length 753
avail = (0, 1, 3, 4)
idx = pred.take(avail).argmax()
pred = avail[idx] # -> 4 Есть некоторая сложность в определении соответсвия форм OpenCorpora (MorphAnalyzer().dictionary.gramtab) и модели. ud_tags = [parse_form(_) for _ in tags_vocab.item_ids] # разбор форм модели [{pos, *feats_value}, ...]
items = {}
for tag in self.vocab.dictionary.gramtab:
pos = ud_pos(tag)
feats = (v for _, v in ud_feats(tag))
key = {pos, *feats}
ids = tuple(i for i, t in enumerate(ud_tags) if key <= t)
items[tag] = ids |
Проблемы не с единичном словом. Невозможные формы у 80% слов. Количественную долю ошибок не проверял, но например слово "в" распознается также как прилагательное, наречие и союз, а слово "вслед" как глагол.
Более подробное исследование провел для слова "девятьсот". Распознается как 30 форм. Причем нет правильной NUM Nom. Если частично корректные NUM Inan Acc Masc и NUM Nom Fem Sing учитывать как правильные, то из 357 предложений, на 8 правильных, приходится 349 ошибочных.
Как глагол распознается в предложениях:
Как прилагательное в:
Как существительное в:
Даже как PUNCT в:
Необходимо либо внутреннее согласование с формами PyMorphy, либо интерфейс со списком вариантов распознавания в порядке убывания вероятности.
The text was updated successfully, but these errors were encountered: