Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.08.14;
Скачать: [xml.tar.bz2];

Вниз

переводчик   Найти похожие ветки 

 
bagle   (2005-07-25 02:05) [0]

для практики начал писать переводчик ( типа Prompt). шас уже переводить кое что. но возникают некоторые проблемы при переводе. например моя программа не может различить зяпятые и точки. например если пишеш следуюшае: "привет."    то прога ишет слово привет. на базе, и естественно не находит. как решить эту проблему?


 
Джо ©   (2005-07-25 02:09) [1]

Я так и знал, так и знал, что "различать запятые и точки" -- это самая ужасная проблема при написании переводчика (типа Prompt).


 
KilkennyCat ©   (2005-07-25 02:25) [2]

Для начала надо русский выучить, я 18 ошибок нашел. Гы....


 
Defunct ©   (2005-07-25 03:03) [3]

> Джо ©   (25.07.05 02:09) [1]
:)

> bagle
> типа Prompt
prompt ничего не переводит. Start -> Run -> cmd.exe будет вам prompt.

переводчик называется PROMT (project multilang. translator)


 
Джо ©   (2005-07-25 03:08) [4]


>  [3] Defunct ©   (25.07.05 03:03)

Я не сомневался, что автор "переводчика" допустит ошибку и в названии переводчика :0)


 
Defunct ©   (2005-07-25 03:19) [5]

походу ответ на ваш главный вопрос может быть таким:
если переводчик "типа prompt, а не PROMT" тогда просто отбрасывать все знаки препинания:

function PrepareString( SourceString: String): String;
const EN = ["a".."z"];
     RU = ["а".."я"];
var
  i : integer;
begin
  Result := "";

  SourceString := AnsiLowerCase( SourceString );

  for i := 1 to Length( SourceString) do
     if (SourceString[i] in EN) or (SourceString[i] in RU) then
        Result := Result + SourceString[i]
     else if SourceString[i] = " " then
        if (Length(Result) > 0) and (Result[ Length(Result) ] <> " ") then
           Result := Result + SourceString[i]

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 ShowMessage( PrepareString(" ПриВет...!! ,./,/. чУваки") ) ;
end;


 
Юрий Зотов ©   (2005-07-25 03:47) [6]

> bagle   (25.07.05 02:05)

> для практики начал писать переводчик

А почему не сразу искуственный интеллект? Что уж там мелочиться-то...


 
vrem   (2005-07-25 07:04) [7]

bagle, переводчик это не только перевод отдельных слов. Когда только, то качество перевода плохое. Тот же промт переводит абзацами - по нескольку предложений, разделённых переводом строки(98 точно так). Бывает забавно отслеживать логические цепочки как он переводит - это слово переведено так, потому что в соседнем предложении то или то..)
Впечатление, что промт воспринимает текст как некий "формат" файла - имхо похожее делает Дельфи при компиляции unit"ов.


 
Anatoly Podgoretsky ©   (2005-07-25 08:58) [8]

KilkennyCat ©   (25.07.05 02:25) [2]
Мелочи, будет переводчик-двоечник.


 
TUser ©   (2005-07-25 10:13) [9]

развод


 
Ega23 ©   (2005-07-25 10:21) [10]

Задачка-то, кстати, весьма интересная. Причём если её совместить с "Элизой" - вообще может интересная штука получиться. Я всё собираюсь на досуге заняться, да руки никак не доходят...


 
bagle   (2005-07-26 00:46) [11]

во первых ошыбки на мойом посте- я не русский ребята.
Если не хотите ответить,не отвечайте.
Я просто хотел узнать ваше мнение.


 
KilkennyCat ©   (2005-07-26 01:28) [12]

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


 
bagle   (2005-07-26 12:07) [13]

KilkennyCat
спасибо большое! на счот редактора, это мне не нужно. но переводчика от меня требую на университете, попался такой гадкий курсавой.
а кто еще может помочь?


 
bagle   (2005-07-26 12:10) [14]

уважаемый Defunct , а нельзяли зделать правильный перевод оставляя запятые и точки?


 
Юрий Зотов ©   (2005-07-26 12:38) [15]

> bagle   (26.07.05 12:10) [14]

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

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

const
 Letters = ["А".."я"]; // Набор букв

var
 T: string; // Строка, содержащая исходный текст.
 P: integer; // Текущая позиция просмотра текста.

function GetNextWord: string;
begin
 Result := "";
 // 1. Пропускаем все символы, не являющиеся буквами.
 while (P <= Length(T)) and not (T[P] in Letters) do
   Inc(P);
 // 2. Выделяем слово.
 while (P <= Length(T)) and (T[P] in Letters) do
 begin
   Result := Result + T[P];
   Inc(P)
 end
end;

Теперь можно сделать так:
 
P := 1;
repeat
 W := GetNextWord; // Получили очередное слово.
 Translate(W) // Перевели это слово.
until W = "";  // Проверили окончание текста.

Вот и весь принцип. Этот цикл разбивает текст на слова и для каждого слова вызывает процедуру Translate. Ее Вам и осталось написать.


 
Gydvin ©   (2005-07-26 12:57) [16]

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

Уважаемый Defunct , а нельзяли зделать правильный перевод оставляя запятые и точки?

Интересно они в ентом универе сума чтоли все поспятили?


 
Kerk ©   (2005-07-26 13:52) [17]

Gydvin ©   (26.07.05 12:57) [16]
Интересно они в ентом универе сума чтоли все поспятили?


Действительно. Странно как ты экзамен по русскому сдал.


 
Ega23 ©   (2005-07-26 13:54) [18]

2 Kerk ©   (26.07.05 13:52) [17]

Если для него русский - не родной, то человек ОЧЕНЬ прилично пишет. Я думаю, на английском ты бы поболе ошибок сделал...


 
vrem   (2005-07-26 14:24) [19]

Прилично конечно, а ведь как начинал:
http://crass.on.ru/humor/li2.html


 
bagle   (2005-07-26 23:20) [20]

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


 
bagle   (2005-07-27 11:59) [21]

up


 
Плохиш ©   (2005-07-27 12:12) [22]


> так как я уже написал сам переводчик,остаются такие мелкие
> проблемы, которые требуют вмешателсва опытного програмиста

Мая плякаля :"-) Для написания переводчиков оказывается не требуются опытные программисты, а для разбора текста требуются.

PS. Давайте орешник обновим ;-)



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2005.08.14;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.012 c
4-1119418092
Progh
2005-06-22 09:28
2005.08.14
Как перевести вывести компьютер в спящий из спящего режим(а)


14-1122283106
AGGRESSOR
2005-07-25 13:18
2005.08.14
Утечка памяти


1-1122366255
Kolan
2005-07-26 12:24
2005.08.14
Никак не получается сохранить структуру.


1-1122280286
Sheverev
2005-07-25 12:31
2005.08.14
Создание кнопки ОБЗОР...


6-1114271763
Galiaf
2005-04-23 19:56
2005.08.14
Где лежит компонент "TServerSocket" &amp; "TClientSocket"?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский