Pandora: Разработка автоматического переводчика с Na'vi - Pandora

Перейти к содержимому

Страница 1 из 1

Разработка автоматического переводчика с Na'vi

#1
Пользователь офлайн   baritone 

  • Гость
  • PipPipPip
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
  • Группа: Пользователи
  • Сообщений: 63
  • Регистрация: 29 декабря 12
  • Skin:
  • ГородМосква
  • Время онлайн: 2 дн. 2 час. 57 мин.
Репутация: 1
Обычный
Идея превратить на'ви в язык международного общения мне тоже пришла в голову, для этого я его сейчас и изучаю.
Но есть особенность: на мой взгляд, он может стать языком международного общения только в том случае, если для общения на нем его не будет необходимости учить вообще.
Прошу прощения, с этими инфиксами и наложениями с учетом лениции и вставок разделяющих букв сдохнуть можно.
Гляньте, во что превратилось "si" в речи Спеллмана, обращенной к Грейс во время их знакомства! Инфикс на инфиксе сидит и инфиксом погоняет. Итоговое слово совершенно нераспознаваемо для неопытного человека.

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

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

Цель работы программы - полученный на на'ви текст будет транслироваться на естественные языки для отправки на форумы или страницы багрепортов, или использоваться напрямую.
Этот аплетт или программа снизит порог вхождения программистов и пользователей-тестеров, для которых английский не родной, в международные сообщества свободного программирования и дизайна.

В общем, на'ви станет языком обратной связи для международных проектов. Чуток обогатить его программистской терминологией - и прекрасно подойдет.
На'ви многим хакерам должны быть симпатичны, просто потому, что жизнь охотника в родоплеменном обществе похожа на жизнь ученого - та же погоня за красивым кодом или теорией, так же добыча не гарантирована даже самому умелому, а все добытое валится на общий стол, так же основной почет и лучшие куски достаются самому рейтинговому хакеру или охотнику, но никто не оказывается обделен результатом. И из-за этого родства душевного мне, кстати, кажется таким естественным, что в кине (и особенно сценарии) ученые шли в бой в финальной битва против RDA вместе с на'ви.
Еще раз повторю, что, возможно, из-за лени у меня ничего не получится, но, может, эти планы и реализуются, потому что я зафанател от "Аватара" просто смертельно, уж больно все знакомо показалось, начиная от гендиректора и директора по безопасности, бульдозериста, и кончая синехвостыми анархистками и НБП-шницами.
0

#2
Пользователь офлайн   Kemaweyan 

  • Ветеран
  • PipPipPipPipPipPipPipPip
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
  • Группа: Пользователи
  • Сообщений: 1 598
  • Регистрация: 07 марта 11
  • Skin:na'vi light
  • ГородХарьков
  • Время онлайн: 167 дн. 12 час. 52 мин. 17 сек.
Репутация: 502
Гениальный

Просмотр сообщенияbaritone сказал:

Прошу прощения, с этими инфиксами и наложениями с учетом лениции и вставок разделяющих букв сдохнуть можно


Это только на первый взгляд страшно. На самом деле всё не так уж плохо. Если почитать Советы начинающим изучение языка На'ви, то там есть пункт о том, что запоминать следует форм слов целиком, а не начальную форму + правила. Правила тоже нужно знать, но распространённые формы должны помниться по-отдельности. Собственно, оно само так и получится с опытом...

Кстати, в других языках есть не менее «страшные» конструкции, причём я говорю о языках естественных. Например, как тебе нравится япоснкое 使わせられていなければなりませんでした (tsukawaserareteinakerebanarimasendesita)? А образовано то всего от 使う (tsukau - «использовать»). Означает этот монстр что-то вроде «нельзя было не заставлять подвергать (что-то) себе в плане использования». Во как. «Заставлять» ещё и в длительном виде, т.е. «нельзя было не быть в этом процессе». И ничего - 300 млн человек говорят на этом языке и считают ещё очень лёгким. Хотя, конечно, такие громоздкие конструкции на практике не используются. Как и в На'ви инфикс обычно 1, иногда 2. Три инфикса сразу - большая редкость. Так что не стоит пугаться...
Tute a new pivängkxo nìNa'vi nì'aw.
0

#3
Пользователь офлайн   pandorskiy kot 

  • pängkxo tireahu eltuä lefngap
  • PipPipPipPipPipPipPipPip
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
  • Группа: Администраторы
  • Сообщений: 9 717
  • Регистрация: 01 марта 11
  • Skin:na'vi night
  • ГородKharkov
  • Время онлайн: 249 дн. 12 час. 17 мин. 8 сек.
Репутация: 4 780
Мудрец

Просмотр сообщенияbaritone сказал:

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

Цель работы программы - полученный на на'ви текст будет транслироваться на естественные языки для отправки на форумы или страницы багрепортов, или использоваться напрямую.
Этот аплетт или программа снизит порог вхождения программистов и пользователей-тестеров, для которых английский не родной, в международные сообщества свободного программирования и дизайна.

Вот честно говоря вообще не понял что все-таки задумано и как оно будет работать :unsure:
Изображение
...I want to go where they are going
Into the world they've been
Can I open up my mind enough to see... ©
0

#4
Пользователь офлайн   baritone 

  • Автор темы
  • Гость
  • PipPipPip
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
  • Группа: Пользователи
  • Сообщений: 63
  • Регистрация: 29 декабря 12
  • Skin:
  • ГородМосква
  • Время онлайн: 2 дн. 2 час. 57 мин.
Репутация: 1
Обычный

Просмотр сообщенияpandorskiy kot (20 января 2013 - 01:53) писал:

Просмотр сообщенияbaritone сказал:

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

Цель работы программы - полученный на на'ви текст будет транслироваться на естественные языки для отправки на форумы или страницы багрепортов, или использоваться напрямую.
Этот аплетт или программа снизит порог вхождения программистов и пользователей-тестеров, для которых английский не родной, в международные сообщества свободного программирования и дизайна.

Вот честно говоря вообще не понял что все-таки задумано и как оно будет работать :unsure:

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

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

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

Просмотр сообщенияKemaweyan (19 января 2013 - 12:51) писал:

Просмотр сообщенияbaritone сказал:

Прошу прощения, с этими инфиксами и наложениями с учетом лениции и вставок разделяющих букв сдохнуть можно


Это только на первый взгляд страшно. На самом деле всё не так уж плохо. Если почитать Советы начинающим изучение языка На'ви, то там есть пункт о том, что запоминать следует форм слов целиком, а не начальную форму + правила. Правила тоже нужно знать, но распространённые формы должны помниться по-отдельности. Собственно, оно само так и получится с опытом...

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

Сообщение отредактировал pandorskiy kot: 22 января 2013 - 00:29
Причина редактирования даблпост

0

#5
Пользователь офлайн   Kemaweyan 

  • Ветеран
  • PipPipPipPipPipPipPipPip
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
  • Группа: Пользователи
  • Сообщений: 1 598
  • Регистрация: 07 марта 11
  • Skin:na'vi light
  • ГородХарьков
  • Время онлайн: 167 дн. 12 час. 52 мин. 17 сек.
Репутация: 502
Гениальный

Просмотр сообщенияbaritone сказал:

инфиксные формы надо будет вставлять прямо в словарь


Это как раз мелочь, есть же регэкспы. Что-то вроде такого:

(.*?)?(eyk|äp)?(.*?)?(iv|er|ol|ay|am|ìy|ìm|alm|aly|ìlm|ìly|arm|ary|ìrm|ìry|ilv|irv|us|awn)?(.*?)?(eiy?|äng|ats|uy)?(.*?)?


Впрочем, работоспособность конкретно этого кода не гарантиру и, вероятно, нужно ещё пилить. Кстати, аналогично и с другими частями речи. Куда бОльшая загвоздка с синтаксисом, вот это разрулить довольно сложно. Причём , вероятно, не с синтаксисом На'ви, а куда хуже - русским. Вот с русским языковм вообще чёрт ногу сломит. Я сейчас скажу очень неприятную вещь, но над аналогичной задачей (созданием автоматичекого переводчика) работает не одна корпорация, включая такого многомиллиардного монстра, как Google. Но что-то google translate пока что не особо блещет правильностью переводов (как, впрочем, и другие аналоги). Это я к тому, что одиночке это вряд ли под силу.
Tute a new pivängkxo nìNa'vi nì'aw.
0

