Автор Тема: Простой конвертер для корейского алфавита.  (Прочитано 23961 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Anatoli

  • Заслуженный
  • *****
  • Сообщений: 1481
  • Карма: 41
  • Пол: Мужской
    • Studying Chinese Language and Chinese Culture
Предлагаю вашему вниманию результат простой конверсии из хангыля на латинский. Программку написал на C#.Net. Латинизатор показывает как слова пишутся, а не произносятся, для начинающих моет быть полезен - включая меня. Искал- искал, пришлось самому написать. Цитата из "Шестого элемента" ("The Sixth Element") - "If you want something done, do it yourself!"

Обратная конверсия тоже возможно, но пока не готова. Необходимо иметь разграничитель символов хангыль/слогов, типа как ниже использовано "-" (тире).

Teach Yourself Korean, Lesson 1:


1. 안녕하세요!

장민: 재민씨! 안녕하세요!
재민: 네. 안녕하세요! 잘 지냈어요?
장민: 네, 네. 어디 가요?
재민: 지금 시내에가요.
장민: 뭐 하러 시내에 가요?
재민: 빵 사러 가요.
장민: 나도 빵 사러 시내에 가요.
재민: 그럼 같이 가요.
장민: 네. 같이 가요.

1. an-nyeong-ha-se-yo-!

jang-min-: jae-min-ssi-! an-nyeong-ha-se-yo-!
jae-min-: ne-. an-nyeong-ha-se-yo-! jal- ji-naess-eo-yo-?
jang-min-: ne-, ne-. eo-di- ga-yo-?
jae-min-: ji-geum- si-nae-e-ga-yo-.
jang-min-: mueo- ha-leo- si-nae-e- ga-yo-?
jae-min-: bbang- sa-leo- ga-yo-.
jang-min-: na-do- bbang- sa-leo- si-nae-e- ga-yo-.
jae-min-: geu-leom- gat-i- ga-yo-.
jang-min-: ne-. gat-i- ga-yo-.

2. 건배!

상민: 아저씨, 소주 있어오?
아저씨: 네, 네. 있어요. 소주, 맥주, 양주 다 있어요.
상민: 그럼, 맥주 하나하고 소주 하나 주세요.
아저씨: 네. 알겠어요.
상민: 그리고 안주도주세요. 뭐 있어요?
아저씨: 과일하고 오징어하고 마른안주하고 파전하고… 다 있어요.
상민: 그럼 과일하고 오징어 주세요.

아저씨: 여기 있어요. 맛있게 드세요.
상민: 감사합니다.

상민: 건배!


2. geon-bae-!

sang-min-: a-jeo-ssi-, so-ju- iss-eo-o-?
a-jeo-ssi-: ne-, ne-. iss-eo-yo-. so-ju-, maeg-ju-, yang-ju- da- iss-eo-yo-.
sang-min-: geu-leom-, maeg-ju- ha-na-ha-go- so-ju- ha-na- ju-se-yo-.
a-jeo-ssi-: ne-. al-gess-eo-yo-.
sang-min-: geu-li-go- an-ju-do-ju-se-yo-. mueo- iss-eo-yo-?
a-jeo-ssi-: goa-il-ha-go- o-jing-eo-ha-go- ma-leun-an-ju-ha-go- pa-jeon-ha-go-… da- iss-eo-yo-.
sang-min-: geu-leom- goa-il-ha-go- o-jing-eo- ju-se-yo-.

a-jeo-ssi-: yeo-gi- iss-eo-yo-. mas-iss-ge- deu-se-yo-.
sang-min-: gam-sa-hab-ni-da-.

sang-min-: geon-bae-!

некоторые слова иероглифами из диалогов, много алкогольной лексики :)

안녕 (安寧) annyeong
맥주(麥酒) maegju
양주(洋酒) yangju
소주(燒酒) soju
안주 (按酒) anju
건배 (乾杯) geonbae
千里の道も一歩より始まる (senri-no michi-mo ippo-yori hajimaru)
千里之行, 始于足下 (qian li zhi xing, shi yu zu xia)
رحلة الألف ميل تبدأ بخطوة واحدة (riHlatu l-'alfi miili tabda'u bi-khaTwati waaHidati)

Оффлайн Coala

  • Заслуженный
  • *****
  • Сообщений: 1268
  • Карма: 15
  • Пол: Мужской
А чего l вместо r пишет?

Оффлайн Anatoli

  • Заслуженный
  • *****
  • Сообщений: 1481
  • Карма: 41
  • Пол: Мужской
    • Studying Chinese Language and Chinese Culture
А чего l вместо r пишет?

Как самое распространенное чтение буквы ㄹ, можно было как инициаль сделать R, а как финаль L, но тогда будет опять куча ситуаций, где надо читать как Л или Н. Читать надо по тем же правилам, что и корейскую букву ㄹ. То есть, конвертер показывает, какая орфография использовалась, правила чтения и произношения остаются, только каждой букве джамо (чамо) соответствует одна буква/сочетание букв латнского алфавита.

Второй урок:

1. 오래간만이에요!

박선생: 김선생님, 안녕하세요?
김선생: 아! 박선생님! 안녕하세요?
박선생: 오래간만이에요!
김선생: 네. 그래요.  진짜 오래간만이에요!
박선생: 잘 지넸어요?
김선생: 네. 잘 지넸어요. 요즘 사업은 어떄요?
박선생: 그저 그래요.
… 우리 집사람이에요.
김선생: 아! 그래요? 반갑습니다. 말씀 많이 들었어요.
박선생 부인: 반갑습니다. 저는 장윤희에요.
김선생: 저는 김진양이에요. 만나서반갑습니다.

1. o-lae-gan-man-i-e-yo-!

