Автор Тема: конвертиране шльокавица -> нещо разбираемо  (Прочетена 16513 пъти)

vstoykov

  • Напреднали
  • *****
  • Публикации: 1286
  • Distribution: Ubuntu
  • Window Manager: Fluxbox
    • Профил
    • WWW
Проблема със списъка на всички думи във всичките им форми е решен  '<img'>
Благодаря на Радостин Раднев, че ме насочи към речника за версия 4.0 на aspell (аз проверих само речника за новата версия на aspell, за старата нямаше да се сетя). Скрипта за генериране на речинка е  bin/build_dictionaries/build_aspell.sh от версията на БГ Офис за разработчици.
Активен

ivak

  • Напреднали
  • *****
  • Публикации: 156
    • Профил
Цитат (CaBA @ Март 22 2005,17:16)
...по уместно ми се струва разстоянието по Левенщайн...

Хмм, на второ четене, като се замислих малко, разстоянието на Левенщайн не върши работа. Пример:

раб (от "rab", 'ъ' е заменено с 'а') <--> ръб = 1

раб (от krab, 'k' е изпуснато) <--> краб = 1

Примерът е малко изсмукан от пръстите, но илюстрира какво имам предвид. Освен ако не ми се губи нещо фундаментално, въпросната мерна единица не ни носи достатъчно информация. Оптималният критерий трябва да представя възможно най-пълно сравняваните обекти; разстоянието на Левенщайн е твърде общо за целта. Предполагам, че се ползва успешно в програмите за проверка на правописа, за да се генерира списък от предложения за заместване, но не ми се струва подходящо за автоматичен превод.

В този ред на мисли, моето собствено предложение да се премахнат гласните букви също ми изглежда неадекватно.
Активен

Cлoжнитe пpoблeми имaт пpocти и лecни зa paзбиpaнe гpeшни oтгoвopи.

vstoykov

  • Напреднали
  • *****
  • Публикации: 1286
  • Distribution: Ubuntu
  • Window Manager: Fluxbox
    • Профил
    • WWW
Нова идея:

Примерен код

my @arr_words = qw(
Абаджиев
Абаджиева
Абеба
Абиджан
Абрашев
Абрашева
Абу
Абърдийн
Августин
Августина
Авджиев
Авджиева
Авестан
Авив
Аврам
Аврамов
Аврамова
Австралия
Австрия
Агов
Агова
Адам
);

my @arr_regexp = (
"abad(v|j|zh)ie(w|v)",
"abad(v|j|zh)ie(w|v)a",
"abeba",
"abid(v|j|zh)an",
"abra(sh|6)e(w|v)",
"abra(sh|6)e(w|v)a",
"abu",
"ab(u|a)rdi(i|j)n",
"a(w|v)gustin",
"a(w|v)gustina",
"a(w|v)d(v|j|zh)ie(w|v)",
"a(w|v)d(v|j|zh)ie(w|v)a",
"a(w|v)estan",
"a(w|v)i(w|v)",
"a(w|v)ram",
"a(w|v)ramo(w|v)",
"a(w|v)ramo(w|v)a",
"a(w|v)strali(ia|ja|q)",
"a(w|v)stri(ia|ja|q)",
"ago(w|v)",
"ago(w|v)a",
"adam",
);

sub slow_convert {
my $word=shift;

for (0..$#arr_regexp) {
  $this_regexp=$arr_regexp[$_];

    if ($word=~/^$this_regexp$/) {
     return $arr_words[$_];
    }

} # for

} # sub_convert



Първият масив съдържа думи от българския език, а втория съдържа шаблони, съответстващи на думите от първия масив.

Ако дадена дума съвпада с $arr_regexp[$n], програмата решава, че преводът на тази дума е $arr_words[$n].

Ето текущата версия на скрипта:
http://d.interbild.net/vstoyko....05-2302
Активен

vstoykov

  • Напреднали
  • *****
  • Публикации: 1286
  • Distribution: Ubuntu
  • Window Manager: Fluxbox
    • Профил
    • WWW
Програмата работи ужасно бавно на моята машина (Celeron 333 64MB RAM). В същност не съм я наблюдавал дали работи, защото не ми издържаха нервите да я чакам да зарежда.

Текущата версия:
http://d.interbild.net/vstoyko.....tar.gz

Програмата чете какво и се подава на стандартния вход и резултата се получава на стандартния изход:

cat file.txt | lat2cyr

Само програмата (без модулите с думите):
http://d.interbild.net/vstoykov/tmp/lat2cyr/04042005/lat2cyr.pl
Програмата, която създава модула с шаблоните:
http://d.interbild.net/vstoyko....gexp.pl
Активен

iv

  • Участници
  • ***
  • Публикации: 5
    • Профил
На скоро писах подобно нещо - задачата се оказа доста интересна добре, че открих сетлокал на ПХПто '<img'>. Използвал съм речник с произволни думи - потребителя сам си въвежда речника подробността е че към всяка дума е прикрепена тежест при зареждането му от базата данни сортирането е по тежест ( колкото е по-голяма тежестта на думата толкова по-малка е вероятността да се използва - просто и удобно) и съответно с речник от 40-50 думи се постига почти отличен резултат. Истинската трудност изпитах когато ми казаха, че програмчето бърка голямите и малките букви в някои думи - оказа се, че поради специфики на текста има голями букви и в края и в началото и то неопределен брой е това неможах да се сетя как да го направя финно и засега проблема стои...
Погледнах статията с алгоритъма за думите но не разбрах много каква връзка има с чист превод от шлйокавица.

Базата която ползвам е МойСКЛ езика ПХП на машина 450П2, с 256мв доста дискове но и накачуркано каково ли не апачите, днс, днцп, времеви разносвач '<img'>, самба и общовзето бачка добре. С база от 60000 реда всеки със средно 60 символа и 4-5 думи се справя за 12-15мин ако не е натоварена с друго.

Ако има нещо пишете на iv@acnielsen.bg
Активен

vstoykov

  • Напреднали
  • *****
  • Публикации: 1286
  • Distribution: Ubuntu
  • Window Manager: Fluxbox
    • Профил
    • WWW
Цитат (iv @ Април 05 2005,12:07)
На скоро писах подобно нещо - задачата се оказа доста интересна добре, че открих сетлокал на ПХПто '<img'>. Използвал съм речник с произволни думи - потребителя сам си въвежда речника подробността е че към всяка дума е прикрепена тежест при зареждането му от базата данни сортирането е по тежест ( колкото е по-голяма тежестта на думата толкова по-малка е вероятността да се използва - просто и удобно) и съответно с речник от 40-50 думи се постига почти отличен резултат. Истинската трудност изпитах когато ми казаха, че програмчето бърка голямите и малките букви в някои думи - оказа се, че поради специфики на текста има голями букви и в края и в началото и то неопределен брой е това неможах да се сетя как да го направя финно и засега проблема стои...
Погледнах статията с алгоритъма за думите но не разбрах много каква връзка има с чист превод от шлйокавица.

Базата която ползвам е МойСКЛ езика ПХП на машина 450П2, с 256мв доста дискове но и накачуркано каково ли не апачите, днс, днцп, времеви разносвач '<img'>, самба и общовзето бачка добре. С база от 60000 реда всеки със средно 60 символа и 4-5 думи се справя за 12015мин ако не е натоварена с друго.

Ако има нещо пишете на iv@acnielsen.bg

Това има ли го някъде в Интернет?
Активен

vstoykov

  • Напреднали
  • *****
  • Публикации: 1286
  • Distribution: Ubuntu
  • Window Manager: Fluxbox
    • Профил
    • WWW
Готова е прилично работеща версия:


http://d.interbild.net/vstoykov/62c/62c-08042005.tar.gz
http://d.interbild.net/vstoykov/62c/62c-08042005.tar.gz.md5

Инсталира се така:
Примерен код

tar -zxf 62c-08042005.tar.gz
cd 62c-08042005
su
./install.bash
Активен

vstoykov

  • Напреднали
  • *****
  • Публикации: 1286
  • Distribution: Ubuntu
  • Window Manager: Fluxbox
    • Профил
    • WWW
Нова версия:
http://d.interbild.net/vstoykov/62c/62c-09042005.tar.gz
http://d.interbild.net/vstoykov/62c/62c-09042005.tar.gz.md5

Работи по-бързо от предишната и разпознава повече думи, но размерът се е увеличил - 41MB като се декомпресира.
Активен

  • Гост
Аз пиша фонетично БГ на ПЦ '<img'> '<img'>
Но при шльокавица ето как стоят нещата:

ch - ч
sh - ш
sht - щ (получава се шт , което си е като звук 90% щ '<img'> )
q - я
w - в
v - ж
utiqta - ютията / някаква логика може би iu - иу ~ ю :? :|
y - ъ
j - й
jo - йо

!!! h - х
======== xo/yo - ьо !!!

Може да съм изпуснал някой друг звук, но като се сетя ще пиша пак.
Активен

vstoykov

  • Напреднали
  • *****
  • Публикации: 1286
  • Distribution: Ubuntu
  • Window Manager: Fluxbox
    • Профил
    • WWW
Цитат (Guest @ Април 10 2005,01':0')
Аз пиша фонетично БГ на ПЦ <!--emo&'<img'> '<img'>
Но при шльокавица ето как стоят нещата:

ch - ч
sh - ш
sht - щ (получава се шт , което си е като звук 90% щ '<img'> )
q - я
w - в
v - ж
utiqta - ютията / някаква логика може би iu - иу ~ ю :? :|
y - ъ
j - й
jo - йо

!!! h - х
======== xo/yo - ьо !!!

Може да съм изпуснал някой друг звук, но като се сетя ще пиша пак.

Малка демонстрация на текущата версия:

Примерен код

valentin@darkstar:~$ echo "Gladia s utiqta. Vivota e prekrasen." | lat2cyr.pl
Гладя с ютията. Живота е прекрасен.
valentin@darkstar:~$


Последно време по форумите хората почнаха да пишат на кирилица и трудно намирам шльокавица за да тествам програмата. Някой би ли написал нещо за да тестваме?

Примерите от статията за шльокавица в Уикипедия:
Примерен код

Hallo, ti GOLQM bulgarin, kato SLAVI TRIFONOV li si,
ili si ot po-malkite bulgari - kato men, deto sluguvat
na anglijskata kralica? Tyk nqmat kirilo-metodievata
azbuka na kompjutrite, sorry...

kato iskate da se pi6e na kirilica, ami slojete kirilizator
kakavto ima v dir.bg , da se smenqt ezicite ot web stranicata
na akademiqta, 6toto az nqmam BDS klaviatura, a tezi piratski
versii na flex-type samo mi skapvat windowsa, taka 4e za da
iska6 trqbva da dade6 ne6to i ti

Moite saboleznovania.Lo6 kasmet si izvadil ,brat.Ne e lesno
da si bulgarin i da pi6e6 na bulgarski.Zeliat sviat pi6e na
latiniza,samo nie se penim,4e si imame kiriliza.

Az giveia v chugbina i ugasno mi lipsva vazmognostta da pisha
na kiriliza. Imate li niakakvi saveti pе kakav nachin moga da
pisha na kirilica s klaviatura, samo na kirilica.


се превеждат така:
Примерен код

Здравей, ти ГОЛЯМ българин, като СЛАВИ ТРИФОНОВ ли си,
или си от по-малките българи - като мен, дето слугуват
на английската кралица? Тук нямат кирило-методиевата
азбука на компютрите, съжалявам...