#6
Пользователь офлайн   baritone 

  • Автор темы
  • Гость
  • PipPipPip
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
  • Группа: Пользователи
  • Сообщений: 63
  • Регистрация: 29 декабря 12
  • Skin:
  • ГородМосква
  • Время онлайн: 2 дн. 2 час. 57 мин.
Репутация: 1
Обычный

Просмотр сообщенияKemaweyan (21 января 2013 - 08:03) писал:

Просмотр сообщенияbaritone сказал:

инфиксные формы надо будет вставлять прямо в словарь

Это как раз мелочь, есть же регэкспы.

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

Просмотр сообщенияKemaweyan (21 января 2013 - 08:03) писал:

Куда бОльшая загвоздка с синтаксисом, вот это разрулить довольно сложно. Причём , вероятно, не с синтаксисом На'ви, а куда хуже - русским. Вот с русским языковм вообще чёрт ногу сломит. Я сейчас скажу очень неприятную вещь, но над аналогичной задачей (созданием автоматичекого переводчика) работает не одна корпорация, включая такого многомиллиардного монстра, как Google. Но что-то google translate пока что не особо блещет правильностью переводов (как, впрочем, и другие аналоги). Это я к тому, что одиночке это вряд ли под силу.

Ну, надеюсь, я не до конца буду одиночкой. После того, как появится демонстрационный код, версия 0.0.001 :), можно будет кого-нибудь заинтересовать.

А проблему с синтаксисом естественных языков надеюсь решить просто: не переводить с них на на'ви вообще, только с на'ви на них. На'ви, как мне сейчас видится, можно довольно хорошо и однозначно разбирать машинным способом, и получать однозначные понятия, для которых можно будет выбрать соответствия в естественном языке. Для ответа у человека, получившего сообщение с помощью этой программы, будет возможность написать ответ таким же способом, набирая его с помощью пиктограмм.
0

#7
Пользователь офлайн   Kemaweyan 

  • Ветеран
  • PipPipPipPipPipPipPipPip
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
  • Группа: Пользователи
  • Сообщений: 1 598
  • Регистрация: 07 марта 11
  • Skin:na'vi light
  • ГородХарьков
  • Время онлайн: 167 дн. 12 час. 52 мин. 17 сек.
Репутация: 502
Гениальный

Просмотр сообщенияbaritone сказал:

имея слово, вылущить инфиксы и найти словарную статью


А что мешает с помощью регэкспов разбить слово на части и потом слепить вместе части без инфиксов? Допустим, слово leykolateiem (l<eyk><ol>at<ei>em) будет разбито на 6 частей, из которых нужно просто слепить вместе 1, 4 и 6. Получится словарная форма - latem.




Готово:

$pattern = "/^(.+(?=eyk|äp))?(eyk|äp)?(.+(?=iv|er|ol|ay|am|ìy|ìm|alm|aly|ìlm|ìly|arm|ary|ìrm|ìry|ilv|irv|us|awn))?(iv|er|ol|ay|am|ìy|ìm|alm|aly|ìlm|ìly|arm|ary|ìrm|ìry|ilv|irv|us|awn)?(.+(?=eiy?|äng|ats|uy))?(eiy?|äng|ats|uy)?(.+?)$/";
$word = "leykolateiem";

if (preg_match($pattern, $word, $matches)) {

	echo "Word is <b>{$matches[0]}</b><br />";
	echo "Word in dictionary is <b>{$matches[1]}{$matches[3]}{$matches[5]}{$matches[7]}</b><br />";
	echo "Infixes are <b>{$matches[2]} {$matches[4]} {$matches[6]}</b><br />";
}


Скрипт выводит:

Цитата

Word is leykolateiem
Word in dictionary is latem
Infixes are eyk ol ei


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

Одна проблема: скрипт ошибается со словами tswayon и zamunge, принимая -ay- и -am- за инфиксы. Но это неизбежно. Видимо, их придётся вписать в исключения.
Tute a new pivängkxo nìNa'vi nì'aw.
0

#8
Пользователь офлайн   baritone 

  • Автор темы
  • Гость
  • PipPipPip
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
  • Группа: Пользователи
  • Сообщений: 63
  • Регистрация: 29 декабря 12
  • Skin:
  • ГородМосква
  • Время онлайн: 2 дн. 2 час. 57 мин.
Репутация: 1
Обычный

Просмотр сообщенияKemaweyan (22 января 2013 - 07:25) писал:

Просмотр сообщенияbaritone сказал:

имея слово, вылущить инфиксы и найти словарную статью


А что мешает с помощью регэкспов разбить слово на части и потом слепить вместе части без инфиксов? Допустим, слово leykolateiem (l<eyk><ol>at<ei>em) будет разбито на 6 частей, из которых нужно просто слепить вместе 1, 4 и 6. Получится словарная форма - latem.

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

Одна проблема: скрипт ошибается со словами tswayon и zamunge, принимая -ay- и -am- за инфиксы. Но это неизбежно. Видимо, их придётся вписать в исключения.

Это вроде как уже рабочий и проверенный код? Спасибо, попробую. Действительно, интересно.
А под что запускается? Явно не bash :) C-shell?
0

#9
Пользователь офлайн   Kemaweyan 

  • Ветеран
  • PipPipPipPipPipPipPipPip
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
  • Группа: Пользователи
  • Сообщений: 1 598
  • Регистрация: 07 марта 11
  • Skin:na'vi light
  • ГородХарьков
  • Время онлайн: 167 дн. 12 час. 52 мин. 17 сек.
Репутация: 502
Гениальный
PHP. Просто так быстрее всего для тестов, особенно когда речь идёт о регэкспах, минимум служебного кода. Сервер то уже поднят... Впрочем, они полностью совместимы с perl и libpcre (это никсовая либа перловских регэкспов для C/C++), так что на любом языке можно.
Tute a new pivängkxo nìNa'vi nì'aw.
0

#10
Пользователь офлайн   pandorskiy kot 

  • pängkxo tireahu eltuä lefngap
  • PipPipPipPipPipPipPipPip
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
  • Группа: Администраторы
  • Сообщений: 9 717
  • Регистрация: 01 марта 11
  • Skin:na'vi night
  • ГородKharkov
  • Время онлайн: 249 дн. 12 час. 17 мин. 8 сек.
Репутация: 4 780
Мудрец
А может это дело куда-то в отдельную тему переместить? Дело хоть и связано с языком - но тем не менее никак не связано с его изучением, что наводит на мысли о злостном оффтопе. Если есть желание креативить дальше в сим направлении - придумайте название для темы об этой софтине, я перемещу все рассуждения о ней туда.
Изображение
...I want to go where they are going
Into the world they've been
Can I open up my mind enough to see... ©
0

#11
Пользователь офлайн   Kemaweyan 

  • Ветеран
  • PipPipPipPipPipPipPipPip
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
  • Группа: Пользователи
  • Сообщений: 1 598
  • Регистрация: 07 марта 11
  • Skin:na'vi light
  • ГородХарьков
  • Время онлайн: 167 дн. 12 час. 52 мин. 17 сек.
Репутация: 502
Гениальный
Поддерживаю, я тоже вчера об этом подумал. Тогда в проэктах (а тут есть такой раздел?) под названием что-то вроде «разработка автоматического переводчика с На'ви».
Tute a new pivängkxo nìNa'vi nì'aw.
0

#12
Пользователь офлайн   pandorskiy kot 

  • pängkxo tireahu eltuä lefngap
  • PipPipPipPipPipPipPipPip
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
  • Группа: Администраторы
  • Сообщений: 9 717
  • Регистрация: 01 марта 11
  • Skin:na'vi night
  • ГородKharkov
  • Время онлайн: 249 дн. 12 час. 17 мин. 8 сек.
Репутация: 4 780
Мудрец
"Проекты" как таковые есть, но они далеко от языка, поэтому оставил здесь же, в Изучение Na'vi
Изображение
...I want to go where they are going
Into the world they've been
Can I open up my mind enough to see... ©
0

#13
Пользователь офлайн   Kemaweyan 

  • Ветеран
  • PipPipPipPipPipPipPipPip
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
  • Группа: Пользователи
  • Сообщений: 1 598
  • Регистрация: 07 марта 11
  • Skin:na'vi light
  • ГородХарьков
  • Время онлайн: 167 дн. 12 час. 52 мин. 17 сек.
Репутация: 502
Гениальный
Irayo nìtxan.