bag-seon-saeng-: gim-seon-saeng-nim-, an-nyeong-ha-se-yo-?
gim-seon-saeng-: a-! bag-seon-saeng-nim-! an-nyeong-ha-se-yo-?
bag-seon-saeng-: o-lae-gan-man-i-e-yo-!
gim-seon-saeng-: ne-. geu-lae-yo-.  jin-jja- o-lae-gan-man-i-e-yo-!
bag-seon-saeng-: jal- ji-ness-eo-yo-?
gim-seon-saeng-: ne-. jal- ji-ness-eo-yo-. yo-jeum- sa-eob-eun- eo-ddyae-yo-?
bag-seon-saeng-: geu-jeo- geu-lae-yo-.
… u-li- jib-sa-lam-i-e-yo-.
gim-seon-saeng-: a-! geu-lae-yo-? ban-gab-seub-ni-da-. mal-sseum- manh-i- deul-eoss-eo-yo-.
bag-seon-saeng- bu-in-: ban-gab-seub-ni-da-. jeo-neun- jang-yun-heui-e-yo-.
gim-seon-saeng-: jeo-neun- gim-jin-yang-i-e-yo-. man-na-seo-ban-gab-seub-ni-da-.

2. 저는 아니에요!

오선생: 실례합니다.
이선생: 네?
오선생: 한극말 선생님이세요?
이선생: 아니요. 저는 한극말 선생님이 아니에요. 저는 일본말 선생님이에요.
오선생: 아, 죄송 합니다. 여기가 한극학과 사무실이 아니에요?
이선생: 네. 한극학과가 아니에요. 여기는 일본학과에요.
오선생: 그럼 한국학과 사무실이 어디에요?
이선생: 저기 있어요.

오선생: 실례지만, 여기가 한극학과 사무실이에요?
김선생: 네. 무슨 일이세요?
오선생: 한극말 선생님 만나러 왔어요.

2. jeo-neun- a-ni-e-yo-!

o-seon-saeng-: sil-lye-hab-ni-da-.
i-seon-saeng-: ne-?
o-seon-saeng-: han-geug-mal- seon-saeng-nim-i-se-yo-?
i-seon-saeng-: a-ni-yo-. jeo-neun- han-geug-mal- seon-saeng-nim-i- a-ni-e-yo-. jeo-neun- il-bon-mal- seon-saeng-nim-i-e-yo-.
o-seon-saeng-: a-, joi-song- hab-ni-da-. yeo-gi-ga- han-geug-hag-goa- sa-mu-sil-i- a-ni-e-yo-?
i-seon-saeng-: ne-. han-geug-hag-goa-ga- a-ni-e-yo-. yeo-gi-neun- il-bon-hag-goa-e-yo-.
o-seon-saeng-: geu-leom- han-gug-hag-goa- sa-mu-sil-i- eo-di-e-yo-?
i-seon-saeng-: jeo-gi- iss-eo-yo-.

o-seon-saeng-: sil-lye-ji-man-, yeo-gi-ga- han-geug-hag-goa- sa-mu-sil-i-e-yo-?
gim-seon-saeng-: ne-. mu-seun- il-i-se-yo-?
o-seon-saeng-: han-geug-mal- seon-saeng-nim- man-na-leo- oass-eo-yo-.
千里の道も一歩より始まる (senri-no michi-mo ippo-yori hajimaru)
千里之行, 始于足下 (qian li zhi xing, shi yu zu xia)
رحلة الألف ميل تبدأ بخطوة واحدة (riHlatu l-'alfi miili tabda'u bi-khaTwati waaHidati)

Оффлайн Coala

  • Заслуженный
  • *****
  • Сообщений: 1268
  • Карма: 15
  • Пол: Мужской
А почему нельзя запрограммировать так чтобы l между гласными становился r?

Оффлайн Anatoli

  • Заслуженный
  • *****
  • Сообщений: 1481
  • Карма: 41
  • Пол: Мужской
    • Studying Chinese Language and Chinese Culture
А почему нельзя запрограммировать так чтобы l между гласными становился r?
Похоже, что мне нужно будет так и сделать.

Какому стандарту транскрипции или транслитерации по-вашему нужно придерживаться для конверсии на кириллицу?
« Последнее редактирование: 29 Апреля 2006 08:31:41 от Anatoli »
千里の道も一歩より始まる (senri-no michi-mo ippo-yori hajimaru)
千里之行, 始于足下 (qian li zhi xing, shi yu zu xia)
رحلة الألف ميل تبدأ بخطوة واحدة (riHlatu l-'alfi miili tabda'u bi-khaTwati waaHidati)

Оффлайн LiBeiFeng

  • Заслуженный
  • *****
  • Сообщений: 773
  • Карма: 15
  • Пол: Мужской
To Anatoli
Весьма интересно!   :) А какую систему латинизации использует ваш конвертор?  Он работает пока только в одну сторону? Кстати, что-то похожее уже делал ksen.  :)
« Последнее редактирование: 30 Апреля 2006 04:13:02 от LiBeiFeng »
Не всё стриги, что растет... (Козьма Прутков)

Оффлайн Anatoli

  • Заслуженный
  • *****
  • Сообщений: 1481
  • Карма: 41
  • Пол: Мужской
    • Studying Chinese Language and Chinese Culture
To Anatoli
Весьма интересно!   :) А какую систему латинизации использует ваш конвертор?  Он работает пока только в одну сторону? Кстати, что-то похожее уже делал ksen.  :)
Система простая, но не стандартная. Фонетические изменения не учитываются, показывается только корейская орфография (за исключением символа "ㅇ" - "нулевая инициаль" в начале, а как финаль "ng" . Пары глухих/звонких придыхательных/беспридыхательных передаются просто b/p, g/k, j/ch, d/t независимо от положения. Букву ㄹ пока только как L передаю, но наверное сделаю, чтоб между гласными было R.

В ближайшее время опубликую здесь таблицу соответствия символов, которую я использовал.

Программка разбивает хангыль на символы по формуле для конверсии, которая не сразу до меня дошла, но вообще интересно. Если бы количество возможных комбинаций слогов не была такой большой, можно было просто макро написать, что я и пробовал, no Visual Basic зашкаливает на 11000 символах!

Пока в одну сторону. В обратную намного сложней, но попробую сделать. Возможно будет если только придерживаться "моего" стандарта и будет использоваться символ разделения между слогами/символами хангыль, то есть надо знать корейское правописание для конверсии! Сложность будет с двойными согласными и дифтонгами.

Если кто предоставит варианты "кириллизации", добавить конверсию будет несложно. Опять же, результат будет ближе к оригинальной орфографии, а не к произношению. Одна из проблемок будет решить как отличать и отличать ли финали ㄴ (n) и ㅇ (ng). С китайским принято писать по-русски "Н" и "НЬ". С корейским такого нет, некоторые предлагают финаль ㅇ как "НЪ" передавать.

В ближайшую пару недель ничего изменить не смогу, сильно занят одной работкой, но если есть интерес подписывайтесь на извещения по ветке, как будут новости, узнаете.  :)

А что у ksen вышло?
« Последнее редактирование: 02 Мая 2006 06:27:51 от Anatoli »
千里の道も一歩より始まる (senri-no michi-mo ippo-yori hajimaru)
千里之行, 始于足下 (qian li zhi xing, shi yu zu xia)
رحلة الألف ميل تبدأ بخطوة واحدة (riHlatu l-'alfi miili tabda'u bi-khaTwati waaHidati)

Оффлайн Coala

  • Заслуженный
  • *****
  • Сообщений: 1268
  • Карма: 15
  • Пол: Мужской
Anatoli! На мой взгляд полезнее сделать программу наоборот - так чтобы писать латинскими буквами, а печаталось корейскими по всем правилам. То есть как если набирать японский с помощью ромадзи. А то к корейской раскладке в винде привыкнуть трудно, чтобы вслепую печатать. Раньше была досовская программа "Хангыль", которая позволяла печатать хангылем путем ввода ромадзи, но в виндовых программах такого нет. А зачем переводить корейский в латиницу - я не совсем понимаю. Сумимасэн!

Оффлайн ksen

  • Бывалый
  • ***
  • Сообщений: 221
  • Карма: 6
А что у ksen вышло?
http://dviewer.nm.ru/han2rom.html (работает в IE)

Вот основной "движок":
han_cons=['g','kk','n','d','tt','r','m','b','pp','s','ss','','j','jj','ch','k','t','p','h'];
han_vowels=['a', 'ae', 'ya', 'yae', 'eo','e','yeo','ye',
'o','wa','wae','oi','yo','u','wo','we','wi',
'yu','eu', 'ui', 'i'];
han_patchib=['','g','kk','gs','n','nj','nh','d','l','lk','lm','lb','ls','lt','lp','lp',
'm','b','bs','s','ss','ng','j','ch','k','t','p','h'];

