Омографы

Ответить
Аватара пользователя
evmir_troll-hunter
Администратор

Омографы

#1

Сообщение evmir_troll-hunter »

Омографы — это разные слова, пишущиеся одинаково, но различающиеся ударением.
► Показать
Обновлены (исправлены, расширены...) словари для "ручного" поиска омографов в тексте (*.hmg)

:download: Расширенный
:download: Сокращённый
:download: Ё-омоформы
:download: Ё-омоформы (спецформат. для программы "Книгодел")
:download: Ё-омоформы (спецформат. для Loquendo TTS)

Редакция: evilone, retigor, good_cat, E. Miroshnychenko


Что такое hmg-словари?
hmg-словари - файлы со списками замен, каждая строка которых содержит перечень словоформ искомого омографа и его искомую форму в тексте; между ними стоит знак равенства (=). Левая часть - искомый фрагмент текста, правая часть - варианты его замены, перечисленные через запятую.
Например:
замок=зАмок,замОк
По умолчанию различие между прописными и строчными буквами при рассмотрении шаблонов не делается. Если регистр букв имеет значение, добавляют символ "$" в начало строки также как и в словарях .dic
$Толстой=тОлстой,толстОй
Данный формат словарей поддерживается программами "Homograph","Балаболка", "Demagog".

В отличии от прочих словарей, hmg-словари используются только для ручной разметки текста. И хотя это очень долго и у многих не хватает терпения возиться со всем этим, особенно если текст весьма объемный, использование данного способа разметки позволяет практически полностью снять омонимию в тексте выставив нужную форму с проставленным ударением.

Аватара пользователя
SZ-Vtk
Обыватель

Yandex TTS

#2

Сообщение SZ-Vtk »

Об одном способе борьбы с омографами

Омографы - позор любой знаковой системы, признание неспособности системы справиться с материалом. Разрешать омографы - увлекательное дело сродни возведению прекрасных мостов через предварительно выкопанные ямы.
Лучше всего с омографами борется сам человек читающий, чуть хуже нейронные сети, далее мы, составители словарей, программисты и говорилкослушатели разной степени образованности и склонности к пуризму, Следует заметить, что даже человек разумный не всегда может с этим справиться (по крайней мере в рамках предложения). Пример. "Большая часть пространства между ветвями галактик заполнена водородом и пылью". Если вы ранее не знали "бОльшая" или "большАя", из приведенного выше предложения вы этого точно не узнаете.То есть в общем случае задача восстановления осмысленного текста из обычного является в русской орфографии нерешаемой.

Теперь о нашем. Я по-прежнему считаю, что наилушим является двухэтапный метод:
1) с помощью внешней программы (лучше интернет-сервиса) переводим обычный текст в текст с "ё" и ударениями в омографах
2) с помощью средств конкретных движков устраняем дефекты речи.
Способы, которыми мы обычно пользуемся, например, "*", не всегда хороши из-за побочных эффектов, а вызвано их применение дефицитом времени и памяти. В случае внешней обработки, не имея ограничений ни того, ни другого, мы можем пользоваться только точными заменами. Кроме того, как это ни удивительно, для некоторые классов омографов можно обрабытывать весь класс целиком.

Среди 5500 омографов русской орфографии имеется небольшой класс (около 200 штук) омографов вида <и.п.мн.ч / р.п.ед.ч.>: руки, ноги, спины, лица, стены, города, реки, леса, горы, моря и т.д. Класс небольшой, но достаточно распостранённый. Чтобы правильно поставить ударение в омографах этого класса, достаточно определить в каком числе (ед. или мн.) стоит омограф, а это определяется видом части речи предстоящего слова. Таким образом, нужно иметь таблицу всех слов русского языка во всех формах с указанием части речи и (для прилагательных) числа.Тогда получаем:

<Существ><омограф> - ед.число //на берегу рекИ
<Глагол><омограф> - мн.число //текут рЕки
<Прич><омограф> - мн.число //мчащиеся рЕки
<Дееприч><омограф> - мн.число //изгибая рЕки
<Прил ед.ч><омограф> - ед.число //голубой рекИ
<Прил мн.ч><омограф> - мн.число //синие рЕки
мои,твои,наши,ваши<омограф> - мн.число //мои рЕки
моей,твоей,нашей,вашей<омограф> - ед.число //моей рекИ

