Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.08.14;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.04 c
1-1122455645
Begin
2005-07-27 13:14
2005.08.14
TPanel и Canvas. Можно ли рисовать по TPanel ?


3-1120456744
Xmen
2005-07-04 09:59
2005.08.14
master-detail


14-1122098346
Igorek
2005-07-23 09:59
2005.08.14
Обратить байт - соревнование :)


14-1121935462
Praco
2005-07-21 12:44
2005.08.14
Рыбалка в Московской области.


9-1114330404
-=xXx=-
2005-04-24 12:13
2005.08.14
GLScene