function han2rom(char){
var code=char.charCodeAt()-44032; if(code <0 || code >11171) return(char);
var ofs = code % 588;
return han_cons[code/588 >>0]+han_vowels[ofs/28 >>0]+han_patchib[ofs % 28];
}
В принципе, внутрь функции han2rom можно "зашить" все чередования, только нужно передавать ей не отдельный символ-слог, а все слово, и анализировать все смежные слоги.
function han2rom(str){
   var romstr=[]
   for(var i=0; i<str.length; i++){
var code=char.charCodeAt()-44032; if(code <0 || code >11171) return(char);
var ofs = code % 588;
romstr[i]={c: han_cons[code/588 >>0],
                         v: han_vowels[ofs/28 >>0],
                         p: han_patchib[ofs % 28]};
   }
   for( i=0; i<str.length-1; i++){
      switch romstr[i].p {
         case 'l': switch romstr[i+1].c {
            case '': case 'h': romstr[i].p = 'r'; break
            case 'r': romstr[i+1].c = 'l'; break;
            case 'n': romstr[i].p = 'l'; romstr[i+1].c = 'l'; break;
            и т.д. - все правила
            }
       }
   return romstr.join('')
}

Оффлайн ksen

  • Бывалый
  • ***
  • Сообщений: 221
  • Карма: 6
Anatoli! На мой взгляд полезнее сделать программу наоборот - так чтобы писать латинскими буквами, а печаталось корейскими по всем правилам. То есть как если набирать японский с помощью ромадзи. А то к корейской раскладке в винде привыкнуть трудно, чтобы вслепую печатать. Раньше была досовская программа "Хангыль", которая позволяла печатать хангылем путем ввода ромадзи, но в виндовых программах такого нет. А зачем переводить корейский в латиницу - я не совсем понимаю. Сумимасэн!
--преобразование из Standard Romanized в хангыль у меня сделано "в лоб":
rom_syl={};
for(var i=44032; i<=44032+11171; i++) {
var ch=String.fromCharCode(i);
rom_syl[han2rom(ch)]=ch
}
function rom2han(str){
if(!str) return '';
str=str.split('-');
var s='';
for(var i=0;i<str.length;i++){
s+= rom_syl[str[i]]? rom_syl[str[i]] : str[i]
}
return s;
}

--Если это кому-нибудь нужно, могу подготовить HTML-JScript страничку для перевода.

Оффлайн Anatoli

  • Заслуженный
  • *****
  • Сообщений: 1481
  • Карма: 41
  • Пол: Мужской
    • Studying Chinese Language and Chinese Culture
Anatoli! На мой взгляд полезнее сделать программу наоборот - так чтобы писать латинскими буквами, а печаталось корейскими по всем правилам. То есть как если набирать японский с помощью ромадзи. А то к корейской раскладке в винде привыкнуть трудно, чтобы вслепую печатать. Раньше была досовская программа "Хангыль", которая позволяла печатать хангылем путем ввода ромадзи, но в виндовых программах такого нет. А зачем переводить корейский в латиницу - я не совсем понимаю. Сумимасэн!

Всему свое время, Коала. Сделал спервая "тётто" для себя ее писал, т.к. в корейском чайник, a таких много. Им и пригодится.

Кстати, уже кое-что добавил. Инициаль ㄹ теперь между гласными будет R. Удаляю разделитель "-" в конце слова. Можно совместить оригинал с латинизириванным текстом построчно (опция):

1. 오래간만이에요!
1. o-rae-gan-man-i-e-yo!


박선생: 김선생님, 안녕하세요?
bag-seon-saeng: gim-seon-saeng-nim, an-nyeong-ha-se-yo?
김선생: 아! 박선생님! 안녕하세요?
gim-seon-saeng: a! bag-seon-saeng-nim! an-nyeong-ha-se-yo?
박선생: 오래간만이에요!
bag-seon-saeng: o-rae-gan-man-i-e-yo!
김선생: 네. 그래요.  진짜 오래간만이에요!
gim-seon-saeng: ne. geu-rae-yo.  jin-jja o-rae-gan-man-i-e-yo!
박선생: 잘 지넸어요?
bag-seon-saeng: jal ji-ness-eo-yo?
김선생: 네. 잘 지넸어요. 요즘 사업은 어떄요?
gim-seon-saeng: ne. jal ji-ness-eo-yo. yo-jeum sa-eob-eun eo-ddyae-yo?
박선생: 그저 그래요.
bag-seon-saeng: geu-jeo geu-rae-yo.
… 우리 집사람이에요.
… u-ri jib-sa-ram-i-e-yo.
김선생: 아! 그래요? 반갑습니다. 말씀 많이 들었어요.
gim-seon-saeng: a! geu-rae-yo? ban-gab-seub-ni-da. mal-sseum manh-i deul-eoss-eo-yo.
박선생 부인: 반갑습니다. 저는 장윤희에요.
bag-seon-saeng bu-in: ban-gab-seub-ni-da. jeo-neun jang-yun-heui-e-yo.
김선생: 저는 김진양이에요. 만나서반갑습니다.
gim-seon-saeng: jeo-neun gim-jin-yang-i-e-yo. man-na-seo-ban-gab-seub-ni-da.



千里の道も一歩より始まる (senri-no michi-mo ippo-yori hajimaru)
千里之行, 始于足下 (qian li zhi xing, shi yu zu xia)
رحلة الألف ميل تبدأ بخطوة واحدة (riHlatu l-'alfi miili tabda'u bi-khaTwati waaHidati)

Оффлайн Anatoli

  • Заслуженный
  • *****
  • Сообщений: 1481
  • Карма: 41
  • Пол: Мужской
    • Studying Chinese Language and Chinese Culture
Спасибо, Ksen, посмотрю вашу работу.

Как пользоваться конвертер но вэбе-странице?

Готово будет поделюсь кодом или программой.

Выше я скриншот пока того, что есть дал и пример конверсии с оригиналом. Меню пока не функционально, только аутпут можно сохранить в RTF.

千里の道も一歩より始まる (senri-no michi-mo ippo-yori hajimaru)
千里之行, 始于足下 (qian li zhi xing, shi yu zu xia)
رحلة الألف ميل تبدأ بخطوة واحدة (riHlatu l-'alfi miili tabda'u bi-khaTwati waaHidati)

Оффлайн Coala

  • Заслуженный
  • *****
  • Сообщений: 1268
  • Карма: 15
  • Пол: Мужской
Ну вы даете! Аутпут, RTF, "в лоб"... Для меня проще выучить какой-нить удаленный диалект китайского. Ничего не понял, но чувствую, дело вы делаете великое! Гамбаттэ кудасай! Суго хасипсио! 謝 謝!

Оффлайн ksen

  • Бывалый
  • ***
  • Сообщений: 221
  • Карма: 6
Спасибо, Ksen, посмотрю вашу работу.
Как пользоваться конвертер но вэбе-странице?
--Выложена версия 0.2, теперь и с вводом-выводом руссификации:
http://dviewer.nm.ru/han2rom.html (7Kb)
http://dviewer.nm.ru/han2rom.rar (4Kb)

Пользоваться очень просто: копируете или печатаете в одном из трех полях: Hangeul, Romanized, Русская - и сразу же получаете перекодировку в двух других полях. Ограничения: в полях Romanized и Русская вывод дается без дефисов между слогами, а ввод, к сожалению, только с дефисами.

В теле странички находятся таблицы перекодировок, их можно редактировать.

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

Hangeul:
중국 송(宋)나라 때에 천하 제일의 명공(明公)이 있었으니, 성은 김(金)이요 이름은 전(佺)이라 하더라.
그의 집안은 대대로 명문거족(名門巨族)이라, 부친 운수선생(雲水先生)은 도덕이 높은 선비로서, 공명(功名)에 뜻이 없어 산중에 은거하여 세월을 보내었으니, 천자(天子)가 그 소문을 들으시고, 신하를 보내어 이부상서(吏部尙書)의 벼슬을 주며 불렀으나 종시 조정에 나오지 않고 산중에서 일생을 마치니, 집안이 처량하더라.
그의 아들 김 전이 또한 문장이 빼어나서 이태백(李太白)과 두보(杜甫)를 압도하고, 글씨는 왕희지(王羲之)와 조화보를 무색하게 할 정도라, 그에게 배우려는 선비들이 구름 모이듯이 따르더라.

Romanized:
jungguk song(宋)nara ttaee cheonha jeilui myeonggong(明公)i isseosseuni, seongeun gim(金)iyo ireumeun jeon(佺)ira hadeora.
geuui jipaneun daedaero myeongmungeojok(名門巨族)ira, buchin unsuseonsaeng(雲水先生)eun dodeoki nopeun seonbiroseo, gongmyeong(功名)e tteusi eopseo sanjunge eungeohayeo sewoleul bonaeeosseuni, cheonja(天子)ga geu somuneul deuleusigo, sinhareul bonaeeo ibusangseo(吏部尙書)ui byeoseuleul jumyeo bulreosseuna jongsi jojeonge naoji anhgo sanjungeseo ilsaengeul machini, jipani cheoryanghadeora.
geuui adeul gim jeoni ttohan munjangi ppaeeonaseo itaebaek(李太白)gwa dubo(杜甫)reul apdohago, geulssineun wanghuiji(王羲之)wa johwaboreul musaekhage hal jeongdora, geuege baeuryeoneun seonbideuli gureum moideusi ttareudeora.

Русская:
чжунъкук сонъ(宋)нала ттэе чхОнха чжеилый мйОнъконъ(明公)и иссОссыни, сОнъын ким(金)ийо илымын чжОн(佺)ила хатОла.
кыый чжипанын тэтэло мйОнъмункОчжок(名門巨族)ила, пучхин унсусОнсэнъ(雲水先生)ын тотОки нопхын сОнпилосО, конъмйОнъ(功名)е ттыси ОпсО санчжунъе ынкОхайО севолыл понэОссыни, чхОнчжа(天子)ка кы сомуныл тылысико, синхалыл понэО ипусанъсО(吏部尙書)ый пйОсылыл чжумйО пуллОссына чжонъси чжочжОнъе наочжи анхко санчжунъесО илсэнъыл мачхини, чжипани чхОлянъхатОла.
кыый атыл ким чжОни ттохан мунчжанъи ппэОнасО итхэпэк(李太白)ква тупо(杜甫)лыл аптохако, кылссинын ванъхыйчжи(王羲之)ва чжохваполыл мусэкхаке хал чжОнътола, кыеке пэулйОнын сОнпитыли кулым моитыси тталытОла.
« Последнее редактирование: 02 Мая 2006 16:45:03 от ksen »

Оффлайн Coala

  • Заслуженный
  • *****
  • Сообщений: 1268
  • Карма: 15
  • Пол: Мужской
Если вводить русский и ромадзи, то почему надо делить слова на отдельные слоги? Нельзя ли сразу ввести Хангук, чтобы получить 한국?

Оффлайн Coala

  • Заслуженный
  • *****
  • Сообщений: 1268
  • Карма: 15
  • Пол: Мужской
А вообще, прикольно!

Оффлайн ksen

  • Бывалый
  • ***
  • Сообщений: 221
  • Карма: 6
Если вводить русский и ромадзи, то почему надо делить слова на отдельные слоги? Нельзя ли сразу ввести Хангук, чтобы получить 한국?
--Можно, но на выходе можно получить несколько вариантов, из-за неопределенности разбивки на слоги:
ара = ар-а / а-ра
илгын - ил-гын / илк-ын

В стандартной романизации рекомендуется ставить дефис в двусмысленных случаях, а в русской (по кр. мере у Мазура) - точку.
В романизации проблемы возникают тж от диграфов eu, eo, ae, ui -
например, что такое baeun: 바은 / 배운
В идеале такие двусмысленности должны решаться подключением словаря и отсечения незначащих вариантов.

Оффлайн Anatoli

  • Заслуженный
  • *****
  • Сообщений: 1481
  • Карма: 41
  • Пол: Мужской
    • Studying Chinese Language and Chinese Culture
Отлично сделано, Ksen, спасибо. где вы были, когда я искал конвертер?  :)
千里の道も一歩より始まる (senri-no michi-mo ippo-yori hajimaru)
千里之行, 始于足下 (qian li zhi xing, shi yu zu xia)
رحلة الألف ميل تبدأ بخطوة واحدة (riHlatu l-'alfi miili tabda'u bi-khaTwati waaHidati)