Аватара пользователя
Nxtpr
Постоялец

Yandex TTS

#3

Сообщение Nxtpr »

Усе уже сделано до нас https://goldlit.ru/component/slog, жаль не для нас.

Аватара пользователя
lplee

Yandex TTS

#4

Сообщение lplee »

Nxtpr писал(а):
17 июл 2019 01:41
Усе уже сделано до нас https://goldlit.ru/component/slog
Там ничего не сделано, обычный разбор предложения на отдельные слова и указание всех, в т.ч. канонической, форм слов

Аватара пользователя
lplee

Yandex TTS

#5

Сообщение lplee »

lplee писал(а):
17 июл 2019 10:36
Среди 5500 омографов русской орфографии имеется небольшой класс (около 200 штук) омографов вида <и.п.мн.ч / р.п.ед.ч.>: руки, ноги, спины, лица, стены, города, реки, леса, горы, моря и т.д
Составить правила для 200шт не проблема, никто ещё не сделал этого?
Вообще, для разбора текста есть неплохие библиотеки на Питоне. Я работал с одной из них (Gensim) для задач кластеризации текстов. Текст, семантические связи и тд понимает почти отлично. Вероятно можно найти и доработать что-нибудь для многострадальных ударений.

Аватара пользователя
Nxtpr
Постоялец

Yandex TTS

#6

Сообщение Nxtpr »

lplee писал(а):
17 июл 2019 10:36
Там ничего не сделано
Словарные базы сделаны. Кое-где и размеченный текст для машинного обучения. Но не для свободного доступа. Это основа. Без нее ничего не сделаешь.

Аватара пользователя
lplee

Yandex TTS

#7

Сообщение lplee »

Nxtpr писал(а):
17 июл 2019 11:31
Словарные базы сделаны. Кое-где и размеченный текст для машинного обучения. Но не для свободного доступа. Это основа. Без нее ничего не сделаешь.
Не понимаю о чем вы. Выше написали про ударения исходя из конструкции предложения (падежи и тд), вы дали ссылку на сайт, где обычный пословный разбор.
Задам вопрос просто: как это "уже все сделано" поможет проставить ударения правильно?
Вполне вероятно я чего-то не знаю, но вы и не объясняете ничего толком, кроме "все уже есть". Без обид только.

Аватара пользователя
Nxtpr
Постоялец

Yandex TTS

#8

Сообщение Nxtpr »

На что обижаться. Я к тому, что синтаксический анализ без соответствующих баз не сделаешь.
Почитайте https://habr.com/ru/post/148124/ Даже не статью - комментарии к ней.

Аватара пользователя
SZ-Vtk
Обыватель

Yandex TTS

#9

Сообщение SZ-Vtk »

Таблица всех слов русского языка с их синтаксическими характеристиками получается из известного словаря Зализняка (ок. 100000 слов) с помощью несложной программы или скриптов. И весь дальнейший анализ сводится к нахождению слова в таблице.

Аватара пользователя
lplee

Yandex TTS

#10

Сообщение lplee »

SZ-Vtk писал(а):
16 июл 2019 23:41
Почитайте https://habr.com/ru/post/148124/ Даже не статью - комментарии к ней
Да, уже читал ее, и много других по теме. Есть еще от ABBYY Compreno, сам не юзал, но читал, она тоже разбирает текст на составные части, так сказать, но ещё более мощно. Кажется даже смысл текста понимает. Жаль только - платная, и, если не изменяет память, только доя юрлиц. Но не важно.
Вы это хорошо затронули тему семантического анализа текста для простановки ударений. Если получится реализовать, это же будет унифицированное средство обработки текста для последующей прослушки/записи на любом движке и программе. А то сейчас куча словарей и скриптов, какие-то правила и исключения, сплошное нагромождение не всегда эффективных костылей.....

Аватара пользователя
lplee

Омографы

#11

Сообщение lplee »

evmir_troll-hunter писал(а):
09 авг 2018 02:23
Что такое hmg-словари?
hmg-словари - файлы со списками замен, каждая строка которых содержит перечень словоформ искомого омографа и его искомую форму в тексте; между ними стоит знак равенства (=). Левая часть - искомый фрагмент текста, правая часть - варианты его замены, перечисленные через запятую.
Например:
замок=зАмок,замОк
Подскажите, каким образом выбирается нужно слово из 2х? Ниже вы написали про ручной метод, но это не вариант, 20-ые годы на дворе все-таки.
Например, я работаю с программами Балаболка и Демагог, как я могу применить данные словари?

Аватара пользователя
balabolka
V.I.P.

Омографы

#12

Сообщение balabolka »

lplee писал(а):
18 июл 2019 15:19
Ниже вы написали про ручной метод, но это не вариант, 20-ые годы на дворе все-таки.
20-ые годы, и что?! Вы знаете, где можно взять готовый компонент/сервис/библиотеку/консольную программу, которая умела бы в автоматическом режиме распознавать омографы и расставлять ударения? (И желательно бесплатно.) Если бы было такое готовое программное решение, да еще для разных языков, то можно подумать об использовании его в "Балаболке". Но ничего подобного не было двенадцать лет назад (когда обсуждался вопрос об обработке омографов в "Балаболке"), нет и сейчас.

Вот было бы здорово, если российское государство выделило несколько миллионов рублей на разработку программы или сервиса, преобразующего любой документ в текст, который без ошибок смог бы прочитать речевой синтезатор. Расстановка ударений в омографах или даже во всех словах, расшифровка сокращений и формул, замена чисел словами и т.д. Нужна команда из филологов и программистов с хорошим финансированием; и чтобы результаты их работы могли быть бесплатно использованы любыми желающими (как сервис, как программная библиотека, как компонент для разных языков программирования...). Как бы это пошло на пользу продвижению русского языка в цифровом пространстве...

А пока я смог реализовать лишь "ручной метод" расстановки ударений в омографах. В "Балаболке" это пункт главного меню "Текст|Искать омографы". Программа будет просматривать текст от начала, искать слова-омографы и показывать плавающее окно с вариантами замены. Или можно выбрать пункт главного меню "Вид|Показывать|Омографы": в этом случае все слова-омографы из выбранного словаря будут подсвечены в тексте другим цветом. Можно щелкнуть правой кнопкой мыши на слове и выбрать вариант замены в контекстном меню.

Подробнее про словари омографов написано в файле справки "Балаболки". Словарь предусматривает и автоматические замены для выражений со словом-омографом (но реализована замена очень упрощенно, серьезным решением проблемы с офографами это назвать нельзя).

Код: Выделить всё

$Толстого=То<лстого,Толсто<го
||$Льва Толстого=Толсто<го
||$Льва Николаевича Толстого=Толсто<го

Аватара пользователя
lplee

Омографы

#13

Сообщение lplee »

balabolka писал(а):
18 июл 2019 16:19
Вы знаете, где можно взять готовый компонент/сервис/библиотеку/консольную программу, которая умела бы в автоматическом режиме распознавать омографы и расставлять ударения? (И желательно бесплатно.)
Нет, не знаю, но нужно искать.
balabolka писал(а):
18 июл 2019 16:19
ничего подобного не было двенадцать лет назад (когда обсуждался вопрос об обработке омографов в "Балаболке"), нет и сейчас.
Не соглашусь с вами. За последние несколько лет машинное обучение сильно ушло вперед, нейронки чуть не ежедневно удивляют, как с учителем, так и без.
balabolka писал(а):
18 июл 2019 16:19
А пока я смог реализовать лишь "ручной метод" расстановки ударений в омографах
За это вам большое спасибо! И за программу в целом! Но ручной метод это архаика, вы то точно это понимаете.
Сейчас я занимаюсь вопросом автоматизации этого момента, как будут результаты сразу вам обозначу.

Аватара пользователя
HaRpY
Наблюдатель

Омографы

#14

Сообщение HaRpY »

Хотелось бы узнать мнение общественности о полноте и достоверности словарей омографов, находящихся в шапке текущей темы (total_omoforms.hmg и yo_total.hmg).
Как вы думаете, следует ли эти словари актуализировать или пусть остаются «как есть»?

Аватара пользователя
tonio_k
V.I.P.

Омографы

#15

Сообщение tonio_k »

HaRpY писал(а):
24 ноя 2019 17:47
актуализировать или пусть остаются «как есть»?
мое мнение, оставить как есть. А смысл их править? Эти словари нужны в первую очередь тем, кто применяет ручной метод проверки омографов, причем таких пользователей не так уж и много.
Лично я к ним не отношусь. Кроме, разве что, все=всЕ,всЁ - это единственное что я могу себе позволить вручную проверить перед озвучкой книги :smile1:
В словарях выше представлены практически 95% всех встречаемых и хоть иногда употребляемых омографов в книгах.
5% - это настолько маленькая погрешность из очень редко встречающихся омографов, что актуализация словарей погоду не сделает - качество озвучки в целом не изменит.
Более того, со временем, пользователь так или иначе переходит к личному "сокращенному словарю" состоящего из наиболее часто встречаемых или, точнее, статистически часто двояко звучащих омогрфов. С таким словарем можно за относительно небольшой промежуток времени проверить все сомнительные омографы и приступить к прослушиванию книги.

Аватара пользователя
HaRpY
Наблюдатель

Омографы

#16

Сообщение HaRpY »

tonio_k писал(а):
25 ноя 2019 23:10
Эти словари нужны в первую очередь тем, кто применяет ручной метод проверки омографов, причем таких пользователей не так уж и много.
Спасибо за высказанное мнение.
Мне кажется, что считать данные словари омографов исключительно словарями для ручной правки неправильно. При программной обработке текста (не регулярными выражениями), для того чтобы определить является ли конкретное слово омографом или нет тоже нужен подобный словарь. Вы же для ручной расстановки омографов, как раз и используете программу, которая с данным словарем работает.
tonio_k писал(а):
25 ноя 2019 23:10
В словарях выше представлены практически 95% всех встречаемых и хоть иногда употребляемых омографов в книгах.
Ох уж эти 95% :smile1:

Код: Выделить всё

архимед=архимЁд,архимЕд
tonio_k писал(а):
25 ноя 2019 23:10
Более того, со временем, пользователь так или иначе переходит к личному "сокращенному словарю"
Если личный «сокращенный словарь» представляет собой подмножество исходного полного, то это одно (нормально). Если в личном словаре есть омоформы, которых нет в исходном, то другое (плохо).
Может кто из разработчиков программ выскажется?

Аватара пользователя
tonio_k
V.I.P.

Омографы

#17

Сообщение tonio_k »

Посмотрите словарь all_omographs.hmg идущий в комплекте с программой Homograph от ув. good_cat
https://mytts.info/viewtopic.php?f=22&t=81
Словарь выглядит актуализированным

Аватара пользователя
HaRpY
Наблюдатель

Омографы

#18

Сообщение HaRpY »

Если я правильно разобрался, то all_omographs.hmg более древний (от 12.05.2017), чем словари в шапке (от 13.08.2018). Его же и использовали как источник:
good_cat писал(а):
27 июл 2018 18:37
Обновление программы Homograph
27.07.2018 Версия 2.0.0.379 (релиз программы)
(+) Словарь омографов пополнен и разбит на 2 словаря.
total_omoforms.hmg - основной словарь;
yo_total.hmg - словарь омографов Ё/Е.
P.S.
tonio_k писал(а):
26 ноя 2019 12:50
Ну тогда , если у вас есть Что добавить или предложение по изменению
HaRpY писал(а):
26 ноя 2019 11:31
Может кто из разработчиков программ выскажется?
Подождём, что скажут (и скажут ли вообще :boss: ) "начальники транспортных цехов"... Может они тоже считают оптимальным вариантом: оставить "как есть"

Аватара пользователя
good_cat
Администратор

Омографы

#19

Сообщение good_cat »

Словарь омографов all_omographs.hmg был пополнен, очищен от найденных ошибок и разбит на 2 словаря:

total_omoforms.hmg - основной словарь;
yo_total.hmg - словарь омографов Ё/Е.

Тем не менее словарь all_omographs.hmg может быть полезен, если пользователю нужна частота
появления омографов в тексте.
Словари естественно не полны и вряд ли могут быть "окончательно пополнены", учитывая обилие словоформ русского языка.

В последнюю редакцию словарей не вошли некоторые омографы.
Например:

сети=сЕти,сетИ

т.к до конца не ясно, являются ли они нормой русского языка или
это профессионализмы (жаргон).

Аватара пользователя
HaRpY
Наблюдатель

Омографы

#20

Сообщение HaRpY »

good_cat писал(а):
26 ноя 2019 14:29
В последнюю редакцию словарей не вошли некоторые омографы.
Например:

сети=сЕти,сетИ

т.к до конца не ясно, являются ли они нормой русского языка или
это профессионализмы (жаргон).
Думаю ничего страшного не произойдет если для "сети" ударение будет только "сЕти". Вроде бы смысл от этого не меняется, только субъективное восприятие. Считаю, что правильно исключили.

С другой стороны что-то вроде "инспекторА" (используемое вместо правильного "инспекторы"), вполне вероятно встретить в тексте (например: "А вы товарищи инспекторА, что думаете?" - обращение во множественном числе) . Ударение в другом месте уже искажает смысл. Подобные омографы, должны оставаться в словаре.

Аватара пользователя
Lecron
Обыватель

Омографы

#21

Сообщение Lecron »

Наткнулся в сети на статью Проект Natasha. Набор качественных открытых инструментов для обработки естественного русского языка (NLP) и подумал, почему бы не приспособить это для снятия омографии. Только проблема в том, что если в алгоритмизации и программировании я что-то понимаю, то по русскому языку, мне ставили 3, чтобы не портить двойкой жизнь ученику отлично успевающему по естественным наукам. Поэтому без помощи сообщества языкознатцев, исследовательская демка, так и останется исследовательской демкой.

Сразу перечислю проблемные темы.
  1. Понимание и перевод на русский, грамматических признаков выдаваемых программой. см. файл omograf.txt.
  2. Нужна оценка качества работы библиотеки. Модель обучена на новостях, поэтому качество вроде хорошее, но насколько, мне непонятно. Может вообще не стоит затевать движуху?
    1. для проверки, сохраните любой текст в файл grammar_group_src.txt, запустите grammar_group.py и в файле grammar_group_res.txt будут группы признаков и слова им соответствующие.
    2. для детального разбора одного предложения, запустите demo.py "тестируемое предложение".
  3. Нужна помощь спецов по машинному обучению и NLP. Существуют эмбединги (чтобы это слово не значило) для худлита navec_hudlit_v1_12B_500K_300d_100q.tar, обученные по librusec, но для них нет или я не нашел готовых коэффициентов для библиотеки SlovNet (morph, syntax, ner), что может существенно повысить качество определения признаков. Тема для меня настолько чуждая, что создать их не могу.
  4. Какие признаки/правила необходимы для достаточно качественного разрешения омографа? Библиотека умеет определять грамматические признаки, позволяет получить связь слов в предложении, то есть подчиненное и родительское слово для омографа, а также нормализовать их.
  5. На данный момент пользуюсь сторонней самописной программой, не имеющей документации. Её словарь omograph_idx.omn, еще та кракозябра. Для лучшего понимания, перевел цифровые коды в русские аббревиатуры omograph_abbr.omn.
    1. насколько правильно перевел?
    2. насколько правильно составлен словарь с позиции языкознания?
    3. нужна помощь в лучшем понимании его формата и какие признаки из словаря можно сравнительно безболезненно проигнорировать, без существенно ухудшения качества работы?
      • на данный момент понятно что < и > указатели соответственно на подчиненное и родительское слово
      • # — указатель на анализ исходного текста. Вероятно будет проигнорировано, так как лучше перенести в dic/rex словарь, который применять до грамматического снятия омографии.
      • Что значат скобки [] и {}, символы : и @, как связаны токены в правиле "и" или "или", пока непонятно.
  6. сейчас можно протестировать предельной краткий, демонстрационный вариант словаря omograph.omn. Тестируемый текст сохраняете в файл aomo.txt и запускаете aomo.py.
  7. кто-то знающий должен взять ответственность за пополнение и актуализацию словаря.
    Для помощи ответственному, могу написать модуль тестирования, где для каждого омографа, в отдельном файле будут записаны части правил и текст позволяющий их проверить. Если нет ошибок, словарь будет собираться из этих правил автоматически. Плюсы: шире участие пользователей, ответственному проще проверять предложенные правки. Минус: нельзя оперативно вносить правки в сам словарь.
  8. ...вероятно что-то упустил. Предлагайте, уточняйте, общайтесь.
