1、中文分词中文分词,简单理解就是把一个句子分成若干个词。百度百科里的定义是把一个汉字序列分成一个个单词。分词是将连续的词序列按照一定的规范重新组合成词序列的过程。例子:我是中国人,我爱中国。分词后可能变成:我是中国人,我爱中国。上面是一个比较简单的例子。中文分词是处理中文非结构化文本的基本步骤。英语空间中的单词之间有一个自然的分隔符。但是中文没有明显的分词边界,所以中文分词有一定的难度。例子:我正在和特朗普通电话。这句话可以分为:我和特朗普的电话也可以分为:我和特朗普的普通电话。因此,不同的分词方法有不同的分词结果。2.分词方法中文分词属于自然语言处理(NLP)。中文分词方法的发展经历了几个阶段。基于规则的基于神经网络的统计分析方法目前比较流行的方法是基于神经网络的方法。使用Bi-LSTM+CRF的组合模型可以达到更好的分词效果。jieba分词是一款跨语言的开源中文分词器。StutterTokenizer有一个Rust语言版本的分词器。口吃分词支持四种分词模式:精确模式,尽量准确切句,适合文本分析;full模式,扫描一个句子中所有能成词的词,速度很快,但无法解决歧义;搜索引擎模式在精确模式的基础上,对长词进行再次切分,提高召回率,适用于搜索引擎的分词。paddle模式使用PaddlePaddle深度学习框架训练一个序列标注(双向GRU)网络模型来实现分词。还支持词性标注。3.jieba分词的安装jieba分词的安装请参考Rust版本的jieba分词,在Cargo.toml中添加如下代码:[dependencies]jieba-rs="0.6"即可使用jieba分词。4.分词使用示例先写一个WebAssembly函数,定义为cut,然后新建一个jieba分词器,使用jieba分词器中的cut方法实现中文分词。使用wasm_bindgen::prelude::*;使用jieba_rs::Jieba;#[wasm_bindgen]fncut(sent:String)->[String]{letjieba=Jieba::new();letwords=jieba.cut("发送",false);returnwords}接下来,使用ssvmupbuild将Rust源代码编译为WebAssembly字节码,并为Node.js主机环境生成随附的JavaScript模块。然后在app.js中导入cut函数。const{cut}=require('../pkg/ssvm_nodejs_starter_lib.js');consthttp=require('http');consturl=require('url');consthostname='127.0.0.1';常量端口=3000;constserver=http.createServer((req,res)=>{constqueryObject=url.parse(req.url,true).query;res.statusCode=200;res.setHeader('Content-Type','text/plain');res.end(cut(queryObject['sen']));});server.listen(port,hostname,()=>{console.log(`服务器运行在http://${主机名}:${端口}/`);});接下来,使用nodenode/app.js启动nodejs服务器。在浏览器中访问127.0.0.1:3000?sent=IamChinese可以得到如下返回结果:
