Текущий архив: 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.5 MB
Время: 0.01 c