GotAI.NET

Форум: Проблемы искусственного интеллекта

 

Регистрация | Вход

 Все темы | Новая тема Стр.1 (6)След. > >>   Поиск:  
 Автор Тема: автоматический перевод текстов.
daner
Сообщений: 4593
автоматический перевод текстов.
Добавлено: 08 мар 07 19:36
Предисловие (можно пропустить, в нем описаны мои мотивации к тому, что пойдет далее):

Примерно год назад, я искал модуль проверки орфографии, что бы добавить в свою программу по переводу с транслита на русский. Поискал поискал, и ничего супер подходящего не нашел. Т.е если делать большой платный проект, то можно МС Офисе лицензию на spell checker приобрести или подобные. Можно конечно и с GPL лицензиями найти программки (ASpell,HSpell), но все они как-то тяжело интегрировались в проекты. Сами понимаете для домашнего переводчика с транслита, это как-то было не резонно, я хотел что-то простое.

В общем, пришла идея самому написать, но так, что бы особо не напрягаться. Сделал я следующее: Нашел порядочный алгоритм не четкого сравнения, скачал несколько книг с Lib.ru и из этих книг составил словарь. т.е. просто слова, причем в тех формах в которых они встречались в книгах (т.е. все супер просто). Потом сохранил их в порядке того как часто они встречались (с частых к редким). Словарь конечно получился огромный (около 20МБ)
И на основе всего этого написал seller. И как оказалось, он вполне сносно работал. т.е. большую часть ошибок отлавливал, делал это конечно чуть заторможено, но сносно. А так же предлагал варианты для исправления.

Меня поразило на сколько сам по себе алгоритм был простым и посравнению с простой, КПД было великолепное.

Потом появились мысли как улучщить, но уже небыло желания и времени.

[конец предисловия]
[Ответ][Цитата]
daner
Сообщений: 4593
На: автоматический перевод текстов.
Добавлено: 08 мар 07 21:16
Как-то, на просторах Интернет (не помню на каком форуме), я увидел пару интересных идей по поводу автоматического перевода текстов. Идеи были до смешного простые, и особо в глаза не бросались. Толком, я их даже не помню. Но мой опыт со spell checker-ом, показал мне, что в работе с текстом, не обязательно применять супер навороченные методы понимания текстов.

Вот по этому, я хочу попробовать сделать простой переводчик.

Если есть желающие, милости просим, тем более, что рабочие руки будут весьма кстати.

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

Здесь первичная предполагаемая схема перевода:
http://picasaweb.google.ru/danerde/SchemaAndCharts/photo#5039705963249657730
Нотация :
квадраты - данные
овалы - модули обработки. Скорее всего каждый модуль самостоятельный обучаемый блок.

Конечно, это не идеальный переводчик, но мне интересно на сколько плох/хорош он будет.


P.S.
Сразу оговорюсь. Машинным переводом не занимался и даже не читал ничего по этой теме. Я скорее, хочу поиграть с этим, поэкспериментировать и посмотреть какие будут результаты.
[Ответ][Цитата]
Львович
Сообщений: 303
На: автоматический перевод текстов.
Добавлено: 11 мар 07 13:51
Скорее будет плох, чем хорош. Все-таки перевод без смысла дает "маленькую мягкую мышку".
Кроме того, надо как-то порождать порядок слов, который сильно зависит от языка. В этом отношениии привязка только к словам сильно ограничивает возможности перевода. Может быть поработать со словосочетаниями? Правда, возникает вопрос какой длины эти словосочетания брать. Соответсвенно и словарь нужен словосочетаний.
[Ответ][Цитата]
daner
Сообщений: 4593
На: автоматический перевод текстов.
Добавлено: 12 мар 07 16:40
Цитата:
Все-таки перевод без смысла дает "маленькую мягкую мышку

Вы не правильно поняли суть идеи. Конечно же, я не предлагаю просто дословно перевести текст. Я говорю о том, что переводчик, должен научиться правильно подбирать перевод слова в зависимости от соседей.
Приведу пример:
Слово "micro" стоящее перед словом "soft" чаще переводится как "микро" а не как "маленький", в свою очередь слово "soft" соящее после слова "micro", чаще переводится как "софт", а не как "мягкий", и уж точно оно переводится чаще как "софт", если стоит перед словом "mouse". И т.д.
[Ответ][Цитата]
mserg
Сообщений: 258
На: автоматический перевод текстов.
Добавлено: 15 мар 07 11:33
А база перевода есть? В моем представлении - это набор переведенных "статей", которые можно использовать для обучения алгоритма "ширококонтекстного" перевода... Если база есть, то может ли она стать достоянием общественности?
[Ответ][Цитата]
daner
Сообщений: 4593
На: автоматический перевод текстов.
Добавлено: 15 мар 07 13:43
Нет, базы нету, ее еще надо будет искать. Если появится, то обязательно станет достоянием общественности так как всю программу планирую делать open source. Это больше исследование чем, что-то другое. Хотя лично я буду очень рад, если она сможет переводить мне статьи лучше чем другие, бесплатные переводчики.