для запуска приложений, нужен установленный Python 3.8 и сама библиотека (установить pip install natasha в командной строке). Если ассоциации ОС установились, достаточно запустить сам .py файл, например aomo.py. Если нет, запускать как python aomo.py.

Если качество библиотеки будет признано достаточным и пойдет коллективная работа, будет проработано удобство использования, прописаны опции командной строки и возможность работать с произвольными файлами. Для релиза, можно будет попробовать упаковать в exe файл. А пока, что есть, то есть. Демка.
omogramm.zip
(57.98 КБ) 41 скачивание

Аватара пользователя
Lecron
Обыватель

Омографы

#22

Сообщение Lecron »

Прогнал слова из списка омографов используемой мной программы, через сервис progaonline.com/accent. Вроде он неплохо расставляет ударения и указывает для них грамматические признаки. Для желающих составить словарь, надеюсь будет неплохим подспорьем. Пример:

Код: Выделить всё

благом=благо`м: прл ед муж пр | благо`м: прл ед ср пр | бла`гом: сущ неод ед ср тв | благо`м: сущ неод ед ср пр
omograph_grammar.txt
(168.55 КБ) 41 скачивание

Аватара пользователя
Lecron
Обыватель

Омографы

#23

Сообщение Lecron »

Уфф. Ценой кучи времени и глаз в кучу, собрал наконец словарь
omograph.omn.zip
(15.09 КБ) 43 скачивания
К счастью, ¾ правил сводились к простому противопоставлению ед/мн, сущ/гл, муж/жен. С остальными пришлось повозится, а некоторые так и остались неразрешенными (чуть меньше 100 шт). К сожалению, это превышает мои знания и настойчиво прошу помощи у знающих язык коллег. Впрочем и остальные правила неплохо бы просмотреть. При таком количестве, глаз замыливается и легко допустить ошибку. Проблемные правила:
► Показать
Напомню, библиотека умеет определять связи слов в предложении и нормализовать слова. Поэтому возможны варианты типа "подчиненное слово 'глагол'" или "омограф — подлежащее (nsubj)".
Словарь составлялся с оглядкой на возможности библиотеки, но в некоторых случаях, если разрешение омографов выходило за ее рамки, во главу угла ставился алгоритм, а не его конкретная реализация.
На данный момент, формат словаря таков:

Код: Выделить всё

омограф=вариант0 : вариант1|правило11|пр12||пр1N| : вариант2|пр21| : вариантN|ghN1|
вертела=ве`ртела : ве`ртела|сущ ед| : верте`ла|гл| : вертела`|сущ мн|
позднее=по`зднее : поздне`йе|нар|прл сравн|предл| : по`зднее|прл|
брони=бро`ни : бро`ни|@$брони| : брони`|@$броня|
берегу=бе`регу : бе`регу|сущ дат| : берегу`|гл|сущ|
саду=саду` : са`ду|дат|
Правило состоит из нескольких токенов, которые могут быть морфологическим признаком или $словом. Для сработки необходимо соблюдение всех условий. Правило может применяться к естественной форме слова (как есть) и к @нормализованной. Например @$броня. И хоть библиотека распознать не может, возможно даже такое: паря`щая|@гл неперех| — нормальная форма слова "паря`щая" должна быть непереходным глаголом, т.е. "пари`ть".
Правила для варианта проверяются последовательно. Варианты также проверяются последовательно. Обычно это не важно, они взаимоисключающие, но иногда (например "берегу") менять местами нельзя. Слово по умолчанию (вариант0), используется когда не сработало ни одно правило. Происходит когда библиотека неверно сработала, определяя признаки, или само правило подразумевает его использование (например "саду").
Если для разрешения омографов понадобятся другие возможности, формат будет расширен.

PS. Сам скрипт применения словаря в новом расширенном формате пока не написан. Акцентировался на составлении словаря, который как можно точнее описывал предметную область. Думаю это важнее всего.

Аватара пользователя
tonio_k
V.I.P.

Омографы

#24

Сообщение tonio_k »

Lecron писал(а):
08 окт 2020 17:54
declension_dynast это функция
тут понятно. Здесь можно сделать через lua так: находим участок текста в по регулярному выражению например, в пределах одного предложения. Это предложение сохраняем в отдельный файл. Передаём этот файл утилите которая применит к этому файлу вашу функцию declension_dynast, перезапишет файл. В lua генерируем простое правило замен dic:
Текст оригинальный=текст измененный функцией declension_dynast
Применяем это правило к тексту (необходимости вставить текст в то же место смысла нет - достаточно замены)