Итак, как я себе это представляю. Допустим, есть какое-то реальное предложение. Разбить его на слова труда не составит - это ясно. Дальше нужно определить каждое слово: грубо говоря, получить его ID в базе (по ID можно получить любые известные данные о слове: перевод, часть речи, особенности использования и т.п. - всё это нужно будет вбить в базу). Вот именно о функции определения слова я и хочу поговорить прежде всего.

В На'ви существует 10 частей речи, из них неизменяемыми являются 5: наречия, частицы, предлоги, союзы и междометия. Их можно прямо искать по базе без предварительного извлечения словарной формы. Это и будет первый шаг функции: поиск слова по базе в неизменной форме. Если найдено - возврщаем ID. Иначе - переходим к следующему шагу. Также здесь могут определиться и другие части речи, которые конкретно в этом предложении используются в начальной форме.

Дальше, на мой взгляд, следует проверить слово на предмет принадлежности к прилагательным. У прилагательных может быть только префикс или суффикс -a-, т.е. если слово начинается и/или заканчивается на a, то в базе следует искать (a)слово(a), где (a) либо есть, либо нет. Другими словами, если слово начинается или заканчивается на -a-, то нужно поскать без него. Если -a- стоит и в начале, и в конце слова, то нужно попробовать убрать сначала первую -a-, потом последнюю. Аффикс -a- неможет стоять одновременно и в начале, и в конце, таким образом в запросе без обеих a нет необходимости... Если снова ничего не найдено, то переходим к третьему шагу.

На мой взгляд, третьим шагом должны быть числительные. Как и в случае с прилагательными, они могут использоваться с префиксом и/или суффиксом -a-. но ещё с ними возможен суффикс -ve (идущий перед -a, если он есть). Кроме того, искать по базе числительные не нужно, поскольку их несложно перевести в обычные десятичные числа автоматически, и это уже готово (см. исходники словаря, хотя для этого случая больше подойдёт модифицированный вариант, где для перевода не требуетя указания символа «-» перед словом, он тоже готов):

Скрытый текст


Четвёртый шаг - существительные и местоимения. Правила их использования почти одинаковые, поэтмоу можно объединить. Лишь нужно сделать исключение для слов ayfì'u, mesa'u и т.п. (у существительных сначала идут fì- и tsa-, а потом me-, pxe- и ay-, а у местоимений наоборот). Здесь сущесвует множество аффиксов, но порядок их вполне определённый, поэжтому проблем возникнуть не должно. Опять же, возможны исключения вроде fya'o и pa'o, где o может быть принято за суффикс -o, но это исправимо. В крайнем случае, можно также сделать исключения. Код есть, но писал давно, на 100% работоспособность не гарантирую:

"/^(pe|fì|tsa|fra|ay|fay|tsay|pay)?(me|pxe)?(fne)?(.+?)(tsyìp)?(vi)?(o|pe)?(mì|ne|ro|fa|hu|fpi|tup|mungwrr|äo|eo|few|fkip|ftu|io|ìlä|ka|kip|kxamlä|lisre|lok|luke|maw|sre|mìkam|na|nemfa|pximaw|pxisre|pxaw|pxel|rofa|sìn|ta|teri|tafkip|takip|to|uo|vay|wä|ìl|it|ur|ä|ìri|ti|ru|yä|ri|l|t|r|y)?$/"


если это существительное, то \4 вернёт его корень, который и нужно искать по базе. Если ничего не будет найдено, то переходим к последнему - 5 шагу.

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

Теперь, получив все ID в база, можно приступить к разбору самого предложения. С простыми предложениями вроде бы всё просто, а вот со сложными я пока не придумал алгоритма. С простыми так: плясать нужно от глагола. Если глаголов несколько, то нужно искать самый первый модальный глагол и дальше по цепочке до смыслового (вся эта инфа про тип глаголов и т.п. должна быть в базе). Когда глагол найден, нужно смотреть шаблон его использования. Шаблоны будут примерно такими: для переходного глагола fpìl, например, это будет агентив для субъекта и пациенс для объекта или номинатив для субъекта (тогда пациенса нет), также топик или предлог teri для темы. Для непереходного глагола tìtxen si использование другое: субъект - номинатив, объект - датив, топик или генитив - «тот, кому интересно». Все эти правила нужно прописать для каждого глагола. Благо, они вполне определённые.

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

Также нельзя забывать о том, что помимо этого нужно находить si-глаголы (это 2, а то и 3 слова), принадлежность определений к существительным, предлогов, стоящих отдельно, и т.п. Ну и, конечно же, разделять сложные предложения на простые с учётом подчинительных связей.На этом я и споткнулся полтора года назад.. Да, я уже пробовал нечто подобное написать, оттуда и наработки. Но довольно быстро понял, что один человек вряд ли потянет подобный проект. Впрочем, если не один, то можно попробовать...
Tute a new pivängkxo nìNa'vi nì'aw.
0

#14
Пользователь офлайн   baritone 

  • Автор темы
  • Гость
  • PipPipPip
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
  • Группа: Пользователи
  • Сообщений: 63
  • Регистрация: 29 декабря 12
  • Skin:
  • ГородМосква
  • Время онлайн: 2 дн. 2 час. 57 мин.
Репутация: 1
Обычный

Просмотр сообщенияKemaweyan (24 января 2013 - 13:58) писал:

Да, я уже пробовал нечто подобное написать, оттуда и наработки. Но довольно быстро понял, что один человек вряд ли потянет подобный проект. Впрочем, если не один, то можно попробовать...

Если целью проекта будет не просто переводчик с на'ви, а именно многоплатформенная программа или апплет, предназначенный для ввода текста с помощью мыши/тачпада на компе или стилуса/пальцев на планшетнике, где на'ви будет внутренним языком, определяющим принципы ввода и структуру понятий вводимого текста (то есть переводчик на естественные языки будет только одной из частей проекта), буду очень рад поработать на это дело. Теперь я понял, откуда такая четкая структура и логичность в кратком справочнике по языку, который Вы сделали :)

Но есть одно замечание относительно моих способностей, и несколько пожеланий, одно из которых непременное.

Во-первых, я не программист, я инженер-электронщик. Все, что я писал до этого на разных языках, по большей части, хотя порой даже попадало к заказчику, не дотягивало по уровню исполнения даже до курсовой работы нормального студента-программиста. Я даже gdb не умею использовать в голом виде. То есть руки у меня весьма и весьма кривые. Компенсирует ли кривизну рук обещанный мною фанатизм, судить тем участникам проекта, кого я могу подвести своей низкой квалификацией.

Во-вторых, поскольку программа мне видится именно кросплатформенной, исполняемой в том числе как апплет в браузере и приложение для планшетников, писать его надо на java, в крайнем случае с низкоуровневыми библиотеками на чистом C. Ну и в-третьих, мне бы очень хотелось бы перед началом работы хотя бы немного изучить язык, а то сейчас у меня сейчас еще даже правила языка в голове плохо уложились.

Что касается собственных соображений насчет перевода, разбор текста можно делать и самописно, но для генерации текста на естественных языках, наверно, лучше воспользоваться наработками из проекта http://www.apertium.org/
По-моему, он сейчас единственный проект такого рода. Тем более, что они сейчас работают над переводом кода на java, с той же целью - добиться работы на планшетниках, и вроде как основная библиотека проекта уже переписана.
0

#15
Пользователь офлайн   Kemaweyan 

  • Ветеран
  • PipPipPipPipPipPipPipPip
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
  • Группа: Пользователи
  • Сообщений: 1 598
  • Регистрация: 07 марта 11
  • Skin:na'vi light
  • ГородХарьков
  • Время онлайн: 167 дн. 12 час. 52 мин. 17 сек.
Репутация: 502
Гениальный
Ну.. онлайн-приложение html/javascript тоже кросплатформенное по сути (серверная часть вообще не имеет значения для пользователя). Да и имея код, перевести его на любой язык труда не составит (я сейчас имею в виду ядро системы, а не интерфейс). Просто с java я не особо дружу, опыта разработки на ней почти никакого. Кроме того, на java в неизменном виде тоже кросплатформенно не будет: для Android нужно писать с использованием Android SDK, для Apple - с их SDK, для обычных компов - на «голом» языке можно. Но зато пользователи будут вынуждены устанавливать виртуальную машину java... С web-приложением намного проще: открыл любой браузер, зашел на сайт - и всё. И пофигу с какого девайса и ОС, лишь бы была поддержка HTML/JavaScript, а она сейчас есть везде. Ещё один плюс - простота работы с БД и само наличие БД. Намного удобней будет хранить базу слов в готовой базе данных, имхо, чем изобретать велосипед для оффлайн-программы или ставить движок базы данных несколько десятков МБ ради работы одного файла в пару МБ... Виртуальной машины это, кстати, тоже касается.