одной из идей (на крайний случай) является художественная научная фантастика (Азимов и т.д.). Есть оригиналы на английском и есть переводы на русский (lib.ru).
[Ответ][Цитата]
Львович
Сообщений: 303
На: автоматический перевод текстов.
Добавлено: 16 мар 07 17:14
Цитата:
Автор: daner
Слово "micro" стоящее перед словом "soft" чаще переводится как "микро" а не как "маленький", ...

Но классические словари переводят слова и очень редко словосочетания, и то если они имеют "необычный" смысл. Остальное отдается на откуп переводчику, считается, что он вполне в состоянии выбрать наиболее подходящее значение. Поэтому перевод и является творческим процессом. А уж перевод прозы, и тем более стихов - вообще "высший пилотаж".
По идее надо брать файл текстов и файл переводов и пытаться найти правила перевода. Естественно не нам пытаться, а программе. А программисту надо сделать некоторые предположения о них, чтобы значительно сократить поиск (этих правил). Идея проста. Дело за предположениями...
[Ответ][Цитата]
daner
Сообщений: 4593
На: автоматический перевод текстов.
Добавлено: 16 мар 07 20:50
Ну а я о чем? Вы схему смотрели? Я и писал, что словарь самому надо составлять. Т.е. возможно изначально взять словарь обычный, так как программе нужно найти соответствие между оригиналом и переводом (они же не по порядку идут).
т.е. выглядит примерно так (буквы - это оригинал, цифры - это перевод)
doc1 : A B C D E
doc2 : 1 2 3 4.
dictionary:
A-2,6,7; B-3,8; C-9; D-1,5; E-4;
т.е. получаем : A-2,B-3,D-1,E-4,C-Empty
[Ответ][Цитата]
anatoli
Сообщений: 249
На: автоматический перевод текстов.
Добавлено: 17 мар 07 0:32
Насколько мне известно, система переводов гугла обучается по переведенным текстам и ищет зависимости и аналогии. Т.е. например, система понимает, что предложения: "я пойду в магазин" и "я пойду в школу" переводить надо примерно одинаково, заменяя лишь отличающиеся слова соответсвенными. Другими словами, система знает, как перевести первое предложение и знает, как будет "в школу" (например, из уже известного ей перевода предложения "его увели в школу"). И вносит соответственные изменения в известный системе перевод.

Система эта признана достаточно точной в переводе текстов с любого языка на любой без специальной заточки под конкретный язык. И идея проста
[Ответ][Цитата]
daner
Сообщений: 4593
На: автоматический перевод текстов.
Добавлено: 17 мар 07 1:29
интересная мысль. Вопрос, в том, как сравнить предложения? в принципе, одно слово может очень сильно менять перевод... хотя если придерживаться простоты.... Очень интересное замечание!!!
[Ответ][Цитата]
anatoli
Сообщений: 249
На: автоматический перевод текстов.
Добавлено: 17 мар 07 4:11
Для сравнения предложений можно брать очень похожие предложения и смотреть, как они меняются. Потом брать другие предложения, где имеется идентичное изменение.

