Автор Тема: WenLin – китайский за неделю :)  (Прочитано 84294 раз)

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

Оффлайн qleap

  • Заслуженный
  • *****
  • Сообщений: 724
  • Карма: 39
Re: WenLin – китайский за неделю :)
« Ответ #125 : 23 Марта 2006 02:28:37 »
См. двумя постами выше.

Оффлайн MASTERBOY

  • Профессионал
  • ****
  • Сообщений: 274
  • Карма: -2
  • Пол: Мужской
Re: WenLin – китайский за неделю :)
« Ответ #126 : 23 Марта 2006 14:41:36 »
Я имею в виду ваш патч.
Или мне обязательно заново качать весь Венлин?!
I hear babies cry, I watch them grow
They'll know much more than I'll ever know

Оффлайн qleap

  • Заслуженный
  • *****
  • Сообщений: 724
  • Карма: 39
Re: WenLin – китайский за неделю :)
« Ответ #127 : 23 Марта 2006 16:44:43 »
Я имею в виду ваш патч.
Или мне обязательно заново качать весь Венлин?!

Прощу прощения, ваш первый вопрос меня сбил с толку. Я не понял, что за ссылку вы имеете в виду.
Я перезалил файл для импорта маленькой части БКРС в ВеньЛинь.

Сюда http://www.megaupload.com/?d=WBKIZ313

Оффлайн MASTERBOY

  • Профессионал
  • ****
  • Сообщений: 274
  • Карма: -2
  • Пол: Мужской
Re: WenLin – китайский за неделю :)
« Ответ #128 : 24 Марта 2006 00:27:08 »
謝謝
I hear babies cry, I watch them grow
They'll know much more than I'll ever know

Оффлайн MASTERBOY

  • Профессионал
  • ****
  • Сообщений: 274
  • Карма: -2
  • Пол: Мужской
Re: WenLin – китайский за неделю :)
« Ответ #129 : 31 Марта 2006 01:53:57 »
что-то никак не скачаю (=
постоянно какой-то лимит русских на мегааплоде в количестве пятиста человек


хух пришлось Hide IP юзать
ппц мегааплоэд недоступным стал
« Последнее редактирование: 31 Марта 2006 11:39:15 от MASTERBOY »
I hear babies cry, I watch them grow
They'll know much more than I'll ever know

Оффлайн qleap

  • Заслуженный
  • *****
  • Сообщений: 724
  • Карма: 39
Re: WenLin – китайский за неделю :)
« Ответ #130 : 12 Мая 2006 21:25:02 »
Я опять поднимаю старую тему конвертации БКРС под WenLin. К своему стыду я не продвинулся ни на миллиметр. И пока что нет намерения. По этой причине я выкладываю прямо в сообщение код скрипта, с помощью которого производится преобразование файла в формате DSL в формат WenLin. Может чуть позже я добавлю комментарии к этому ужасу. Сейчас нет времени.
До сих пор программа не умеет ставить слогораздел в пиньине в словах типа 一二. К тому же WenLin плохо понимает разночтения в упрощенных/полных формах, поэтому некоторые карточки бракуются.
Я попытался пройтись скриптом по последней версии БКРС от 8 мая 2006 года. Из 150 тыс. сгенерированных статей забракованы были около 16 тыс., что не так уж и плохо.

Очень важное замечание!!!!
Так как скрипт написан на Perl5, то нормально он умеет работать только с кодировкой текста UTF8. Следовательно для правильной работы программы НЕОБХОДИМО преобразовать файл.DSL из кодировки UTF-16 в UTF-8. Затем полученный файл нужно скормить в качестве параметра скрипту. Программа выдает результаты работы на экран, поэтому их нужно перенаправить в какой-нибудь файл. Этот файл нужно ТОЖЕ преобразовать, но уже из UTF-8 в UTF-16. А затем скормить описанным на 4-ой странице способом WenLinю.

Под Linux все делается так:
[user@host:~]$ iconv -f UTF-16 -t UTF-8 <BKRS.dsl >BKRS-utf8.dsl
[user@host:~]$ ./transform.pl BKRS-utf8.dsl >wenlin-utf8.dat
[user@host:~]$ iconv -f UTF-8 -t UTF-16 <wenlin-utf8.dat >wenlin-import.dat
где transform.pl - имя нижеприведенного скрипта, а wenlin-import.dat - желаемый результат.
Под Windows честно говоря не знаю, разве что у вас есть Cygwin, где все делается аналогично.

#!/usr/bin/perl -w
use utf8;
#sub InChina {
#  return  <<END;
#2E00\t9FFF
#END
#}
sub partOfSpeech {
  my $engname = "b.f.";
 SWITCH: {
    if (/сущ./)  { $engname = "n.";last SWITCH;}
    if (/гл./) { $engname = "v.";last SWITCH;}
    if (/прил./) {$engname = "a.";last SWITCH}
  }
  return $engname;
}
sub makeSimple {
  my($simp,$ful) = @_;
  return 0 if length($simp) != length($ful);
  my(@reta)=();
  my @si = unpack("U*",$simp);
  my @fu = unpack("U*",$ful);
  for(my $i=0;$i<length($simp);$i++){
    if($si[$i] == $fu[$i]) {
      push @reta, ord("-");
    } else {
      push @reta, $fu[$i];
    }
  }
  return pack("U*",@reta);
}
sub makeSerial {
  my @nums = unpack("U*",$_);
  my $ret = 0;
  for(my $i=0;$i<@nums;$i++){

    $ret += $nums[$i]<<(8*(@nums - $i-1));
  }
  return sprintf("BKRS%X",$ret&0xfffff);
}
open FILE, "<:utf8","$ARGV[0]" or die "cantopenfile";

binmode STDOUT,":utf8";
binmode STDERR,":utf8";
$lin = 0;
$newline = "\r\n";
print "cidian.db",$newline;
print $newline;
print $newline;
while(<FILE>) {
  next if /^#/;
  $lin++;
#Start of the ideographics entry
#  while(!(/^\[/) && (/^\p{Ideographic}+/) && $_) {

  my @cards = ();
  while(!(/\[/) && $_) {
#    print "Card = ",$_;
    chomp;s/\r//;

    push @cards,$_ if !/\{\{/;
    $_ = <FILE>;
  }
  if(scalar(@cards)>0) {

    # Read in radical numbering
    if(s/\[m1\]\[b\]([0-9 ]+\\\[[0-9, ]+\\\])\[\/b.*/$1/) {
      #      print "RADICALS ",$_;
      $_ = <FILE>;
    }
    # Skip "instead of..."
    if (/\[m1\]\[b\]\\\[\[\/b\]/) {
#      print "skipping instead of....";
      $_ = <FILE>;
    }

    my $pinyin = "";
    # Let's read out pinyin
    if(s/\[m1\]\[b\](\p{Latin}+)([,;] \p{Latin}+)?\[\/b.*/$1/) {
      chomp;
      $pinyin = $_;

    }
    next if $pinyin eq "";
    print $newline,"*** $lin ***",$newline;
    print "pinyin           ",$pinyin,"$newline";
    print   "characters       ",$cards[0];
    if(scalar(@cards) > 1) {
      #    print "len = ",length($cards[0]);
      my $ms = makeSimple(@cards);
#      $ms = makeSimple(@cards[1]) if !$ms;
      print "[",$ms,"]" if $ms;
    }
    print $newline;
    print "serial-number       ",makeSerial($cards[0]),
      int($lin%100000),$newline;
    my $curpos = 0;

    $pofspe = 0;
    $curpos = tell FILE;
    $_ = <FILE>;
  POFSPE:
    if(/\[m1\]\[b\][IVX]+.*/) {
      # Different parts of speech
      $pofspe++;
      if (/\[c\] *\[i\](.+)\[\/i\] *\[\/c\]\[\/m\]/) {
print $pofspe,"part-of-speech      ",partOfSpeech($1),$newline;
      }
      $curpos = tell FILE;
      $_ = <FILE>;
#      print $pofspe,"part-of-speech      b.f.$newline";
    }
    if (/\[m2\]\[c\] *\[i\](.+)\[\/i\] *\[\/c\]\[\/m\]/) {
      print "part-of-speech      ",partOfSpeech($1),$newline;
      $curpos = tell FILE;
      $_ = <FILE>;
    } else {
      print "part-of-speech      b.f.$newline" if ($pofspe == 0);
    }
    if(!/\[m2\]/) {
      print "definition         simplified",$newline
    } else {
      while (/\[m2\]/) {

my $defnum = 0;
$defnum = $1 if(s/\[m2\]([0-9]+)(\)|\.)//);
my $def = "";
my $flag;

s/\[[icm0-9\/]+\]//g;
s/\\//g;
chomp;
s/\r//;

if ($pofspe == 0) {
  print "definition      " if $defnum == 0;
} else {
  print $pofspe,"definition      " if $defnum == 0;
}
print $defnum+$pofspe*10,"definition       " if $defnum>0;
print $_,$newline;

$curpos = tell(FILE);
$_ = <FILE>;
my (@exms,@trans)=((),());
while (/\[m4\]/) {
  my $example;
  my $transl;
  /\p{Ideographic}+(\P{Ideographic}+)\[\/ex\]/;
  $transl = $1;
  # print "LINE: $_" if(not defined $transl);
  $transl =~  s/\[[icm0-9\/]+\]//g if defined $transl;
  /\[ex\]((\p{Ideographic}|\\| |\pP|\p{Latin})+)/;
  $example = $1;
  $example =~  s/\[[icm0-9\/]+\]//g if defined $example;
  if (defined($example) && defined ($transl)) {
    push @exms,$example;
    push @trans,$transl;
  }

  $curpos = tell FILE;
  $_ = <FILE>;
}
my $globnum = $pofspe;

$globnum = $defnum+$globnum*10 if $defnum>0;
$globnum = $globnum*10+1 if @exms>1;

for (my $i=0;$i<@exms;$i++) {
  print $globnum+$i if $globnum >0;
  print "example               ",$exms[$i],$newline;
  print $globnum+$i if $globnum >0;
  print "translation           ",$trans[$i],$newline;

}

      }
    }
    goto POFSPE if(/\[m1\]\[b\][IVX]+/);
    seek(FILE,$curpos,0) if($curpos != 0);

  } else {
#    print "Error!!!! $_ \r\n";
  }
#  last if $lin>90840;
#  last if $lin>90050;

}

Оффлайн LiBeiFeng

  • Заслуженный
  • *****
  • Сообщений: 773
  • Карма: 15
  • Пол: Мужской
Re: WenLin – китайский за неделю :)
« Ответ #131 : 12 Мая 2006 21:34:39 »
Забавно, спасибо!  :)
А Perl как запустить под виндой?
Также интересно как вы решили проблемы с сокращенными и полными формами и "неправильным" пиньинем,
Вэньлинь ведь к этому весьма строг?
Не всё стриги, что растет... (Козьма Прутков)

Оффлайн qleap

  • Заслуженный
  • *****
  • Сообщений: 724
  • Карма: 39
Re: WenLin – китайский за неделю :)
« Ответ #132 : 12 Мая 2006 23:01:30 »
..........
А Perl как запустить под виндой?
Не знаю, честное слово. Наверное нужно для начала его как-то установить...
Цитировать
Также интересно как вы решили проблемы с сокращенными и полными формами и "неправильным" пиньинем,
Вэньлинь ведь к этому весьма строг?
Эх.. в том то и дело, что пока никак. Пока что все это только в отдаленных планах.

Оффлайн qleap

  • Заслуженный
  • *****
  • Сообщений: 724
  • Карма: 39
Re: WenLin – китайский за неделю :)
« Ответ #133 : 16 Мая 2006 19:17:21 »
Прошу прощения за уход от темы, но раз уж вопрос поступил..

А Perl как запустить под виндой?
Я тут посмотрел в интернете, поэкспериментировал. Вроде бы делается это довольно просто.
Для работы программы нужна версия Perl не ниже 5.6. Поэтому минимальный набор под Win32 я нашел http://www.cpan.org/authors/id/G/GR/GRAHAMC/SiePerl-5.8.0-bin-1.0-Win32.INSTALL.exe здесь. Всего 18 мегабайт. Многовато конечно, но меньше только версия 5.0. Есть и другие, более удобные инсталляторы. Но они побольше размером вот здесь http://www.cpan.org/ports/#win32.

По-умолчанию этот самораспаковывающийся архив устанавливается в корень диска С:\perl. Поэтому для работы в командной строке желательно в переменную PATH добавить  значение "C:\perl\5.8.0\bin\MSWin32-x86-perlio". (Например так: через правую кнопку Мой компьютер(My computer) - Свойства (Properties) - вкладка Дополнительно (Advanced) - (снизу) Переменные среды (Environment variables) - Изменить (Edit). Через точку с запятой список путей.)

Затем можно запускать скрипты из командной строки оболочки cmd.exe (или command.com в старых виндоус) таким образом:

C:\Documents and Settings\User\Мои документы> perl MyScript.pl  arguments
Поэтому запустить вышеприведенный скрипт можно таким образом:

perl transform.pl BKRS-utf8.dsl >wenlin-utf8.datВАЖНО: в приведенной выше версии скрипта для конвертации под Виндоус нужно исправить значение переменной $newline c "\r\n" на "\n" в фрагменте
$lin = 0;
$newline = "\r\n";
print "cidian.db",$newline;
К сожалению я уже не могу исправить свой пост.

Для преобразования кодировок существует не только MS Word, которым кстати преобразовывать эти файлы будет проблематично (не забываем, что Виндоус у нас работает с UTF-16, а Perl лучше всего c UTF-8), но и замечательный инструмент под названием iconv, который изначально присутствует в GNU LibC. Под Win32 он тоже есть тут http://gnuwin32.sourceforge.net/downlinks/libiconv.php (~ 1 Mb). После установки добавляем описанным выше способом "C:\Program Files\GnuWin32\bin" в переменную PATH, и тогда для преобразования файлов можно делать так:

C:\Documents and Settings\User\Мои документы>iconv -f UTF-16 -t UTF-8 < BKRS.dsl >BKRS-utf8.dsl
что преобразует нам файл BKRS.dsl в BKRS-utf8.dsl. Ключ -f from, -t to. iconv умеет множество кодировок. Точнее практически все известные, для списка есть ключ -l (т.е. list).

Преобразование полученного wenlin-utf8.dat следует проводить в кодировку UTF-16, то есть

C:\Documents and Settings\User\Мои документы>iconv -f UTF-8 -t UTF-16 <wenlin-utf8.dat >wenlin.dat
Вот такие вот длинные инструкции.
Впрочем я думаю, что мало кому захочется повторять весь этот путь. И оставляю здесь всё это в надежде на то, что кому-нибудь эти записи могут быть полезны.
« Последнее редактирование: 16 Мая 2006 20:24:17 от qleap »

Оффлайн LiBeiFeng

  • Заслуженный
  • *****
  • Сообщений: 773
  • Карма: 15
  • Пол: Мужской
Re: WenLin – китайский за неделю :)
« Ответ #134 : 19 Мая 2006 17:53:02 »
Спасибо за столь подробный ответ  :)! Будет время - попробую!
Не всё стриги, что растет... (Козьма Прутков)