Аватара пользователя
Lecron
Обыватель

Омографы

#25

Сообщение Lecron »

После недавнего видео от wasyaka по редактированию омографов, подумал, что правильнее видеть все фразы из большого количества книг для одного омографа. Лучше видно закономерности. Легко проверить ошибочность утверждения, что мол в таком контексте ударение такое и только такое. Дошли руки до "замок". А когда посмотрел на почти 3000 фраз, во-первых стало страшно, а во-вторых, подумал почему бы вместо захардкоженного словаря, не использовать нейросети.
замок.zip
(56.27 КБ) 17 скачиваний
В архиве 3 файла.
замок.cor - очищенные от излишнего контекста фразы. Их в принципе не сложно превратить в словарь. Хоть для одного слова он будет достаточно полон))). Но в тоже время, "впускает в за`мок" из словаря не поймает "впускает их|его|ее в свой за`мок"
замок.test - ударение проставлено, но контекст сохранен. Можно посмотреть на реальные экзерсисы авторов. Используется для оценки качества работы нейросети.
замок.model — собственно нейросетевая модель. Из 552 замо`к и 326 за`мок, угадала 85%

Код: Выделить всё

              precision    recall  f1-score   support

      за`мок       0.71      0.83      0.76       276
      замо`к       0.92      0.84      0.88       602

    accuracy                           0.84       878
   macro avg       0.81      0.84      0.82       878
weighted avg       0.85      0.84      0.84       878
Для желающих попробовать на своем материале, нужен Питон и установленный пакет sklearn.

Код: Выделить всё

import joblib
model = joblib.load('замок.model')
model.predict(['замок не прокручивался'])
>>['замо`к']
model.predict(['замок разваливался'])
>>['за`мок']

Впечатления в целом. Проблема омографов вполне решаема. По грамматическим признакам глагол/существительное, единственное/множественное, мужской/женский, или статистическими для неразрешимых а-ля "замок". Для уверенно владеющих темой нейросетей и подготовки данных для их обучения, думаю несложно добиться точности 90+%. Но это большая муторная работа. Извлечь данные из корпуса текстов несложно, но вот разметить их, проставить ударение и очистить от мусора — бррррр!
Кстати, если кто-то захочет составить классический словарь, было бы любопытно оценить его точность?

Аватара пользователя
tonio_k
V.I.P.

Омографы

#26

Сообщение tonio_k »

Lecron писал(а):
06 ноя 2020 16:41
Проблема омографов вполне решаема
лично очень сомневаюсь. С трудом верится в безграничность возможностей нейросетей vs могучего русского языка.
Lecron писал(а):
06 ноя 2020 16:41
Но это большая муторная работа.
вот именно! Если этим вопросом не займётся какой нибудь институт или объединение программистов, то задача для одного не подёмная.
Lecron писал(а):
06 ноя 2020 16:41
А когда посмотрел на почти 3000 фраз, во-первых стало страшно, а во-вторых, подумал почему бы вместо захардкоженного словаря, не использовать нейросети.
а проводилась ли сравнительная статистика применения словарей? Что бы сравнить её с результатами работы нейросети.
Вот ваша фраза: "Из 552 замо`к и 326 за`мок, угадала 85%", мне интересно, а каким результатом "угадывания" обладают словари имеющиеся в сборках на форуме? Небольшой офтоп под спойлером:
► Показать
это я к тому, что высокий процент угадывания для нейросети надо правильно сравнивать с результатами работы словарей с правилами, и только тут понятно будет на сколько нейросеть , при всех связанных с ней трудозатратах и скорости работы, будет лучше, чем создания правил для словарей?
причём высокий процент угадывания может быть из-за "по русски" составленного предложения. Например:
В этом замке проживал граф Толстой. А как словари или нейросети будут срабатывать в тексте написанном в стиле магистра Йода:
Толстой граф проживал в замке этом.

UPD и вообще, если результат работы нейросети предпологает последующее прослушивание и корректировку, то чем она координально отличается от составления словарей по старинке?