Оффлайн ksen

  • Бывалый
  • ***
  • Сообщений: 221
  • Карма: 6
--та ото ж!  :)

Вот, интересно, arasseo может дать 12 вариантов на хангыле:
알았어
알았에오
알앗서
알앗세오
알아써
알아쎄오
아랐어
아랐에오
아랏서
아랏세오
아라써
아라쎄오

Оффлайн Coala

  • Заслуженный
  • *****
  • Сообщений: 1268
  • Карма: 15
  • Пол: Мужской
Надо ввести знак открытого слога ::).

Оффлайн LiBeiFeng

  • Заслуженный
  • *****
  • Сообщений: 773
  • Карма: 15
  • Пол: Мужской
ksen, большое спасибо!  :) Вижу, что тот принцип романизации, который Вы положили в основу Вашего вьювера довели до конца и даже добавили кирилизацию. :)

Цитировать
Надо ввести знак открытого слога

В китайском пиньине (лат. транскрипции), когда надо "насильственно" отделить др. от друга слоги ставят между ними ', но там меньше разнообразие финалей (кор. патчип) и инициалей чем в корейском, потому куда меньше таких неоднозначных случаев... Наверное, без разницы дефис или какой-либо др. знак, главное чтобы была однозначность разбиения на слоги, и однозначность преобразования туда-обратно, что сейчас вполне имеется.
Конечно было бы здорово, если бы был простенький анализ всего слова на предмет когда "r" а когда "l", типа такого:
1. между гласными и в начале слова пусть будет читаться как "r"
2. а во всех остальных случаях "l" (аналогично и для кириллицы)
(Конечно это не всегда так и для некоторых заимствованных слов в начале слова может быть и "l", )
но это уже мелочи, которые не сильно режут глаз...
« Последнее редактирование: 03 Мая 2006 02:29:35 от LiBeiFeng »
Не всё стриги, что растет... (Козьма Прутков)