като искате да се пише на кирилица, ами сложете кирилизатор
какъвто има в дир.бг , да се сменят езиците от уеб страницата
на академията, щото аз нямам БДС клавиатура, а тези пиратски
версии на флекс-тайп само ми скапват Уиндоусa, така че за да
искаш трябва да дадеш нещо и ти


Моите съболезнования.Лош късмет си извадил ,брат.Не е лесно
да си българин и да пишеш на български.Целият свят пише на
латиница,само ние се пеним,че си имаме кирилица.


Аз живея в чужбина и ужасно ми липсва възможността да пиша
на кирилица. Имате ли някакви съвети пе какъв начин мога да
пиша на кирилица с клавиатура, само на кирилица.


Времето за превод на горния текст беше 11 секунди:
Примерен код

valentin@darkstar:~$ date; cat examples.txt | lat2cyr.pl > examples-prevedeni.txt; date
нд апр 10 13:16:05 UTC 2005
нд апр 10 13:16:16 UTC 2005
valentin@darkstar:~$ cat /proc/cpuinfo  | grep -e "model name" -e "MHz"
model name      : Celeron (Mendocino)
cpu MHz         : 333.184
valentin@darkstar:~$ cat /proc/meminfo | grep MemTotal
MemTotal:        61252 kB
valentin@darkstar:~$


Все още не може да оправя препинателните знаци, но и това може да се направи  '<img'>
Активен

the_real_maniac

  • Напреднали
  • *****
  • Публикации: 1258
  • Kernel panic, me - no panic ;-) :-)
    • Профил
Що не използваш time  ':0'  '<img'> '<img'>

man time

time man '<img'>
Примерен код

What manual page do you want?

real    0m0.002s
user    0m0.002s
sys     0m0.000s


Иначе на бърз преглед ХИЧ НЕ Е лоша ! Браво.
Активен

Powered by Debian GNU / LINUX /// Intel inside ...

„Насилието е последното убежище на некомпетентността“ - Айзък Азимов (1920 — 1992)

vstoykov

  • Напреднали
  • *****
  • Публикации: 1286
  • Distribution: Ubuntu
  • Window Manager: Fluxbox
    • Профил
    • WWW
Благодаря за идеята (time).
Ако някой ми предложи хостинг, ще направя web интерфейс към програмата.
Активен

betso

  • Напреднали
  • *****
  • Публикации: 281
    • Профил
-- removed by betso --
Активен

vstoykov

  • Напреднали
  • *****
  • Публикации: 1286
  • Distribution: Ubuntu
  • Window Manager: Fluxbox
    • Профил
    • WWW
Уеб интерфейсът е готов. Има ли някой желаещ да го хоства?

Теглене:
http://d.interbild.net/vstoykov/62c/62c-120420052230.tar.gz
http://d.interbild.net/vstoykov/62c/62c-120420052230.tar.gz.md5

Снимки на екрана:
http://d.interbild.net/vstoykov/62c/62c_web1.png
http://d.interbild.net/vstoykov/62c/62c_web2.png

Уеб интерфейсът e form.pl (трябва да се копира ръчно където трябва). Той приема данните от форма с текстово поле "latinica".

Примерен html код:
Примерен код

<form action="form.pl" method="post">
<textarea name=latinica>
</textarea>
<br>
<INPUT type=submit value=" Изпрати ">
<INPUT type=reset value=" Изчисти ">
</form>
Активен

sebastianz55

  • Напреднали
  • *****
  • Публикации: 1136
    • Профил
    • WWW
Активен

С уважения:
Sebastianz55
------------------
http://www.fsa-bg.org
                              
Open Fest Initiative  http://openfest.org
                                              
Моля ви, уважавайте процесорното време на другите - пишете на кирилица и използвайте търсачката на форума!