Аватара пользователя
Lecron
Обыватель

Омографы

#27

Сообщение Lecron »

tonio_k писал(а):
06 ноя 2020 17:52
вот именно! Если этим вопросом не займётся какой нибудь институт или объединение программистов, то задача для одного не подёмная.
Ничуть. Достаточно среднеразвитого сообщества.
Из всего многообразия типовых словарей омографов, наибольшее распространение имеют всего 1000 слов. Ну и еще несколько сотен, когда омографом является имя собственное — То`лсто`го, О`ди`н. Из этой тысячи, 900 разрешаются по грамматическим признакам (ре`ки|сущ мн| : реки`|гл|сущ ед|), которые современные нейросети определяют с 95+ успехом уже сейчас. Осталось разметить только 100 слов, для успешной обработки которых хватит корпуса на 1000-2000 фраз на омограф. И даже 200-300 уже дадут неплохой результат.
Почему так уверенно говорю. Я собрал датасет для этой сотни из 374Мб txt-файлов. Получил вырезку на 9Мб. Из которых 50% вхождений приходится всего на 4 слова — минут, самом, самого, стоит. А 50% слов занимают всего 250Кб. Вот такое оно веселое распределение.
tonio_k писал(а):
06 ноя 2020 17:52
а проводилась ли сравнительная статистика применения словарей? Что бы сравнить её с результатами работы нейросети.
Самому интересно. Но я в ассортименте словарей не силен. Попробуйте проверить сами.
Корпус для теста я предоставил. Удаляете символ ударения, применяете словари и сравниваете построчно с оригиналом (скриптом). Если строка совпала — правильно, нет — неверно.
Предположу убедительную победу сетей.
tonio_k писал(а):
06 ноя 2020 17:52
В этом замке проживал граф Толстой.
Толстой граф проживал в замке этом.
Как раз это для сетей не проблема. Они оперируют не порядком слов, а окружением и дистанцией. Причем даже не по словам, а по n-граммам. Грубо: проживал — прож, рожи, оживал, живал. Ей все равно: проживал граф этом замке, проживал граф замке, проживал этом граф замке, проживал этом замке, проживал замке.
В всех случая результат правильный — за`мок

Аватара пользователя
Lecron
Обыватель

Омографы

#28

Сообщение Lecron »

tonio_k писал(а):
06 ноя 2020 17:52
UPD и вообще, если результат работы нейросети предпологает последующее прослушивание и корректировку, то чем она координально отличается от составления словарей по старинке?
Хороший вопрос. Для ответа на него собрал полный датасет по омографам, которые считаю важными.
Обработано книг: 923 штук / 359 Мб
Омографов: 943
Вхождений: 1723179
stat.csv
(18.55 КБ) 14 скачиваний
Грамматически неразрешимые омографы (109 штук) дают 142151 или 8%
10 самых распространенных омографов дают 725122 вхождения или 42%.
18 распространненных — 50%.
Из них, 14 грамматически разрешимые, которые дают 792965 или 46%

Вначале взял для каждого из них 0.063% записей, чтобы в сумме получить 500 и проверил их на правильность расстановки ударений, исходя из их грамматических признаков. Ударения то правильные и правило когда надо сработает правильно, но вероятность для у`же, по`том, гла`за, о`дин, нача`л, то`му, мало`, ноги` очень мала, а на статистику влияет.
check.zip
(12.06 КБ) 14 скачиваний
Если учесть только "все", "чем", "руки", "стороны", "слова", "дома", получаем 263 теста, из которых 7 ошибочных или всего 2.7%. По полной выборке — 1.8% (они дали еще 2 ошибки). Но реальная точность еще лучше. Грамматика анализируется по всему предложению, со знаками препинания, а у нас выдернутые куски, иногда очень короткие для точного анализа.

Достаточно для того, чтобы исключить "последующее прослушивание и корректировку"?
tonio_k писал(а):
06 ноя 2020 17:52
лично очень сомневаюсь (что проблема обографов решена). С трудом верится в безграничность возможностей нейросетей vs могучего русского языка
И это только грамматика. Если к ним добавить 85% точность для входящих в первую 20-ку четырех неразрешимых омографов (8%) — минут, самом, стоит, самого, — головная боль снята.

Ответить

Вернуться в «Омонимия»