Программа основана 9 сентября 1999 года Дмитрием Анисимовым
Пролетарии всех стран - соединяйтесь!


Правда!

Первый Open-Source универсальный переводчик
Сей форум создан для обсуждения программы машинного переводчика "Правда".
Сайт программы находится здесь..

prawda

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » prawda » Алгоритмы машинного перевода. » Выбор точного значения многозначного слова по контексту.


Выбор точного значения многозначного слова по контексту.

Сообщений 1 страница 8 из 8

1

Здравствуйте! Надеюсь, вам пригодятся мои соображения по выбору смысла многозначных слов из контекста.

Основная трудность перевода научить программу "понимать" значение слова.

Например две фразы:

Человеку нужна пересадка почки (почка анат. kidney).
На ветке набухла последняя почка (почка бот. bud).

Мы понимаем значение слова сходу. Ведь там человек а там ветка!  :) А порграмма? А прорамме все равно, она выбирает любой вариант и вот человеку уже пересаживают будущий листик :canthearyou:

Вот алгоритм действий, направленный на "очеловечивание" программы:

1) По основному словарю переводятся однозначные слова.
2) Для многозначных слов подключается контекстный словарь (смысл слова).
3) Пусть каждое слово в словаре - название массива. В массиве хранится контекст слова. Все контексты выполняются на обоих языках и выстроены в алфавитном порядке.
4) В случае, если слово многозначно, проверяется текст до и после слова на предмет совпадения с контекстом (абзац например).
5) Совпавшими словами (как вариант и количеством совпадений) заполняется временный массив.
6) С содержимым временного массива сравнивается контекст вариантов перевода и выбирается слово с наибольшим количеством совпадений.

Небольшой пример:

1__6__786__492__СЛОВО__3
АНГЛИЙСКИЙ:              ПРОМЕЖУТОЧНЫЙ            РУССКИЙ:
- *** (1,2,3)                (1,3)                                - *** (6,7,8)
                                                                          - *** (9,4,1) ?
                                                                          - *** (1,2,3) !!

Простите, если что не так, программирование только учу. :-) Если не понятен принцип - представьте, как переводите сами.

И краеугольный камень метода: да кто ж в здравом уме этим заниматься то будет?! Там же работы :canthearyou:

Мой вариант решения: =)

В одиночку этим заниматься никто не будет. Одно дело составить словарь, другое - расширить этот словарь в 3-5 раз...
Единственный выход - сделать скрипт, дополняющий смысловой массив новыми словами. Вшить его в выбор вариантов значения слова и показывать где то внизу с приглашением ко вводу:
Ув. пользователь! Вы мне очень поможете, уточнив слово в продложении определившее выш выбор.

И вот Вася Пупкин перевел д.з. по инглишу и внес в словарь несколько слов. Затем Сан Саныч одолел сложную man-страницу и внес еще десяток... Через пару дней они вспомнят об этой программе и пришлют свои файлики с новыми словами на этот форум!

Идея как по мне проста до банальности. И именно поэтому это будет работать, ведь каждый хочет почувствовать себя частью чего то большого. Почувствовать себя разработчиком ;)

Да и в конце концов. Даже если треть тех кто скачал программу и смог её скомпилировать сделает свой вклад, программа будет развиваться! Ведь они уже энтузеасты. (Кому ж еще прийдет в голову мысль скачавать исходники, компилировать и устанавливать если есть Google и Yandex? :)

Отредактировано Артём (2014-10-07 08:55:42)

0

2

Ну, на мой взгляд, ты мыслишь в правильном направлении.
Настолько правильном, что оно даже частично реализовано в программе "Правда".
Но как всегда, есть идея, а есть её техническое воплощение.
[взломанный сайт]
Чтобы этот метод работал, нужно чтобы программа понимала,
что одна почка относится к человеку, а вторая к растению.
А как программа может это знать?

Сейчас эта информация получается из непосредственных синтаксических связей.
Вот например если сейчас взять эсперантское слово "elstara", то программа
переведёт его по-разному, если имеется в виду "торчащий гвоздь" или
"выдающийся человек".

Сейчас используются несколько непосредственных синтаксических связей.
глагол - подлежащее
глагол - прямое дополнение
глагол - дополнение с предлогом
глагол - наречие
сужествительное - его определение
существительное - другое существительное в родительном падеже

