基于NGramJ的N-Gram语言猜测
正在运行
$ 猫>a.txt 这是一个测试。 $ java-jar cngram.jar-lang2 a.txt 速度:en:0.667 ru:0.000 pt:0.000。。 de:0.000|0.0E0|0.0E0 dt=2812 $ 猫>b.txt 维基百科作者ein Projekt zum Aufbau einer Enzyklopädie aus freien Inhalten in allen Sprachen der Welt。 $ java-jar cngram.jar-lang2 b.txt 速度:de:0.857 ru:0.000 pt:0.000。。 英语:0.000|0.0E0|0.0E0 dt=2077
使用
导入de.spieleck.app.cngram。 NGram配置文件; 受保护的NGramProfiles配置文件=新的NGramProfiles(); public String getLanguage(字符串文本){ NGramProfiles。 Ranker-Ranker=档案.getRanker(); ranker.account(文本); NGramProfiles。 排名结果结果=ranker.getRankResult(); return result.getName(0); }
添加新语言
$ java-jar cngram.jar-创建id_big id_corpus.txt 创建了新的配置文件“idbig.ngp”。
%克=ohash(); setMissPolicy(%grams,{return@();}); $句柄=openf(@ARGV[0]); $banner=readln($handle); readln($handle);# 使用ngramcount值 而$text(readln($handle)){ ($gram,$count)=拆分('',$text); if(strlen($gram)<=2|$count>20000){ 推送(%grams[strlen($gram)],@($grams,$count)); } } 关闭($handle); 子排序元组{ 返回$2[1]<=>$1[1]; } println($banner); printAll(map({return join(“”,$1);},sort(&sortTuple,%grams[1])); printAll(map({return join(“”,$1);},sort(&sortTuple,%grams[2])); printAll(map({return join(“”,$1);},sort(&sortTuple,%grams[3])); printAll(map({return join(“”,$1);},sort(&sortTuple,%grams[4]));
$ java-jar lib/sleep.jar排序.sl id_big.ngp>id.ngp
$ 猫>c.txt Selamat datang di Wikipedia bahasa Indonesia,ensiklopedia bebas berbahasa印尼 $ java-jar cngram.jar-lang2 c.txt 速度:id:0.857 ru:0.000 pt:0.000。。 de:0.000|0.0E0|0.0E0 dt=1872
从维基百科生成纯文本语料库
在我到领取社会保险金的年龄之前完成 容忍错误并在没有我干预的情况下完成
步骤1:下载维基百科提取器工具包
wget公司 http://www.polishmywriting.com/download/wikipedia2text_rsm_mods.tgz tar zxvf维基百科2text_rsm_mods.tgz cd维基百科文本
步骤2:下载并提取维基百科数据转储
wget公司 http://download.wikimedia.org/frwiki/20091129/frwiki-20091129-pages-articles.xml.bz2 bunzip2 frwiki-20091129-pages-articles.xml.bz2
步骤3:从维基百科数据中提取文章数据
mkdir输出 ./xmldump2files.py frwiki-20091129-pages-articles.xml输出
步骤4:将文章Wiki标记解析为XML
查找-键入f|grep'\.txt$'>fr.files
java-jar sleep.jar到8.sl fr.files
猫>洗衣 ./files0.sh文件& ./文件1.sh& ./files2.sh文件& ... ./files15.sh文件& ^天
./启动.sh
java-jar sleep.jar watchthem.sl
步骤5:从文章中提取纯文本
./wikiextract.py out法语_plaintext.txt
第6步(可选):将纯文本拆分为多个文件以便于处理
mkdir语料库 java-jar sleep.jar makecorpus.sl法语plaintext.txt语料库
多语言前沿研究进展
文本分割跟进
$句柄=openf(@ARGV[1]); $text=联接(“,readAll($handle)”); 关闭($handle); 导入java.text.*; $locale=[new locale:@ARGV[0]]; $bi=[BreakIterator getSentenceInstance:$locale]; 断言$bi! 为$null:"; 语言失败:$locale";; [$bi setText:$text]; $索引=0; while([$bi next]!=[BreakIterator完成]) { $sentence=子项($text,$index,[$bi-current]); println($句子); #打印出单个单词。 $wi=[BreakIterator getWordInstance:$locale]; [$wi-setText:$sentence]; $ind=0; while([$wi next]!=[BreakIterator完成]) { println(";\t;.substr($sentence,$ind,[$wi-current]); $ind=[当前$wi]; } $指数=[$bi current]; }
Java句子分割研究
有一个标准叫做SRX,用于细分规则交换。 SRX文件是XML,有一个开源的Segment Java库,可以使用这些规则文件分割句子。 还有一个名为Ratel的编辑器,可以让人们编辑这些SRX文件。 语言工具 支持SRX文件。 另一个选项是使用 OpenNLP(开放NLP) 项目的工具。 他们有一个SentenceDetectorME类,可以实现这个功能。 问题是模型仅适用于英语、德语、西班牙语和泰语。 我还了解到Java1.6在Java.text.*包中有用于句子分割的内置工具。 这些是IBM捐赠的。下面是此软件包支持的地区的快速转储: java-jar sleep.jar-e'打印ln(join(“,”,[java.text.BreakIterator getAvailableLocales]);' ja_JP、es_PE、en、ja_JP_JP,es_PA、sr_BA、mk、es_GT、ar_AE、no_no、sq_AL、bg、ar_IQ、ar_YE、hu、pt_pt、el_CY、ar_QA、mk_mk、sv、de_CH、en_US、fi_fi、is、cs、en_MT、sl_SI、sk_sk、it、tr_tr、zh、th、ar_SA、no、en_GB、sr_cs、lt、ro、en_NZ、no_no_NY、lt_lt、es _NI、nl、ga_IE、fr_BE、es_es、ar_LB、ko、fr_CA、et_EE、ar_KW、sr_RS、es_US、es_MX、ar_SD、, in_ID,ru,lv,es_UY,lv_lv,iw,pt_BR,ar_SY,hr,et,es_DO,fr_CH,hi_in,es_VE,ar_BH,en_PH,ar_TN,fi,de_AT,es,nl_nl,es_EC,zh_TW,ar_JO,be,is_is,es_CO,es_CR,es_CL,ar_EG,en_ZA,th_th,el_GR,it_it,ca,hu_hu,fr,en_IE,uk_UA,pl_pl,fr_LU,nl_be、en_in、ca_es、ar_MA、es_BO、en_AU、sr、zh_SG、pt、uk、es_SV、ru_ru、ko_KR、vi、ar_DZ、, vi_VN、sr_ME、sq、ar_LY、ar、zh_CN、be_BY、zh_HK、ja、iw_IL、bg_bg、in、mt_mt、es_PY、sl、fr_fr、cs_CZ、it_CH、ro_ro、es_PR、en_CA、de_de、ga、de_LU、de、es_ar、sk、ms_MY、hr_hr、en_SG、da、mt、pl、ar_OM、tr、th_th_th、el、ms、sv_SE、da_DK、es_HN