Возможно, я смотрю со своей колокольни, мне и правда web удобней будет и мыслю в контексте этих стереотипов. Программист на java скажет диаметрально противоположные вещи, вероятно. Просто вот прямо сейчас я даже и близко понятия не имею ,как на java работать с регулярными выражениями, к примеру. Или с той-же БД. Или если е БД, то как лучше организовать данные и быстрый поиск по ним? Я понимаю, что всё это возможно. Но это ж нужно разбираться. А на PHP/MySQL я могу просто взять и начать писать. Ну это субъективное мнение...

Просмотр сообщенияbaritone сказал:

Теперь я понял, откуда такая четкая структура и логичность в кратком справочнике по языку, который Вы сделали


Не думаю, что причина именно в том проекте. Я просто мыслю таким образом, вот и разложил всё по полочкам. Причём ещё до того, как возникла идея переводчика... Точнее, она и возникла то из-за логичности и понятности грамматики На'ви.

P.S. Лучше на «ты» :)

Просмотр сообщенияbaritone сказал:

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


Насчёт этого всегда ziva'u nìprrte' (добро пожаловать). Кстати, я закончил одно дело (ставил Gentoo на ноут), так что теперь относительно свободен и как-нибудь могу руководство обновить. Уже пора...
Tute a new pivängkxo nìNa'vi nì'aw.
0

#16
Пользователь офлайн   baritone 

  • Автор темы
  • Гость
  • PipPipPip
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
  • Группа: Пользователи
  • Сообщений: 63
  • Регистрация: 29 декабря 12
  • Skin:
  • ГородМосква
  • Время онлайн: 2 дн. 2 час. 57 мин.
Репутация: 1
Обычный

Просмотр сообщенияKemaweyan (27 января 2013 - 01:53) писал:

Ну.. онлайн-приложение html/javascript тоже кросплатформенное по сути (серверная часть вообще не имеет значения для пользователя). Да и имея код, перевести его на любой язык труда не составит (я сейчас имею в виду ядро системы, а не интерфейс). Просто с java я не особо дружу, опыта разработки на ней почти никакого. Кроме того, на java в неизменном виде тоже кросплатформенно не будет: для Android нужно писать с использованием Android SDK, для Apple - с их SDK, для обычных компов - на «голом» языке можно. Но зато пользователи будут вынуждены устанавливать виртуальную машину java... С web-приложением намного проще: открыл любой браузер, зашел на сайт - и всё. И пофигу с какого девайса и ОС, лишь бы была поддержка HTML/JavaScript, а она сейчас есть везде. Ещё один плюс - простота работы с БД и само наличие БД. Намного удобней будет хранить базу слов в готовой базе данных, имхо, чем изобретать велосипед для оффлайн-программы или ставить движок базы данных несколько десятков МБ ради работы одного файла в пару МБ... Виртуальной машины это, кстати, тоже касается.

Возможно, я смотрю со своей колокольни, мне и правда web удобней будет и мыслю в контексте этих стереотипов. Программист на java скажет диаметрально противоположные вещи, вероятно. Просто вот прямо сейчас я даже и близко понятия не имею ,как на java работать с регулярными выражениями, к примеру. Или с той-же БД. Или если е БД, то как лучше организовать данные и быстрый поиск по ним? Я понимаю, что всё это возможно. Но это ж нужно разбираться. А на PHP/MySQL я могу просто взять и начать писать. Ну это субъективное мнение...

Web=Javascript+PHP+MySQL, конечно, хорошее кроссплатформенное решение, но меня смущает, что оно работает только онлайн, в оффлайне даже доступа к словарю не будет. Больше всего меня смущает MySQL. Неужели нельзя хранить корни слов на чем-то попроще, вроде словарного сервера dictd, который легко реализуется на локальной машине?
Структуры данных, конечно, можно перенести на любой язык, и если проще первичную версию сделать на PHP, то почему бы и нет? Я к завтрашнему вечеру постараюсь выяснить, какие возможности для работы с регулярными выражениями есть в java. Стандартный пакет там, кажется, слабый, но есть парочка-тройка сторонних пакетов, которые, так же, как libpcre, ставят целью реализовать все возможности Perl в части регулярных выражений.
0

