Коды и корпуса для бумаги «Эффективное нейронное решение для многокритериальной сегментации слов» (принято и выступление на SCI-2018).
Запустите следующую команду, чтобы подготовить корпорации, разделите их на наборы поезда/разработки/тестирования и т. Д.:
python3 convert_corpus.py Затем преобразуйте $dataset в файл Pickle:
./script/make.sh $dataset$dataset может быть одним из следующих корпусов: pku , msr , as , cityu , sxu , ctb , zx , cnc , udc и wtb .$dataset также может быть совместным корпусом, таким как joint-sighan2005 или joint-10in1 .joint-sighan2008 в качестве $dataset .Наконец, одна команда выполняет обучение и тест на лету:
./script/train.sh $dataset Поскольку наборы данных Sighan Bakeoff 2008 являются собственными и трудно получить, мы решаем провести дополнительные эксперименты по более свободно доступным наборам данных, чтобы общественность проверила и проверила эффективность нашего метода. Мы применили наше решение на 6 дополнительных свободных наборах данных вместе с 4 наборами данных Sighan2005.
В этом разделе мы кратко представим те корпусы, используемые в этой статье.
Эти 10 корпораций либо с официального веб-сайта Sighan2005, либо собраны из проекта с открытым исходным кодом, либо из домашней страницы исследователей. Лицензии перечислены в следующей таблице.
Поскольку корпуса Sighan2008 являются собственными, мы не можем их распределить. Если у вас есть юридическая копия, вы можете воспроизвести наши результаты по этим инструкциям.
Во -первых, свяжите Sighan2008 с папкой данных в этом проекте.
ln -s /path/to/your/sighan2008/data data/sighan2008
Затем используйте HANLP для традиционного китайского, чтобы упростить китайское преобразование, как показано в следующих фрагментах кода Java:
BufferedReader br = new BufferedReader ( new InputStreamReader ( new FileInputStream (
"data/sighan2008/ckip_seg_truth&resource/ckip_truth_utf16.seg"
), "UTF-16" ));
String line ;
BufferedWriter bw = IOUtil . newBufferedWriter (
"data/sighan2008/ckip_seg_truth&resource/ckip_truth_utf8.seg" );
while (( line = br . readLine ()) != null )
{
for ( String word : line . split ( " \ s" ))
{
if ( word . length () == 0 ) continue ;
bw . write ( HanLP . convertToSimplifiedChinese ( word ));
bw . write ( " " );
}
bw . newLine ();
}
br . close ();
bw . close (); Вам нужно повторить это для следующих 4 файлов:
Затем, не позаботитесь о следующих кодах в convert_corpus.py :
# For researchers who have access to sighan2008 corpus, use official corpora please.
print ( 'Converting sighan2008 Simplified Chinese corpus' )
datasets = 'ctb' , 'ckip' , 'cityu' , 'ncc' , 'sxu'
convert_all_sighan2008 ( datasets )
print ( 'Combining those 8 sighan corpora to one joint corpus' )
datasets = 'pku' , 'msr' , 'as' , 'ctb' , 'ckip' , 'cityu' , 'ncc' , 'sxu'
make_joint_corpus ( datasets , 'joint-sighan2008' )
make_bmes ( 'joint-sighan2008' )Наконец, вы готовы к работе:
python3 convert_corpus.py
./script/make.sh joint-sighan2008
./script/train.sh joint-sighan2008