mosesdecoder&BPE数据预处理

  • moses数据预处理
  • BPE分词
  • moses用法总结

moses数据预处理

源码链接:

https://github.com/moses-smt/mosesdecoder

做机器翻译的小伙伴应该会moses很熟悉,这是一个很强大的数据预处理工具,虽然已经用了很多年了,但现在依然非常流行。

很多人做数据预处理都会用到BPE算法,bpe算法太强大,30000个子词几乎可以表示词典中所有的单词。但是如果我们要用词级别的翻译,那词典太大了,在机器翻译中词典受限的情况下,很多词就会变为未登录词。为了让词典尽可能的能囊括更多的单词,必须对双语语料进行预处理操作。

中文的预处理好做很多,除了分词,可做的就不多了,相比之下,英文的预处理就变得繁琐了很多,比如在bpe的子词词典中,我们可以看到American’s 和american’s同时存在于词典,并且英文的标点符号和单词之间是没空格分隔的,所以如果直接对英文按照空格进行分词,cat和cat.就可能占据词典中两个词的位置,这些都是不合理的,会浪费词典的位置。所以对英文的处理是及其有必要的。

mosesdecoder作为统计机器翻译工具,常用的预处理方法如下:

normalize:对标点符号进行规范化。

perl dir_name/mosesdecoder/scripts/tokenizer/normalize-punctuation.perl -l en < data/train.en > data/train.norm.en

其中-l en是选择语言,de类似

tokenisation:分词

perl dir_name/mosesdecoder/scripts/tokenizer/tokenizer.perl -a -l en < data/train.norm.en > data/train.norm.tok.en

de类似

cleaning:长句和空语句可引起训练过程中的问题,因此将其删除,同时删除明显不对齐的句子。–将句子长度控制在1-80。

perl path/to/mosesdecoder/scripts/training/clean-corpus-n.perl data/train.norm.tok en de data/train.norm.tok.clean 1 80

这样会同时将双语语料进行操作,生成两个处理后的文件train.norm.tok.clean.en和train.norm.tok.clean.de。

truecasing:Truecase不同于lowercase,lowercase相当于把数据中所有的字母小写,而truecase则会学习训练数据,判断句子中的名字、地点等需要大写的内容并将其保留,其余则小写,提升翻译时候的准确性,这有助于减少数据稀疏性问题。

  1. 需要训练一个truecase模型。注意:只能使用训练集训练truecase模型。
perl path/to/mosesdecoder/scripts/recaser/train-truecaser.perl -corpus data/train.norm.tok.clean.en -model path/to/truecase-model.en
  1. 应用apply:将训练得到的英语truecase模型应用到训练集、校验集和测试集的英文上。
perl dir_name/mosesdecoder/scripts/recaser/truecase.perl -model path/to/truecase-model.en < data/train.norm.tok.clean.en > data/train.norm.tok.clean.tc.en

同样德语也需要训练一个truecase模型。

BPE分词

如果想按子词来分词,则要用到BPE算法,在使用BPE算法之前最好先使用moses做数据预处理,然后将moses处理好的数据输入到BPE算法中。

项目链接:

https://github.com/glample/fastBPE

BPE分词一般有以下四个步骤:

learnbpe nCodes input1 [input2]           从1到2个文件中学习 BPE codes
applybpe output input codes [vocab]       应用 BPE codes 对输入文件做分词
getvocab input1 [input2]                  从1到2个文件中抽取词汇
applybpe_stream codes [vocab]           apply BPE codes to stdin and outputs to stdout
  1. Learn codes
./fast learnbpe 40000 train.de train.en > codes

从train.de 、train.en两个文件中学习BPE codes并输出到codes文件中,40000为BPE codes的个数(取排名前40000的子词)。

对于使用子词作为基本单位进行训练的神经机器翻译模型,训练的第一步就是根据语料生成bpe的codes资源,以英文为例,该资源会将训练语料以字符为单位进行拆分,按照字符对进行组合,并对所有组合的结果根据出现的频率进行排序,出现频次越高的排名越靠前,排在第一位的是出现频率最高的子词。如图所示:a n为出现频率最高的子词,出现了22968671次,e s< /w>出现了21090192次,其中 < /w> 表示这个s是作为单词结尾的字符。训练过程结束,会生成codes文件。BPE codes的个数为40000,所以codes文件中总共有40000行。codes文件内容如下:


2. Apply codes to train

./fast applybpe train.de.40000 train.de codes
./fast applybpe train.en.40000 train.en codes

通过生成的codes文件,对train.de、train.en分词,生成train.de.40000、 train.en.40000文件。
train.en.40000文件内容如下:


3. Get train vocabulary

./fast getvocab train.de.40000 > vocab.de.40000
./fast getvocab train.en.40000 > vocab.en.40000
./fast getvocab train.de.40000 train.en.40000  > vocab.de-en.40000

从train.de.40000中抽取词汇并保存到vocab.de.40000中。
从train.en.40000中抽取词汇并保存到vocab.en.40000中。
从train.de.40000、train.en.40000中共同抽取词汇并保存到 vocab.de-en.40000中。
vocab.en.40000文件内容如下:

除了上面的方法,还有另外一个开源框架也可以做BPE处理,链接如下:

https://blog.csdn.net/Elenore1997/article/details/89483681

moses用法总结

官网链接:

http://www.statmt.org/moses/?n=Development.GetStarted

  1. Tokenisation 分词工具:
  1.     ~/mosesdecoder-master/scripts/tokenizer/tokenizer.perl
    
  2.     命令:
    
  3.     perl ./tokenizer.perl -no-escape -l zh <./test.zh >. /test.seq.zh
    
  4.     说明:zh表示中文
    
  5.     输入文件:./test.zh
    
  6.     输出文件:. /test.seq.zh
    

2.Truecasing 格式转换

  1.    ~/mosesdecoder-master/scripts/recaser/train-truecaser.perl
    
  2.     命令:
    
  3.     ./ train-truecaser.perl –model ./truecase_model.SRC –corpus . /test.seq.zh
    
  4.     模型保存文件: ./truecase_model.SRC
    
  5.     分词后的文本的路径: . /test.seq.zh
    
  6.     使用上一步生成的模型和分词的文本进行格式转换
    
  7.     ~/mosesdecoder-master/scripts/recaser/truecase.perl
    
  8.     ./truecase.perl --model ./truecase_model.SRC < . /test.seq.zh > . /test.seq.mx.zh
    
  9.     说明:./truecase_model.SRC 以上训练的模型路径
    
  10.     说明:. /test.seq.zh 以上分词后的文本
    
  11.     说明:. /test.seq.mx.zh以上转换后的输出文本
    

3.Cleaning 处理语句长度+该命令可以一次性处理完双向的两个文件(1-100)

  1.    ~/mosesdecoder-master/scripts/training/clean-corpus-n.perl
    
  2.     命令:
    
  3.     ./clean-corpus-n.perl . /test.seq.mx zh en . /test.seq.mx.clean 1 100
    
  4.     说明:
    
  5.     以上格式化的文本(源端+目标)的文件名(去除扩展名):. /test.seq.mx
    
  6.     文件的扩展名(源端+目标):zh en
    
  7.     输出端的文件(源端+目标)名称: . /test.seq.mx.clean
    
  8.     句子的长度范围:1 100
    

4.语言模型训练

  1.     mkdir ~/lm
    
  2.     cd ~/lm
    

5.使用KenLM的构建N-gram的语言模型

  1.     评估并生成模型
    
  2.    ~/mosesdecoder/bin/lmplz
    
  3.     命令:
    
  4.     ./lmplz –o 3 <. /test.seq.mx.clean > . /test.seq.mx.clean.arpa
    
  5.     处理后的输出文本:. /test.seq.mx.clean
    
  6.     语言模型生成的文件: . /test.seq.mx.clean.arpa
    