#17
Пользователь офлайн   Kemaweyan 

  • Ветеран
  • PipPipPipPipPipPipPipPip
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
  • Группа: Пользователи
  • Сообщений: 1 598
  • Регистрация: 07 марта 11
  • Skin:na'vi light
  • ГородХарьков
  • Время онлайн: 167 дн. 12 час. 52 мин. 17 сек.
Репутация: 502
Гениальный

Просмотр сообщенияbaritone сказал:

Больше всего меня смущает MySQL. Неужели нельзя хранить корни слов на чем-то попроще, вроде словарного сервера dictd, который легко реализуется на локальной машине?


Конечно, можно. Но, как я сказал, я ж отталкиваюсь от web, а MySQL на серверах уже стоит. Впрочем, хранить в базе нужн оне только корни, но и целую кучу другой информации. В том числе и все формы русских слов (если реализовывать перевод на русский).
Tute a new pivängkxo nìNa'vi nì'aw.
0

#18
Пользователь офлайн   baritone 

  • Автор темы
  • Гость
  • PipPipPip
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
  • Группа: Пользователи
  • Сообщений: 63
  • Регистрация: 29 декабря 12
  • Skin:
  • ГородМосква
  • Время онлайн: 2 дн. 2 час. 57 мин.
Репутация: 1
Обычный

Просмотр сообщенияKemaweyan (28 января 2013 - 01:45) писал:

Просмотр сообщенияbaritone сказал:

Больше всего меня смущает MySQL. Неужели нельзя хранить корни слов на чем-то попроще, вроде словарного сервера dictd, который легко реализуется на локальной машине?


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

Нет, все-таки, давай будем делать программу, которую легко переписать для использования в оффлайне. Если проще начать отрабатывать алгоритм с помощью решений, оринетированных на web - значит, так и надо делать, но надо с самого начала закладываться на то, чтобы код легко переписывался для программ, работающих оффлайн.

Кстати, действительно, давай на "ты". Я кину тебе в личку свой скайп, джаббер и почту.

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

Еще смотрю lltoolbox, библиотеку из проекта apertium для разбора слов и предложений и перевода (версию для java пока взять с репозитория не удалось). В этой библиотеке, оказывается, есть средства работы со словарем, не говоря уже о средствах для создания правил перевода без программирования. Все больше и больше убеждаюсь, что ее желательно использовать для нашего проекта.

P.S. Все, lttoolbox-java с репозитория скачан. Завтра на работе, если будет свободное время (я ремонтник, потому вполне возможно свободное время будет) попробую посмотреть, что за штука такая. Документация находится здесь.

Сообщение отредактировал baritone: 28 января 2013 - 23:11

0

#19
Пользователь офлайн   Kemaweyan 

  • Ветеран
  • PipPipPipPipPipPipPipPip
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
  • Группа: Пользователи
  • Сообщений: 1 598
  • Регистрация: 07 марта 11
  • Skin:na'vi light
  • ГородХарьков
  • Время онлайн: 167 дн. 12 час. 52 мин. 17 сек.
Репутация: 502
Гениальный

Просмотр сообщенияbaritone сказал:

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


Это не будет проблемой в любом случае. Напишем отдельный модуль для поиска данных, а на другом языке напишем другой модуль с аналогичным интерфейсом. В итоге изменения претерпит только этот модуль, а основной алгоритм останется неизменным. Ну что-то вроде функции FindWord, которая бы принимала параметры типа «строка» (искомое слово) и ссылку на структуру для выходных данных. Возвращает функция id или 0, если слово не надено. А внутри она будет реализована уже в зависимости от платформы. Т.е. это будет либо SQL запрос, либо что-то другое...
Tute a new pivängkxo nìNa'vi nì'aw.
0

Поделиться темой:


Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей



Эту тему посетили 23 пользователя(ей)



Фильм АВАТАР фан-сайт фильма аватар Эко-товары и экотуризм земной Пандоры - Горного Алтая. Частичка природы земли, увлекательные материалы о загадочном крае Вольный Ветер Waterfall.su Радиосвязь в походе, рации. Сайт UA3AQL Pandora.Space