Codes et corpus pour papier "Solution neuronale efficace pour la segmentation des mots multi-critères" (acceptée et à paraître à SCI-2018).
Exécutez la commande suivante pour préparer les corpus, divisez-les en ensembles de train / dev / test, etc.:
python3 convert_corpus.py Convertissez ensuite un $dataset en fichier de cornichon:
./script/make.sh $dataset$dataset peut être l'un des corpus suivants: pku , msr , as , cityu , sxu , ctb , zx , cnc , udc et wtb .$dataset peut également être un corpus conjoint comme joint-sighan2005 ou joint-10in1 .joint-sighan2008 comme $dataset .Enfin, une commande effectue à la fois une formation et un test à la volée:
./script/train.sh $dataset Étant donné que les ensembles de données Sighan Bakeoff 2008 sont propriétaires et difficiles à obtenir, nous décidons de mener des expériences supplémentaires sur des ensembles de données plus disponibles, pour que le public teste et vérifie l'efficacité de notre méthode. Nous avons appliqué notre solution sur 6 ensembles de données supplémentaires disponibles avec les 4 ensembles de données SIGHAN2005.
Dans cette section, nous présenterons brièvement les corpus utilisés dans cet article.
Ces 10 corpus proviennent soit du site officiel de SIGHAN2005, soit collectés auprès du projet open-source, soit de la page d'accueil des chercheurs. Les licences sont répertoriées dans le tableau suivant.
Comme les corpus SIGHAN2008 sont propriétaires, nous ne pouvons pas les distribuer. Si vous en avez une copie légale, vous pouvez reproduire nos scores après ces instructions.
Tout d'abord, liez le SIGHAN2008 au dossier de données de ce projet.
ln -s /path/to/your/sighan2008/data data/sighan2008
Ensuite, utilisez HANLP pour la conversion chinoise traditionnelle pour simplifier la conversion chinoise, comme indiqué dans les extraits de code Java suivants:
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 (); Vous devez répéter cela pour les 4 fichiers suivants:
Ensuite, les codes suivants de l'intervalle dans 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' )Enfin, vous êtes prêt à partir:
python3 convert_corpus.py
./script/make.sh joint-sighan2008
./script/train.sh joint-sighan2008