Оффлайн qleap

  • Заслуженный
  • *****
  • Сообщений: 724
  • Карма: 39
Re: WenLin – китайский за неделю :)
« Ответ #135 : 19 Мая 2006 18:07:01 »
Только сейчас заметил: оказывается в географических названиях был добавлен лишний пробел в пиньине, поэтому они не попадали в список. Необходимо поменять строчку:

    # Let's read out pinyin
    if(s/\[m1\]\[b\](\p{Latin}+)([,;] \p{Latin}+)?\[\/b.*/$1/) {

на
    # Let's read out pinyin
    if(s/\[m1\]\s*\[b\](\p{Latin}+)([,;] \p{Latin}+)?\[\/b.*/$1/) {
где добавлен дополнительный факультативный пробел \s* после [m1].
« Последнее редактирование: 19 Мая 2006 18:09:22 от qleap »

Оффлайн s85

  • Пионер
  • **
  • Сообщений: 88
  • Карма: 0
Re: WenLin – китайский за неделю :)
« Ответ #136 : 26 Мая 2006 13:13:19 »
Всем привет!!!
Понимаю, что не у всех есть возможность скачать полную версию - поэтому могу предложить диск, версия - 3.3.6. ;D
Я нахожусь в Москве.
Для связи - akosarev(sobaka)yandex.ru

Оффлайн Чендлер

  • Бывалый
  • ***
  • Сообщений: 182
  • Карма: 2
  • Пол: Мужской
Re: WenLin – китайский за неделю :)
« Ответ #137 : 29 Августа 2006 20:26:05 »
если у кого есть возможность выложите пожалуйста где нибудь Wenlin, в этом топике и форуме я ничего не нашел, точнее все ссылки не работают, а с emule очереди заоблачные

Оффлайн ChaserXP

  • Зарегистрированный
  • *
  • Сообщений: 2
  • Карма: 0
Re: WenLin – китайский за неделю :)
« Ответ #138 : 17 Сентября 2006 15:24:16 »
Замучавшись искать WenLin по доступным ссылкам (они все битые), скачал программку с torrent-а и выложил на рапидшару для всех: _http://rapidshare.de/files/33249762/Wenlin_Software_for_Learning_Chinese.zip
 В архиве сама программа (тяжеленькая, кстати, 204 метра) и ее обновление до версии 3.3.6. Скачивайте, пока есть возможность. При невостребованности файлов, рапида их удаляет.

Оффлайн ChaserXP

  • Зарегистрированный
  • *
  • Сообщений: 2
  • Карма: 0
Re: WenLin – китайский за неделю :)
« Ответ #139 : 19 Сентября 2006 00:50:10 »
Wenlin на OxyShare.com
Для тех кто не любит Рапидшару, а Wenlin заполучить хочется. То же самое, что и в предыдущем посте, теперь на OxyShare:
http://www.oxyshare.com/get/1661616329450ebf575fc970.93305013/Wenlin
Зайдя по ссылке, внизу страницы нажмите на кнопочку "Fast and Extreme" и дождитесь появления ссылки на скачивание.