6.二进制化语言模型文件

  1.     ~/mosesdecoder/bin/build_binary
    
  2.     命令:
    
  3.     ./ build_binary . /test.seq.mx.clean.arpa . /test.seq.mx.clean. blm
    
  4.     说明:
    
  5.     上一步生成的语言模型:. /test.seq.mx.clean.arpa
    
  6.     转化为二进制的模型文件: . /test.seq.mx.clean. blm
    

7.查询测试

  1.    ~ /mosesdecoder/bin/query
    
  2.     命令:
    
  3.     echo “is this an DeST sentence?” | ./query . /test.seq.mx.clean. blm
    
  4.     说明:
    
  5.     对应的脚本: ./query
    
  6.     以上生成的二进制语言模型. /test.seq.mx.clean. blm
    

8.翻译系统训练

  1.     ~/mosesdecoder-master/scripts/training/
    
  2.     运行的脚本:train-model.perl
    
  3.     完成九个步骤
    

9.脚本的参数设置

  1.     可以选择使用mgiza++替换giza++来加速训练速度
    
  2.     mkdir ~/working
    
  3.     cd ~/working
    
  4.     命令:nohup nice~/mosesdecoder/scripts/training/train-model.perl        \-root-dir train         \ #指明生成目录-corpus~/corpus/news-commentary-v8.fr-en.clean \  #指明clean语料库文件名(但不包括语言的extension)-f fr -e en    \  #指明SRC和 DEST 语言,即语料库文件对应的后缀。 Fr->en的情况下。-alignment grow-diag-final-and   \  #指明单词对齐的启发方法-reorderingmsd-bidirectional-fe \   #指明specifies which reordering models totrain using a comma-separated list of config-strings-lm0:3:$HOME/lm/news-commentary-v8.fr-en.blm.en:8                          \ #语言模型, factory:order:filename-external-bin-dir~/mosesdecoder/tools \              #指明word alignment tools的可执行文件路径-mgiza      \    #从默认的giza++切换成mgiza++-cores N   \     #指明训练过程可以使用的多核数量。加快训练过程。>& training.out &    #log输出经过训练之后,moses.ini会在 ~/working/train/models下面生成。
    

10.Tuning :模型调整

  1.     生成的moses.ini通过有以下两个问题
    
  2.     加载速度比较慢, 可以用二进制化来解决
    
  3.     moses采用的权值不是最优的
    
  4.     因此需要对模型进行调整,这也是整个过程中最慢的一步。tuning需要一些跟训练数据无关的并行数据
    

11.准备tuning数据

  1.     下载相应的数据
    
  2.     命令:
    
  3.     cd ~/corpus
    
  4.     wget http:www.statmt.org/wmt12/dev.tgz
    
  5.     tar xvzf dev.tgz
    
  6.     根据SRC&DEST 选择相应的数据包,然后对数据进行分词和格式统一化,例如选择de->en, 找到并选择对应的文件newtest2011.de &newtest2011.en
    

12.执行tokenize-----(目标语和源语言都要进行)-----分词

  1.     ~/mosesdecoder-master/scripts/tokenizer/ tokenizer.perl
    
  2.     命令:
    
  3.     ./tokenizer.perl -l zh <<a name="OLE_LINK5">. /3.sq.zh > ./3.dv.zh
    
  4.     说明:
    
  5.     为刚才以上下载的数据通过分词、格式统一化后的文本: . /3.sq.zh
    
  6. 输出的文本: ./3.dv.zh
    

13.执行格式化统一(源端与目标端)

  1.     truecase.perl
    
  2.     命令:
    
  3.     ./truecase.perl --model ./truecase_model.SRC <./3.dv.zh >./3.dv._zh
    
  4.     说明:
    
  5.     第二步生成的语言模型: ./truecase_model.SRC
    
  6.     上一步分词后的文本文件: ./3.dv.zh
    
  7.     格式化后的文本文件: ./3.dv._zh
    

14.进行调整(源端与目标端)

  1.     进入目录:cd ~/working
    
  2.     脚本: mert-moses.pl
    
  3.    ~/mosesdecoder-master/scripts/training/ mert-moses.pl
    
  4.     命令:nohup nice ./mert-moses.pl \  ./ 3.dv._zh ./3.dv._en \~/mosesdecoder/bin/mosestrain/model/moses.ini --mertdir ~/mosesdecoder/bin/ \&> mert.out &
    
  5.     说明:
    
  6.     分别为第13步格式化后的文本文件: ./ 3.dv._zh    ./3.dv._en
    

15.二进制化加速(源端与目标端)

  1.     对phrase-tableand lexicalised reordering models进行二进制化,加速模型文件的加载
    
  2.     脚本: processPhraseTableMin
    
  3.     路径: ~/mosesdecoder/processPhraseTableMin
    
  4.     创建文件夹: mkdir~/working/binarised-model
    
  5.     进入文件中:cd ~/working
    
  6.     ~/mosesdecoder/bin/processPhraseTableMin \-in train/model/phrase-table.gz -nscores 4 \-out binarised-model/phrase-table
    
  7.     说明:
    
  8.     第九步中第四个时生成的训练文件:train/model/phrase-table.gz -nscores 4
    
  9.     刚创建的文件夹用来存储二进制化后的文件:binarised-model/phrase-table
    
  10. ~/mosesdecoder/bin/processLexicalTableMin \-intrain/model/reordering-table.wbe-msd-bidirectional-fe.gz \-out binarised-model/reordering-table
    
  11. 说明:跟以上一样的
    

16.然后将mert-work/moses.ini 文件拷贝到binarised-model 文件夹,并phrase & reordering tables 修改指向二进制的文件::

  1.     Change PhraseDictionaryMemory to PhraseDictionaryCompact
    
  2.     Set the path of the PhraseDictionary feature to point to $HOME/working/binarised-model/phrase-table.minphr
    
  3.     Set the path of the LexicalReordering feature to point to $HOME/working/binarised-model/reordering-table
    

17.https://blog.csdn.net/chrissata/article/details/65632744

18.使用GIZA++进行词对齐

  1.     下载:  git clone https://github.com/moses-smt/giza-pp.git
    
  2.     进入文件中:cd giza-pp
    
  3.     编辑:make
    
  4.     编译完会在GIZA++-v2/和mkcls-v2/目录下生成以下可执行文件:
    
  5.     plain2snt.out、snt2cooc.out、GIZA++、mkcls
    
  6.     将这四个程序移动到工作目录workspace(自己创建的工作文件夹中)下:
    
  7.     文本单词编号:
    
  8.     命令: ./plain2snt.out zh.txt en.txt
    
  9.     说明:zh.txt和en.txt分别为分词后的标准的平行语料、必须放在workspace目录下
    
  10. 得到en.vcb、zh.vcb、en_zh.snt、zh_en.snt四个文件
    
  11. 说明:
    
  12. en.vcb / zh.vcb:字典文件,id : token : count
    
  13. 格式为:2 海洋 13 是 64 一个 25 非常 26 复杂 47 的 128 事物 19 。 710 人类 1...
    
  14. en_zh.snt / zh_en.snt:编号表示句对,第一行表示句对出现次数12 3 4 5 6 7 8 92 3 4 5 6 7 8 9 10 11 12 13110 7 11 12 3 13 14 5 6 7 15 914 15 4 5 6 7 8 9 10 16 17 18 19 13说明:第一行表示句对出现的次数第二行为源端/目标端词语的id第三行为目标端/源端词语的id
    

19.生成共现文件

  1.     命令:(中文-à英文为例)
    
  2.     ./snt2cooc.out zh.vcb en.vcb zh_en.snt > zh_en.cooc
    
  3.     说明: zh.vcb 和en.vcb分别为以上生成的字典
    
  4.     说明:zh_en.snt为以上生成的中文编号
    
  5.     说明:zh_en.cooc为生成的英文编号
    
  6.     zh_en.cooc / en_zh.cooc0 330 340 350 360 370 380 390 40
    

20.生成词类

  1.     命令:
    
  2.     ./mkcls –pzh.txt –Vzh.vcb.classes opt
    
  3.     ./mkcls -pen.txt -Ven.vcb.classes opt
    
  4.     说明:zh.txt和en.txt为中英文平行语料zh.vcb.classes和en.vcb.classes分别为中英文输出注意:文件的名称跟前面的参数连接在一起不能有空***** 1 runs. (algorithm:TA)***** ;KategProblem:cats: 100 words: 68 start-costs: MEAN: 262.907 (262.907-262.907) SIGMA:0 end-costs: MEAN: 190.591 (190.591-190.591) SIGMA:0 start-pp: MEAN: 3.52623 (3.52623-3.52623) SIGMA:0 end-pp: MEAN: 1.95873 (1.95873-1.95873) SIGMA:0 iterations: MEAN: 50117 (50117-50117) SIGMA:0 time: MEAN: 1.468 (1.468-1.468) SIGMA:0
    
  5.     参数说明:-c 词类数目-n 优化次数,默认是1,越大越好-p 输入文件-V 输出文件opt 优化输出
    
  6.     en.vcb.classes / zh.vcb.classes:单词所属类别编号,       26.       28:       64And     29I       13If      52It      49a       34about   22...
    
  7.     en.vcb.classes.cats / zh.vcb.classes.cats:类别所拥有的一组单词0:$,1:2:science,3:seem,4:things,5:some,6:start,7:task,...
    

21.GIZA++

  1.     先在当前目录新建两个输出文件夹z2e、e2z,否则下面的程序会出错,没有输出。
    
  2.     命令:
    
  3.     $ ./GIZA++ -S zh.vcb -T en.vcb -C zh_en.snt -CoocurrenceFile zh_en.cooc -o z2e -OutputPath z2e
    
  4.     $ ./GIZA++ -S en.vcb -T zh.vcb -C en_zh.snt -CoocurrenceFile en_zh.cooc -o e2z -OutputPath e2z
    
  5.     说明:
    
  6.     z2e.perp 困惑度
    
  7.     z2e.A3.final:i j l m p(i/j, l, m):i代表源语言Token位置;j代表目标语言Token位置;l代表源语言句子长度;m代表目标语言句子长度;p(i/j, l, m)代表在一对长度为l和m的句子中,位置i的源单词移动到位置j的概率.0 2 100 8 0.04919480 6 100 8 0.950805
    
  8.     z2e.d3.final:类似于z2e.a3.final文件,只是交换了i 和 j 的位置2 0 100 8 0.04919486 0 100 8 0.950805
    
  9. z2e.n3.final:source_id p0 p1 p2 … pn;源语言Token的Fertility分别为0,1,…,n时的概率表,比如p0是Fertility为0时的概率。2 1.22234e-05 0.781188 0.218799 0 0 0 0 0 0 03 0.723068 0.223864 0 0.053068 0 0 0 0 0 0
    
  10. z2e.t3.final:s_id t_id p(t_id/s_id); IBM Model 3训练后的翻译表;p(t_id/s_id)表示源语言Token翻译为目标语言Token的概率0 3 0.1969450 7 0.740390 33 0.0626657
    
  11. z2e.A3.final 单向对齐文件,数字代表Token所在句子位置(1为起点)# Sentence pair (1) source length 8 target length 11 alignment score : 8.99868e-08 It can be a very complicated thing , the ocean . NULL ({ 8 }) 海洋 ({ 1 }) 是 ({ 4 }) 一个 ({ 9 }) 非常 ({ 3 6 7 }) 复杂 ({ 2 5 }) 的 ({ }) 事物 ({ 10 }) 。 ({ 11 }) # Sentence pair (2) source length 12 target length 14 alignment score : 9.55938e-12 And it can be a very complicated thing , what human health is . NULL ({ 9 }) 人类 ({ 2 11 }) 的 ({ }) 健康 ({ 12 }) 也 ({ }) 是 ({ 5 }) 一 ({ }) 件 ({ 13 }) 非常 ({ 4 7 8 }) 复杂 ({ 3 6 }) 的 ({ }) 事情 ({ 1 10 }) 。 ({ 14 }) ...
    
  12. z2e.d4.final:IBM Model 4 翻译表# Translation tables for Model 4 .# Table for head of cept.F: 20 E: 26SUM: 0.125337 9 0.125337F: 20 E: 15SUM: 0.0387214 -2 0.0387214F: 20 E: 24SUM: 0.0387214 21 0.0387214...
    
  13. z2e.D4.final:IBM Model 4的Distortion表26 20 9 115 20 -2 124 20 21 12 20 -2 140 20 -4 122 20 -3 0.084106422 20 9 0.91589432 20 28 121 20 24 129 2 -3 0.47223429 2 1 0.5277665 2 1 0.475592...
    
  14. z2e.gizacfg:GIZA++配置文件,超参数adbackoff 0c zh_en.sntcompactadtable 1compactalignmentformat 0
    
  15. z2e.Decoder.config:用于ISI Rewrite Decoder解码器
    

22.词对齐对称化

  1.     下载python脚本: https://github.com/Lynten/smt
    
  2.     或者在working目录下: git clone https://github.com/Lynten/smt.git
    
  3.     上面的得到的*.A3.final文件是单向对齐的,我们这里需要对称化,对称化方法有很多,我们这里使用最流行的“grow-diag-final-and”方法
    
  4.     命令(以下脚本在smt中)—运行在working文件夹下:
    
  5.     python align_sym.py e2z.A3.final z2e.A3.final > aligned.grow-diag-final-and
    
  6.     说明:
    
  7.     在e2z目录下生成的文件: e2z.A3.final
    
  8.     在z2e目录下生成的文件: z2e.A3.final
    

23.Bleu值打分

  1.     ~/mosesdecoder-master/scripts/generic/ multi-bleu.perl
    
  2.     命令:
    
  3.     perl  ./multi-bleu.perl -lc  ./ref.en <<span style="mso-spacerun:yes">    ./mbt.en > ./mbt2.score
    
  4.     ./ref.en <<span style="mso-spacerun:yes">   参考文件
    
  5.     ./mbt.en >  文件预处理文件(去除等))
    
  6.     ./mbt2.score具体的结果(获取)结果只有一行
    

24.TER值

  1.    ~/tercom-0.7.25
    
  2.     java -jar ./tercom.7.25.jar -r referencefile -h testfile > resultfile
    
  3.     Referencefile(参考文路径)(表示:原始数据 结果1)
    
  4.     testfile  (翻译预处理后的测试文件路径)(表示:结果2)
    
  5.     resultfile  (结果文件)(获取:)   (倒数第4行的数据)
    

25.训练

  1.     ~/mosesdecoder-master/scripts/training
    
  2.     train-model.perl
    
  3.     运行培训脚本:
    
  4.     train-model.perl -root-dir。--corpus corpus / euro --f de  -  en
    
  5.     在corpus目录中存在两个文件分别为:euro.de和euro.en的平行语料文件。de表示德语、en表示英语
    

26.小写

  1.     lowercase.perl
    

27.清理语料库

  1.     clean-corpus-n.perl
    

