Омографы

Ответить
Аватара пользователя
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 КБ) 10 скачиваний

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

Омографы

#22

Сообщение Lecron »

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

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

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

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

Омографы

#23

Сообщение Lecron »

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

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

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

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

Ответить

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