Оффлайн Чендлер

  • Бывалый
  • ***
  • Сообщений: 182
  • Карма: 2
  • Пол: Мужской
Re: WenLin – китайский за неделю :)
« Ответ #140 : 20 Сентября 2006 15:48:21 »
присоединяюсь к последнему оратору, так как заколебался искать китайческие софтины и не хочу чтобы кто-то также искал, тратя свое драгоценное время и нервы :) . На сегодняшний день на харде живет Wenlin, NJ Star pro, Lingvo11 мультиязычный и к нему словарь Ошанина, оцифрованный этим летом. Все последних версий, лекарства имеются. Желающим - писать в личку.

Оффлайн 1806

  • Пионер
  • **
  • Сообщений: 58
  • Карма: 0
  • Пол: Мужской
Re: WenLin – китайский за неделю :)
« Ответ #141 : 14 Декабря 2006 16:01:28 »
выложите плиз полный Wenlin 3.3.6
на рапидшаре удален с оксишары не качается...

Оффлайн Чендлер

  • Бывалый
  • ***
  • Сообщений: 182
  • Карма: 2
  • Пол: Мужской
Re: WenLin – китайский за неделю :)
« Ответ #142 : 16 Декабря 2006 22:22:04 »
на torrents.ru есть, я туда постил. Также такое добро валяется в emule.

Оффлайн DeeKey

  • Новичок
  • *
  • Сообщений: 36
  • Карма: 0
  • Пол: Мужской
Re: WenLin – китайский за неделю :)
« Ответ #143 : 08 Января 2007 10:15:42 »
Здравствуйте, господа.

Такой вопрос к знатокам: насколько сложно сделать версию WenLin'я для КПК? (в частности, под WM5)
На офсайте вроде как висело объявление, что готовится такая версия. Но, по-моему, заглохло там у них все.

Поэтому предложение: (если это, конечно, реально)

попытаться сделать (вариант - помочь разработчикам сделать) версию веньлиня для КПК.

Прошу собравшихся высказаться по поводу этой идеи.
Когда един, когда ты единочество стреляющих...

Оффлайн andelieXXl

  • Зарегистрированный
  • *
  • Сообщений: 8
  • Карма: 0
  • Пол: Мужской
Re: WenLin – китайский за неделю :)
« Ответ #144 : 09 Января 2007 18:50:26 »
пожалуйста перезалейте wenlin. Вот файлообменник без лимитов http://files.primorye.ru/

Оффлайн qleap

  • Заслуженный
  • *****
  • Сообщений: 724
  • Карма: 39
Re: WenLin – китайский за неделю :)
« Ответ #145 : 09 Января 2007 19:11:33 »
пожалуйста перезалейте wenlin. Вот файлообменник без лимитов http://files.primorye.ru/
Хм.. Без лимитов?
Цитировать
Файлообменник
    
    
 

 

Доступ к данному сервису доступен только абонентам ОАО «Дальсвязь».

— Подключиться прямо сейчас

Оффлайн DeeKey

  • Новичок
  • *
  • Сообщений: 36
  • Карма: 0
  • Пол: Мужской
Re: WenLin – китайский за неделю :)
« Ответ #146 : 10 Января 2007 10:11:13 »
andelieXXL, это ж файлообменник только для своих, для приморских :)

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

Оффлайн Чендлер

  • Бывалый
  • ***
  • Сообщений: 182
  • Карма: 2
  • Пол: Мужской
Re: WenLin – китайский за неделю :)
« Ответ #147 : 31 Января 2007 17:24:50 »
дикей, я писал в венлин по поводу версии для кпк, мне ответили мол, юзай pleco. А он денег стоит, и кряк не активирует словари.

Оффлайн p2ki

  • Профессионал
  • ****
  • Сообщений: 399
  • Карма: 4
  • Пол: Мужской
    • www.zhanim.kz
Re: WenLin – китайский за неделю :)
« Ответ #148 : 29 Мая 2007 19:16:32 »
Cкачал с torrents.ru все работает пасибо.

кому нужно в Гуанчжоу пишите в Личку.
Get Rich or Die Trying

Оффлайн MaximG

  • Зарегистрированный
  • *
  • Сообщений: 24
  • Карма: 0
Re: WenLin – китайский за неделю :)
« Ответ #149 : 03 Января 2008 16:37:42 »
Перезалейте пожалуйста файл для импорта маленькой части БКРС в ВеньЛинь.