moses(mosesdecoder)数据预处理BPE分词moses用法总结相关推荐

  1. [nlp] 小傻学数据预处理

    [nlp] 小傻学数据预处理 1. 分词 1.1 分词方法 1.1.1 基于规格(词典.词库) 1.1.2 基于知识理解 1.1.3 基于(词频)统计 1.2 分词工具 1.3 jieba分词原理 1 ...

  2. 使用Moses脚本进行数据预处理

    文章将介绍在机器翻译时需要使用到的数据预处理方法,包括tokenize.truecase.bpe等等,好的预处理方法才能提升机器翻译的质量.下文会以en-de双语为例进行讲解. Moses 这是Mos ...

  3. spring boot中@ControllerAdvice的用法,全局异常处理,全局数据绑定,全局数据预处理

    1: @ControllerAdvice理解 @ControllerAdvice是spring 3.2提供的新注解,他是一个controller增强器,加了@ControllerAdvice的类为那些 ...

  4. [Python从零到壹] 十五.文本挖掘之数据预处理、Jieba工具和文本聚类万字详解

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  5. NLP数据预处理与词嵌入

    NLP数据预处理与词嵌入 NLP数据预处理 读入语料库 首先准备一个语料库,实际上就是一个 txt 文件,这里用的是小说 time machine ,该语料库比较短小,仅有 ~3000 行,~3000 ...

  6. 一文搞懂BPE分词算法

    大家好,我是Xueliang,又和大家见面了. 我最近在打机器翻译的一个比赛,主要使用基于BERT的模型.在这其中,一个小的知识点引起了我的好奇,就是在将英语训练语料输入到BERT模型之前,需要对其进 ...

  7. 超全面 pandas 数据预处理+数据概览 处理技巧整理(持续更新版)

    这篇文章主要是整理下使用pandas的一些技巧,因为经常不用它,这些指令忘得真的很快.前段时间在数模美赛中已经栽过跟头了,不希望以后遇到相关问题的时候还去网上查(主要是太杂了).可能读者跟我有一样的问 ...

  8. 第二节:文本数据预处理

    目录 0.介绍 知识点 1.正则表达式 基本的正则表达式的语法 re 模块 综合训练 2.分词 分词的⽅法 中文分词工具 3.词性标注 词性标注的方法 NLTK在词性标注的应用 4.词干提取与词形还原 ...

  9. python文本数据处理_从 App 描述介绍文字中发掘 Python 文本数据预处理实例

    本文为 AI 研习社编译的技术博客,原标题 What App Descriptions Tell Us: Text Data Preprocessing in Python,作者为 Finn Qiao ...

最新文章

  1. 阿里云 - 更换系统盘(附带文件迁移)过程中遇到的一些错误
  2. 实验四 定位与导航算法
  3. jquery监听pda 按键_nui监听安卓PDA扫描事件
  4. Dalvik VM进程系统(二):分析Zygote的启动过程
  5. 作文第一次用计算机350,第一次做饭的作文350字
  6. 生鲜电商回光返照? 不! 是起死回生!
  7. APL开发日志 -- 2013-03-02
  8. Android基础——数据持久化存储
  9. pyspark groupBy代码示例
  10. ANN:ML方法与概率图模型
  11. 博客园开始对X++语言语法高亮的支持
  12. 论文浅尝 | 远程监督关系抽取的生成式对抗训练
  13. 随笔27 面向对象的五大基本原则
  14. 今日恐慌与贪婪指数为31 恐慌程度有所上升
  15. Spark SQL 源代码分析之Physical Plan 到 RDD的详细实现
  16. 产品需求文档(PRD,Product Requirement Document)模板
  17. 计算机软件自启动设置,设置开机启动项,详细教您电脑如何设置开机启动项
  18. 投资理财之基金二:购买基金的渠道
  19. 利用DirectShow开发C#版的MP3播放器(二)
  20. 以太网的分层架构_工业以太网中层次拓扑结构对网络性能的影响

热门文章

  1. 宝塔面板nginx域名配置
  2. 证券股票交易接口需要满足什么要求才能在实盘中用?
  3. 谈谈我对零售云在云原生总结与思考
  4. (五十二):多模态情感分析研究综述_张亚洲
  5. Vue3+Ant-design项目启用ts/typescript
  6. 智慧工地 | 数字孪生楼宇施工管理平台
  7. python将word表格转写入excel
  8. 锦标赛选择法(遗传算法)
  9. permission denied什么意思
  10. python读取千万级数据库数据类型_解决python读取几千万行的大表内存问题