Оффлайн Anatoli

  • Заслуженный
  • *****
  • Сообщений: 1481
  • Карма: 41
  • Пол: Мужской
    • Studying Chinese Language and Chinese Culture
Ksen, а вы добились обратной конверсии, например из латиницы в хангыль, если разделитель символов использовать? Если да то как попробовать. Кстати, ваш JavaScript только в MS Internet Explorer работает, Mozilla Fierfox почему-то его не берет.

Хотя и не совсем готов, прилагаю основной код на языке C# (.Net) моего конвертера. Кому надо пользуйтесь, не жалко (за свой только не выдавайте  ;D ). Доделаю обновлю.

После разбивки на строки вот основная функция (метод) для конверсии. Кстати Л/Р пару еще надо доделать. Начальная становится Р, если предыдущая булва - гласная, а вот с финалью пока ничего не сделал, например Seoul -> Seoul-e, L не перейдет в R.

private string romanize(string stringToConvert)
{
string result = "";

string [] rLeads = {"g", "gg", "n", "d", "dd", "r", "m", "b", "bb", "s", "ss", "", "j", "jj", "c", "k", "t", "p", "h"};
string [] rVowels = {"a", "ae", "ya", "yae", "eo", "e", "yeo", "ye", "o", "oa", "oae", "oi", "yo", "u", "ueo", "ue", "ui", "yu", "eu", "eui", "i"};
string [] rTails = {"g", "gg", "gs", "n", "nj", "nh", "d", "l", "lg", "lm", "lb", "ls", "lt", "lp", "lh", "m", "b", "bs", "s", "ss", "ng", "j", "c", "k", "t", "p", "h"};
char currentChar;
int index = 0;
string l = "";
string v = "";
string t = "";
int charInt = 0;
string syllable = "";
bool wasVowel = false;

for (int i = 0; i < stringToConvert.Length; i++)
{
currentChar = stringToConvert[index];

if (((int)currentChar >= 44032) && ((int)currentChar <= 55203))
{
charInt = (int)currentChar;
try
{
l = rLeads[((charInt - 44032) / 588)];
//convert R to L if after a consonant
if ((l == "r") && (!wasVowel))
l = "l";
}
catch (IndexOutOfRangeException ex)
{
l = "";
}

try
{
t = rTails[((charInt - 44032) % 28) - 1];
}
catch (IndexOutOfRangeException ex)
{
t = "";
}

try
{
v = rVowels[((charInt - 44032 - (charInt - 44032) % 28) % 588) / 28];
}
catch (IndexOutOfRangeException ex)
{
v = "";
}

syllable = l + v + t;
if ((syllable.Substring(syllable.Length -1, 1) == "a") ||
(syllable.Substring(syllable.Length - 1, 1) == "e") ||
(syllable.Substring(syllable.Length - 1, 1) == "i") ||
(syllable.Substring(syllable.Length - 1, 1) == "o") ||
(syllable.Substring(syllable.Length - 1, 1) == "u"))
{
wasVowel = true;
}
else
{
wasVowel = false;
}

if (useSyllableDelimiter)
result = result + syllable + "-";
else
result = result + syllable;
}
else
{
//trim dashes if the next character wasn't Korean
if ((result.Length > 1) && (result.Substring(result.Length - 1, 1) == "-"))
result = result.Substring(0, result.Length - 1) + currentChar;
else
                        result = result + currentChar;
}
index++;
}

if (keepOriginal)
return stringToConvert + "\n" + result;
else
return result;
}
« Последнее редактирование: 03 Мая 2006 06:01:48 от Anatoli »
千里の道も一歩より始まる (senri-no michi-mo ippo-yori hajimaru)
千里之行, 始于足下 (qian li zhi xing, shi yu zu xia)
رحلة الألف ميل تبدأ بخطوة واحدة (riHlatu l-'alfi miili tabda'u bi-khaTwati waaHidati)

Оффлайн Coala

  • Заслуженный
  • *****
  • Сообщений: 1268
  • Карма: 15
  • Пол: Мужской
Anatoli! А как пользоваться-то? Для чайников... плиз!

Оффлайн ksen

  • Бывалый
  • ***
  • Сообщений: 221
  • Карма: 6
Ksen, а вы добились обратной конверсии, например из латиницы в хангыль, если разделитель символов использовать? Если да то как попробовать. Кстати, ваш JavaScript только в MS Internet Explorer работает, Mozilla Fierfox почему-то его не берет.
rom_syl={};
for(var i=44032; i<=44032+11171; i++) {
var ch=String.fromCharCode(i);
rom_syl[han2rom(ch)]=ch
}

—"перевод" всех символов Хангыль сохраняется в ассоциативном массиве rom_syl, так, что
rom_syl["guk"]=='국'
(или rom_syl_ru["кук"]=='국')

Этот массив и используется для перекодировки.

Оффлайн LiBeiFeng

  • Заслуженный
  • *****
  • Сообщений: 773
  • Карма: 15
  • Пол: Мужской
Anatoli
Спасибо за исходник преобразующей функции! У меня такой чисто технический вопрос - в C++ как вы работаете с Юникодом - наверное есть готовые библиотеки для этого дела?  :)  Мне это тоже сейчас вдруг неожиданно сильно понадобилось, а на Жабе я писать по разным причинам не хочу, да и знаю я её весьма плохо - хотелось чтобы на C++, но не знаю как там с юникодом работать... Хотя может уже есть встроенные средства.
« Последнее редактирование: 03 Мая 2006 17:05:23 от LiBeiFeng »
Не всё стриги, что растет... (Козьма Прутков)