Пример (на той же тематике): мы знаем переводы предложений: "я пойду в магазин", "я пойду в школу" и "в магазин завезли мебель". Нам надо перевести: "в школу завезли мебель". Мы ищем наиболее совпадающее с нашим предложение. Если таковое уже имеется, то мы просто его используем. Если нет, то берем наиболее похожее. В данном случае это будет: "в магазин завезли мебель". Какое различие? "в школу" и "в магазин". Ищем предложения, в которых все одинаково, кроме этих слов (т.е. идентичное различие). Находим, что это есть "я пойду в магазин" и "я пойду в школу". Смотрим, как в этом случае было переведено "в школу" (точнее, какое изменение имело на переведенном тексте замена "в магазин" на "в школу". Производим это изменение с переводом предложения "в магазин завезли мебель".

Это наиболее простой пример, с 3-мя переведенными предложениями и одним предложением на перевод. В тех случаях, когда одно слово сильно меняет перевод, система либо будет знать об этом на примере других предложений, либо же система будет ошибаться, как в прочем, иногда ошибается и человек (причем, ошибки человека обратно пропорциональны времени и качеству обучения). Т.е. тут лишь вопрос в размере базы знаний.
[Ответ][Цитата]
daner
Сообщений: 4593
На: автоматический перевод текстов.
Добавлено: 17 мар 07 15:27
Принцип я понял и по вашему первому посту. Но думаю, что сравнение (т.е. проверка похожести) может быть сложнее чем кажется. Хотя можно попробовать и самый простой вариант (как вы и предложили, т.е. вариация хемминогова расстояния, если слово брать за бит)
[Ответ][Цитата]
anatoli
Сообщений: 249
На: автоматический перевод текстов.
Добавлено: 19 мар 07 8:20
Хехе, вот стал думать, типа: принцип простой, почему бы действительно не сделать? И тут сразу вспомнил проблему: а базу то переводов где брать? Ну и пока сам себе сказал: ладно, отложим. А вот только что осенила идея (эт подсознание подслужило ): а почему бы не взять за базу переводы уже существующих систем, наилучших систем? Пошел пробовать переводы гугла (http://www.google.com/translate_t), взял первый абзац статьи про Большой Взрыв (ru.wikipedia.org - Большой взрыв: "По современным представлениям...").

Оказалось, что, хоть перевод – достаточно разумный, есть некоторые непростительные ошибки вроде "из некоторого начального «сингулярного» состояния" -> "from a primary <singulyarnogo> state" или "представляла собой однородную и изотропную среду" -> "was a homogeneous and izotroponuu Wednesday".

Вот, изотропная среда, изотропный четверг.. : )) Но можно сделать скидку на то, что база у нее на данный момент не такая уж большая и полная (направление Ru -> En находится в Beta-состоянии); а с учетом простоты идеи, система не различает контекста слова.

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

Более того, можно сделать так, чтобы система была feedback-based, т.е. чтобы юзеры могли "подсказывать" системе, что такой перевод неверен и предлагать свои варианты. Многие укажут на проблему вандализма, но ее можно решить так же, как она была решена на википедии.
[Ответ][Цитата]
daner
Сообщений: 4593
На: автоматический перевод текстов.
Добавлено: 19 мар 07 14:49
Во-первых, рад что вас идея заинтересовала .
Во-вторых, над машинными переводами я думал... но как-то их качество смущало... иди знай, почему потом наш переводчик будет глючить... то-ли наш алгоритм плохой, то-ли база плохая... Но вот организация ВИКИ для такой базы... это интересная мысль. Думаете будет работать? А есть, где нибудь, где можно ВИКИ быстро организовать?
[Ответ][Цитата]
anatoli
Сообщений: 249
На: автоматический перевод текстов.
Добавлено: 19 мар 07 23:26
> где можно ВИКИ быстро организовать?

Можно снять платный хостинг с уже преустановленной вики либо свой поднять. http://www.mediawiki.org/wiki/MediaWiki, mediawiki - это движок вики на котором работает википедия, опенсурс проект, ставится почти на любом хостинге либо на своем компе с запущенным апачем.

Идея вики мне видится такой: заносить предложения перевода в базу и их перевод. Если пользователь подправляет перевод системы, то этот перевод тоже заносится в базу. Если происходит изменение базы, первосоздатели перевода оповещаются и могут проверить его правильность.

Теоретически, я думаю система очень быстро научится переводить без ошибок даже изначально с частично неправильной базой. Это так же, как и вики.. Объем информации в ней на разных языках превышает объем любой энциклопедии. Причем проект стартовал совсем недавно.

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

И вот еще. Один мой коллега создал небольшую эспериментальную прогу, которая пыталась "понимать" смысл текста. Программа донельзя простая и ее можно улучшить в разы, но уже сейчас система смогла сгруппировать слова таким образом, что, например, в одну группу попали такие слова, как "отец", "мать", "брат", "сестра" и т.п., при том, что система совершенно ничего не знала ни про текст, ни про язык, на котором он был написан. Если скрестить эту прогу с идеей перевода по разнице в предложениях да еще + вики-замес, думаю, может получится очень сильная система, при том будучи чрезвычайно простой.
[Ответ][Цитата]
 Стр.1 (6): [1]  2  3  4  5  6След. > >>