Использование NLP для разрешения омографов

Есть размеченный корпус из 700 записей вида

амбарный замо`к
без труда открыл замо`к двери
бесшумно открыл замо`к
блестящий никелированный замо`к 
ближайший за`мок обнаружился

из которых 80% используется для обучения, остальное для теста.

Используется библиотека gensim. Модель создается так:

model = FT_gensim(size=28, window=5, workers=4, iter=5)  # FastText
model.build_vocab(sentences=dataset)
model.train(
    sentences=dataset, epochs=model.epochs,
    total_examples=model.corpus_count, total_words=model.corpus_total_words,
)

Где dataset это список списков слов. (Список строк корпуса, где каждая строка разделена на слова)

На запрос model.wv.most_similar(positive=["щелкнул"]) модель дает такое предсказание:

[('вы', 0.36629483103752136),
 ('весь', 0.2819870412349701),
 ('щёлкнул', 0.230695903301239),
 ('за`мок', 0.2190021276473999),
 ('еще', 0.20068413019180298),
 ('на', 0.1991848647594452),
 ('большой', 0.16020019352436066),
 ('легко', 0.1342184841632843),
 ('дверной', 0.12372174859046936),
 ('висячий', 0.0880974680185318)]

В котором есть ошибочное ударение, но правильного нет вообще. Несмотря на то, что в корпусе 25 записей со словом "щелкнул" и его производными, которые определяют замОк и ни одной для зАмок

вверху щелкнул замо`к
вскоре замо`к щелкнул
замо`к входной двери щелкнул

Как модель для слова "щелкнул" предложила "за`мок" если нет ни одного предложения, в котором встречаются оба эти слова? В чем ошибка? И как сделать правильно?


Ответы (0 шт):