Оффлайн Anatoli

  • Заслуженный
  • *****
  • Сообщений: 1481
  • Карма: 41
  • Пол: Мужской
    • Studying Chinese Language and Chinese Culture
Anatoli
Спасибо за исходник преобразующей функции! У меня такой чисто технический вопрос - в C++ как вы работаете с Юникодом - наверное есть готовые библиотеки для этого дела?  :)  Мне это тоже сейчас вдруг неожиданно сильно понадобилось, а на Жабе я писать по разным причинам не хочу, да и знаю я её весьма плохо - хотелось чтобы на C++, но не знаю как там с юникодом работать... Хотя может уже есть встроенные средства.


Это C#, а не C++. Юникод там просто работает, только файл кода надо сохранить как юникод.
千里の道も一歩より始まる (senri-no michi-mo ippo-yori hajimaru)
千里之行, 始于足下 (qian li zhi xing, shi yu zu xia)
رحلة الألف ميل تبدأ بخطوة واحدة (riHlatu l-'alfi miili tabda'u bi-khaTwati waaHidati)

Оффлайн Anatoli

  • Заслуженный
  • *****
  • Сообщений: 1481
  • Карма: 41
  • Пол: Мужской
    • Studying Chinese Language and Chinese Culture
Ksen, а вы добились обратной конверсии, например из латиницы в хангыль, если разделитель символов использовать? Если да то как попробовать. Кстати, ваш JavaScript только в MS Internet Explorer работает, Mozilla Fierfox почему-то его не берет.
rom_syl={};
for(var i=44032; i<=44032+11171; i++) {
var ch=String.fromCharCode(i);
rom_syl[han2rom(ch)]=ch
}

—"перевод" всех символов Хангыль сохраняется в ассоциативном массиве rom_syl, так, что
rom_syl["guk"]=='국'
(или rom_syl_ru["кук"]=='국')

Этот массив и используется для перекодировки.

Спасибо, попробую  :)
千里の道も一歩より始まる (senri-no michi-mo ippo-yori hajimaru)
千里之行, 始于足下 (qian li zhi xing, shi yu zu xia)
رحلة الألف ميل تبدأ بخطوة واحدة (riHlatu l-'alfi miili tabda'u bi-khaTwati waaHidati)

Оффлайн ksen

  • Бывалый
  • ***
  • Сообщений: 221
  • Карма: 6
Да, а в мозилле мой скрипт не работает, потому что он зашифрован для IE:

<SCRIPT LANGUAGE="JScript.Encode">
han_cons=['g','kk','n','d','tt','r','m','b','pp','s','ss','','j','jj','ch','k','t','p','h'];

...

//**Start Encode**#@~^7xIAAA==@#@&0;   mDkW   PkODyNnmv/O.*   @#@&7\mDPm..']Tp@#@&dWGM`-lM~
etc.

Я большой поклонник скриптовых языков типа JavaScript и PHP: будучи в тысячи раз медленнее С(++), они имеют мощный набор откомпилированных подпрограмм для разботы со строками и регулярными выражениями, так что JScript под силу, скажем, загрузить за 5 с. 30Мб словарь, за 30 с. построить к нему индекс, и делать подстрочники _с морфопарсингом_ корейских предложений со скоростью ~300 слов в секунду.

Оффлайн ksen

  • Бывалый
  • ***
  • Сообщений: 221
  • Карма: 6
Вообще, у меня мечта сделать вьюер основных текстовых форматов словарей - Lingvo, Cebit, Shoebox, DML (их., оказывается, несколько). И, все-таки, не на JavaScript.
Но сам освоить чего-то типа С++/Java/С# я, скорее всего, не смогу - слишком крутая там learning curve.
Вот если бы были уже продвинутые кодеры, ответственные за GUI etc., можно было бы заделать какой-нибудь opensource :)
Мои наработки:
--морфологический анализатор корейского
--морфологический анализатор языка лакота
--простой синтаксический парсер
--перекодировщики "на лету" из DSL в HTML

Я делал и "движки" на основе Flash-ActionScript-PHP-MySQL: http://iyapi.net/search/dictionary.html
(логин/пароль там не действует, нажимайте кнопку Let me in)
начните печатать в что-нибудь типа wahachanka (или вахачханка)- флеш-ролик связывается с серверной MySQL через PHP и выдает результат.
Что-то типа новомодного AJAX, но я это сделал еще до появления термина :)

А вот вариант со связкаой HTML-JavaScript-PHP-MySQL (можно проверить на "ma" )
http://lol.iyapi.net/dictionary.html

--А вот пример публикации текста:
http://lol.iyapi.net/bomd.php
Обратите внимание на разнообразие форм презентации текста (Format:), орфографии итп.

Это я все к тому, что подобное можно "забацать" и для CJK...
Константин Виолован
« Последнее редактирование: 03 Мая 2006 18:50:11 от ksen »

Оффлайн Anatoli

  • Заслуженный
  • *****
  • Сообщений: 1481
  • Карма: 41
  • Пол: Мужской
    • Studying Chinese Language and Chinese Culture
Мне иногда JavaScript сложнее мощных языков программирования кажутся. Поэтому ваш код не сильно понимаю. Просто не присле разобраться еще.

Константин, извините не по теме, а почему у вас в профиле женский пол стоит? Еще и аватар женский. Извините, в начале думал, что вы женщина.

Приятно познакомиться. Вы где находитесь-то?
千里の道も一歩より始まる (senri-no michi-mo ippo-yori hajimaru)
千里之行, 始于足下 (qian li zhi xing, shi yu zu xia)
رحلة الألف ميل تبدأ بخطوة واحدة (riHlatu l-'alfi miili tabda'u bi-khaTwati waaHidati)

Оффлайн ksen

  • Бывалый
  • ***
  • Сообщений: 221
  • Карма: 6
