Контекстный словарь Философия в попытке ответить на вопрос зачем это нужно. Наверное самой трудной проблемой машинного перевода является проблемма контекстного значения слов. Решение этой проблеммы предлагается делать через создание специального "текущего" (контекстного) словаря, который формируется специально для переводимого текста. Текущий словарь содержит только те слова и выражения, которые присутствуют в тексте. Человек-переводчик может управлять тем, как будут переводиться эти слова и выражения. Первоначально перевод слов формируется из основного словаря программы (Берется первый вариант, присутствующий в главном словаре). Человек может выбрать для выражения вариант перевода из главного словаря, или сформировать собственный вариант перевода. Чтобы облегчить себе работу можно воспользоваться следующими свойствами естественных языков: 1) В большинстве случаев слово в тексте имеет одно и то же значение. (Это не касается служебных слов). То есть, можно задать перевод слову один раз и потом много раз использовать. 2) Частота употребления слов очень различна. Существует эмпирическое правило 20/80 - 20% слов покрывают 80% текста. Можно задать контекстный перевод наиболее частым словам, а оставшимся словам задать перевод уже в процессе итоговой правки текста. 3) Выражения состоят из слов и других выражений. При этом они могут "мешать" друг другу. Например, значение слова "dog" ("собака") в выражении "hot dog" (бутерброд) только мешает. По этому, слова и выражения хочется не только вводить, но и "выводить" из словаря. Описание окна и как с ним работать Это окно позволяет наглядно видеть, что у нас делается в контекстном словаре, и редактировать словарь если это необходимо. Окно представляет из себя список выражений. Каждая строка списка соответствует одному выражению контекстного словаря. Строка состоит из нескольких "колонок": 0) Индекс выражения в массиве типов (никому кроме разработчиков не нужна, да и разработчикам нужна не часто) 1) Сколько раз это выражение встречается в тексте. 2) Есть ли это выражение в главном словаре "1"-есть "."-нет 3) Нужно ли использовать это выражение при переводе "u"-да "."-нет 4) Само слово и его перевод. Слово и перевод отображаются именно в том виде, как это присутствует в словаре (то есть со всей служебной грамматической информацией). Зачем я сделал эти потроха видимыми снаружи? Ну... филосфия у меня такая - пользователь может видеть все, что происходит, и вмешаться во все процессы, какие хочет. Человек в этом окне может делать следующие действия: 1) Построить список слов и выражений переводимого текста (нужно сделать один раз при начале работы). 2) Задавать начальный перевод всем словам списка. 3) Задать вручную перевод для тех слов, начальные переводы которых программа сделала неоптимально. 4) Указать программе, какие выражения использовать при переводе а какие нет. 5) Всякие вспомогательные действия (устанавливать фильтры для списка слов, задавать порядок сортировки, получать подсказку), Меню и горячие клавиши F1 - получить эту подсказку Enter - перейти в режим заданя перевода выбранному слову Более подробное описание задания перевода слову S_key_Up S_key_Down S_key_Home S_key_End S_key_PgUp S_key_PgDn - ходить по списку слов F2 - поставить или снять флаг "использовать" текущему слову F4 - построить список слов в соответствии с текущим разбиением текста на фразы. (Со словами, разумеется ничего не будет, но вот выражения попавшие на границы фраз могут появиться или исчезнуть. То же самое касается слов, попавших в непереводимые участки.) F5 - задать словам начальный перевод (Каждому слову задается первый вариант, присутствующий в словаре.) F9 - установить режим просмотра списка - задать фильтры и сортировки F10 - выйти из этого режима Фильтры: Фильтр - это признак слова по которому решается отображается ли слово в списке. Фильтр имеет три состояния: Да - слово с этим признаком должно присутствовать в списке Нет - слово с этим признаком должно отсутствовать в списке Все - слово присутствует независимо от этого признака Имеются следующие фильтры: есть ли в словаре (имеется в виду главный словарь программы) задан ли перевод задавал ли _пользователь_ перевод этому слову укладывается ли в STRUCT1 STRUCT1 это в каком-то смысле "стандартные" конструкции, которые присутствуют в описании грамматики (например прилагательное+ существительное). Нынешний интерфейс позволяет легко задавать перевод таким конструкциям, даже если их нет в словаре. Если выражение не укладыается в стандарт - ему тоже можно задать перевод, но это потребует бОльших умственных усилий - синтаксис словаря надо знать. Порядок сортировки можно выбрать из следующих вариантов: По частоте очень полезно чтобы понять "о чем текст" и сразу задать перевод большинству слов. По алфавиту бывает нужно когда в тексте есть слова, отсутсвующие в словаре. Обычно программа воспринимает разные формы одного слова как разные слова. При сортировке по алфавиту формы одного слова обычно встают рядом. По части речи тоже иногда бывает нужно :-) возврат в содержание