Использование 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 записей со словом "щелкнул" и его производными, которые определяют замОк и ни одной для зАмок
вверху щелкнул замо`к
вскоре замо`к щелкнул
замо`к входной двери щелкнул
Как модель для слова "щелкнул" предложила "за`мок" если нет ни одного предложения, в котором встречаются оба эти слова? В чем ошибка? И как сделать правильно?