Мне иногда JavaScript сложнее мощных языков программирования кажутся. Поэтому ваш код не сильно понимаю. Просто не присле разобраться еще.
--Ну, вообще-то "ядро" JavaScript - упрощенный, нетипизированный C++/Java. Вы, например, чтобы проверить наличие элемента асс. массива "ловите исключение":

try { t = rTails[expression]; }
catch (IndexOutOfRangeException ex) { t = ""; }

на JavaScript это можно записать так:

t = rTails[expression] || ""

--Что сложнее? :)


Константин, извините не по теме, а почему у вас в профиле женский пол стоит? Еще и аватар женский. Извините, в начале думал, что вы женщина.
Приятно познакомиться. Вы где находитесь-то?

--Ну, этот вход - моей жены, вообще-то :) А так, очень удобно оказалось - женщин ведь не бьют на форумах :)
Я нахожусь в Москве и Московской области :)

Оффлайн CTAC

  • Бывалый
  • ***
  • Сообщений: 114
  • Карма: 4
  • Пол: Мужской
    • Китайско-российский центр
  • Skype: tepehtbeb
Re: Простой конвертер для корейского алфавита.
« Ответ #31 : 04 Февраля 2010 08:48:31 »
Всем доброго дня!
Я работаю над китайско-русским словарём, в словарные статьи для иероглифов которого в настоящее время пытаюсь внедрить корейские чтения иероглифов в записи хангылем, латиницей и кириллицей. В деле автоматической конвертации латинских записей в кириллические мне и требуется помощь специалистов. Буду признателен за любое содействие.

Формат таблицы:
Юникод иероглифаИероглифРомадзяHun/EumКириллица для Hun/EumEum (romaja)Eum hangulКириллица для Eum
4E00IL한 일пустоilпусто
И так далее.
Готов отправить файл любому, кто выразит желание помочь.

http://www.chinese-russian.com
ICQ:      339535
QQ: 139339535
Телефон: +7-9629169067

Оффлайн Anatoli

  • Заслуженный
  • *****
  • Сообщений: 1481
  • Карма: 41
  • Пол: Мужской
    • Studying Chinese Language and Chinese Culture
Re: Простой конвертер для корейского алфавита.
« Ответ #32 : 04 Февраля 2010 09:24:04 »
Всем доброго дня!
Я работаю над китайско-русским словарём, в словарные статьи для иероглифов которого в настоящее время пытаюсь внедрить корейские чтения иероглифов в записи хангылем, латиницей и кириллицей. В деле автоматической конвертации латинских записей в кириллические мне и требуется помощь специалистов. Буду признателен за любое содействие.

Формат таблицы:
Юникод иероглифаИероглифРомадзяHun/EumКириллица для Hun/EumEum (romaja)Eum hangulКириллица для Eum
4E00IL한 일пустоilпусто
И так далее.
Готов отправить файл любому, кто выразит желание помочь.
Чтения на корейском можно найти в английском Викисловаре (просто ставьте в поиск, ищите корейский раздел)):
http://en.wiktionary.org/wiki/Wiktionary:Main_Page

В кириллицу:
http://ru.wikipedia.org/wiki/Система_Концевича
千里の道も一歩より始まる (senri-no michi-mo ippo-yori hajimaru)
千里之行, 始于足下 (qian li zhi xing, shi yu zu xia)
رحلة الألف ميل تبدأ بخطوة واحدة (riHlatu l-'alfi miili tabda'u bi-khaTwati waaHidati)

Оффлайн CTAC

  • Бывалый
  • ***
  • Сообщений: 114
  • Карма: 4
  • Пол: Мужской
    • Китайско-российский центр
  • Skype: tepehtbeb
Всем спасибо, справился любительским способом, но при этом более-менее автоматическим, чем горжусь ужасно. Скоро выложу.
http://www.chinese-russian.com
ICQ:      339535
QQ: 139339535
Телефон: +7-9629169067

Оффлайн Mad-Rogue

  • Новичок
  • *
  • Сообщений: 32
  • Карма: 1
  • Пол: Мужской
    • Rogue-Laboratory
  • Skype: Managedark
Re: Простой конвертер для корейского алфавита.
« Ответ #34 : 20 Сентября 2011 03:42:21 »
Сегодня написал романизатор. Hangul в Русский.

http://mad-rogue.com/htor/

Транскрипция по Системе Концевича.
Пример:
가난한 나무꾼이 나무룰 하러 갔다가 신선을 만났습니다. 신선은 나무꾼의 가난한 모습에 측은한 마음이 들어 선물을 주겠다고 했습니다.
'кананхан намуккуни намуруль харо каттага синсоныль маннассымнида. синсонын намуккуный кананхан мосыбе чхыгынхан маыми тыро сонмурыль чугеттаго хэссымнида.'

Пишите свои отзывы :)

Оффлайн Mad-Rogue

  • Новичок
  • *
  • Сообщений: 32
  • Карма: 1
  • Пол: Мужской
    • Rogue-Laboratory
  • Skype: Managedark
Re: Простой конвертер для корейского алфавита.
« Ответ #35 : 22 Сентября 2011 01:20:00 »
видать никому не нужно... а жаль =(

Оффлайн e-Nicko

  • Зарегистрированный
  • *
  • Сообщений: 13
  • Карма: 1
    • Hangul.ru
Конвертер 38 языков на корейский: http://www.hangulize.org

Оффлайн Mad-Rogue

  • Новичок
  • *
  • Сообщений: 32
  • Карма: 1
  • Пол: Мужской
    • Rogue-Laboratory
  • Skype: Managedark
Re: Простой конвертер для корейского алфавита.
« Ответ #37 : 13 Декабря 2013 16:41:16 »
Исходники скрипта-конвертера Hangul to Russian
https://github.com/Mad-Rogue/HangulToRussian
Малоли кто-нибудь захочет что-нибудь улучшить и дописать :)