Примеры, которые ты привёл не содержит непосредственной синтаксической связи.
Поэтому нынешняя программа их не поймёт.
Она будет пытаться зацепиться за более близких соседей. Например "пересадка почки".
И программа в этом случае обязательно ошибётся, потому что "пересадка" гораздо
чаще употребляется с растениями, чем с органами человека.
[взломанный сайт]

Но это ещё не всё. Это разные связи.
"Нужна человеку" - это связь между модальностью и косвенным дополнением.
"набухла на ветке" - это предложное дополнение, означающее место.
Эти разнородные связи надо как-то сравнивать, а я не знаю как.

Вотъ. Так всегда бывает, когда человеческое знание пытаешься изложить для машины.
Формально. Формально - значит с помощью формул.

Теперь твоя вторая идея.
О том, что энтузиасты могут пополнять словарь программы.

Ну наверное словарь-то они могут дополнять.
А вот смысловые связи, скорее всего, нет.
Потому что тут работы не в 2-3 раза больше. А раз в сто.
Ну ты представь сколько смысловых связей имеет каждое слово!

А во вторых - чтобы заниматься такими вещами, нужно понимать, что ты делаешь.
Потому что одно исправляешь, другое портишь.
Надо же это как-то тестировать, координировать работу команды энтузиастов.
Короче - это уже не техническое, а социальное изобретение получается.

Но если ты это действительно сможешь осилить и изобрести - цены тебе не будет.
Потому что уметь делать социальные изобретения - это сейчас очень актуальная тема.
Опен-соурс - одно из таких изобретений. Сейчас вот ещё крауд-сорсинг какой-то есть.
Социализм и коммунизм - это тоже на эту тему.

Давай для начала попробуем раскрутить этот форум.
Чтобы энтузиасты просто приходили в это место.
А потом (вместе с энтузиастами) придумаем куда направить усилия.

0

3

Вот и сыграло роль мое незнание вопроса.

В предложенном мною варианте вообще не учитываются синтаксические связи. Он берет количеством:

Тот же пример по другому:

Если количество слов, относящихся к человеку (человек и пересадка) больше, чем к растению (пересадка), слово определено верно. Почки по моему никто не пересаживает, но тем не менее человек к почке не относится вообще никак.

И наоборот к растению (ветка и набухла) отсылок больше, чем к человеку (может ли почка набухнуть?).

Да и во всем абзаце ситуация будет аналогична...

Но я уже вижу, что это еще дорабатывать и дорабатывать. Качеством то брать гораздо лучше! :) (хоть и не легче :| )

Отредактировано Артём (2014-10-08 08:29:31)

0

4

Ну, надеюсь ты посмотрел мою лекцию про "грамматики Анисимова".

Давай с помощью ТРИЗ-а попробуем изобрести какой-нибудь способ определять значения
многозначных слов. И начнём оттуда же, откуда начались рассуждения о грамматике.
С Идеального Конечного Результата.

В чём проблема? В том, что ситуаций, в которых употребляется слово очень много.
Поэтому их нельзя все внести в словарь. Жизни не хватит ни у меня, ни у моих
последователей, ни даже у таких богатых корпораций как Гугл. Гугл решил попробовать
найти выход в том, что применять статистические методы. Ну бох ему в помощь.
Мы не можеи идти путём Гугла. У нас на это нет ни денег, ни программистов, ни
вычислительных мощностей, ни огромных массивов текстов.

Поэтому мы пойдём другим путём - через понимание того, как язык устроен.

Итак, нам нужно изобрести способ, отображать в словаре информацию о контекстном
значении слов. Причём этой информации должно быть "мало". Что значит "мало"?
Чтобы всю эту информацию можно было внести в словарь руками. То есть
разумный обьем должен быть примерно такой:
Если слово имеет десять значений, то каждое значение может иметь при себе логическое
выражение длинной, ну допустим 100 символов, которое полностью характеризует его
словоупотребление.

А вот какая информация должна лежать в этом выражении и как эта информация
закодирована, и как эта информация используется - это всё на усмотрение изобретателя.

Это значит, что не нужно (или даже нельзя) строить связи каждого слова с каждым.

Обычно, когда наивный лингвист пытается работать со смыслами, он начинает с
примеров типа того, который ты привёл - "почка" растения или человека.
Это пример материального обьекта.

С материальными обьектами работать очень удобно - они легко классифицируются.
Можно строить иерархии обьектов, смысловые деревья, и начинать использовать матан.
Все так делают. Но мне это напоминает попытки искать под фонарём.

Вот я взял 200 самых распространённых сущнствительных русского языка:

Человек:
  человек друг ребенок женщина отец  бог жена мать мама   
  президент сын муж автор мужчина товарищ директор
  девушка    брат гражданин начальник   

Части-тела:
  рука лицо глаз голова нога орган тело сердце плечо   
  палец

Предмет:
  дом машина дверь стол окно стена вещь объект   

Письмо: книга письмо газета документ   

Время: год  день час ночь пора минута вечер месяц век   
  момент утро неделя срок период

Вещество:
  вода материал

Процесс:дело работа развитие процесс действие деятельность   
  труд ход движение шаг создание производство
  игра исследование       

  взгляд   
  помощь   
Событие:
  смерть встреча событие случай

Место:
  место сторона страна мир город земля область улица дорога   
  комната точка лес зал квартира   

Общество:
  деньги право власть закон война суд государство школа   
  общество театр рынок предприятие правительство федерация   
  партия наука цена рубль институт искусство культура   
  служба   

Группы-людей:  народ семья компания

Эмоции: любовь интерес чувство   

Информация:
  слово вопрос данные решение история статья   

Мыслительная-деятельность:
  условие душа мысль язык смысл внимание проблема   
  образ задача правило идея план мнение опыт информация   
  принцип метод проект значение

Разговор: ответ совет речь пример тема разговор

Структура:
  конец система часть группа начало форма связь организация   
  порядок роль центр глава ряд основа очередь состав   
  член тип структура

Мера:   тысяча число уровень номер рост мера счет количество

Причинно-следственный связи:
  цель причина возможность результат средство

Не классифицировано:
  жизнь раз сила вид голос имя свет отношение
  путь качество ситуация  состояние программа
  судьба положение управление

И что мы тут видим? Материальные обьекты (живые и неживые) составляют всего 20%
от общего числа слов. Дальше соотношение меняется, но это же САМЫЕ частотные
слова! То есть, придумываемый метод должен уметь работать и с нематериальными
понятиями.

0

5

Лекцию мой мозг еще переваривает. Затруднительно сразу воспринять новую информацию. Так что пересмотрю её еще парочку раз.

А вот мои мысли по поводу раскрутки форума.

Вступление, примеры. Можно не читать :)

Сразу скажу: я не заядлый форумчанин. Изредка читаю habrahabr, ищу информацию по линуксу... Но парочка ресурсов меня действительно зацепила. Далее о них:

Первое, что я долго читал Luxhard.com

Блог для компьюторных новичков. В понятной форме обьясняются базовые и максимально полезные для новичков вопросы. Нет растекания мысли по древу, сразу видно что текст проработан. И главное, все было понятно. То есть абсолютно все, даже человеку, впервые севшему за компьютер.

Первый ресурс, где я зарегистрировался Debian.ru

Официальный русскоязычный форум Debian. Что привлекло и заставило зарегестрироваться: люди. Во первых, они адекватны. Что нечасто встретишь на просторах интернета. Они помогали даже вопрошающим из других дистрибутивов, даже не deb-ориентированных. Помогали по мере возможности конечно, давали ссылки, советовали. А не посылали куда ни будь...

И во вторых - курилка. Это совершенно отдельная история. Даже сейчас, не заходя в технические разделы я порой возвращаюсь туда за свежими анекдотами, каламбурами и новым срачем на произвольные темы.

Эти два фактора до сих пор держат меня там. И это один из двух ресурсов, где я зарегистрирован (второй - этот)  :)

Вывод:

Я понимаю, есть искуственные способы поднять сайт в поисковой выдаче и ... Если человек зайдет на не интересный ему форум с бесполезным содержимым, он тут же уйдет.

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

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

PPS: Для быстрого наполнения форума можно продублировать статьи с сайта. Руководство к примеру. Очень интересная статья, введение, да и мало ли еще что! :)

Отредактировано Артём (2014-10-11 11:08:06)

0

6

К сожалению поисковые сервера фильтруют выдачу, и всячески вставляют палки в колёса.
Более того если находят специалистов то раньше они его нанимали, лишь бы на конкурентов не работал.
А сейчас мозги полощут невменяемыми интервью, которые длятся годами.

0

7

Артём

Вам доходят сообщения?

0

8

Prawda

Дмитрий Анисимов вам доходят сообщения?

Я не вижу в Интернете что выложен пакет Правда, Вы хотите чтоб я опубликовал на Гитхабе версию 4.0 Вашу?

0


Вы здесь » prawda » Алгоритмы машинного перевода. » Выбор точного значения многозначного слова по контексту.