crf中文分词 java实现,CRF 实现中文分词与词性标记

** 关于命名实体识别和商品打标 **

命名实体识别

在我的业务场景中,需要识别出sku是一件什么物品,比如 sku“良食记东北优质大米 5kg”(标记为“#1”)是大米,sku“德芙丝滑牛奶巧克力碗装 252g”(标记为“#2”)是巧克力。我把以上2个例子中的大米和巧克力定义为实体。

对于只包含一个实体词的 #1,可以得到如下的标记

良食记 品牌

东北 产地

优质 修饰

大米 实体

5kg 规格

这种只包含一个实体词的商品,相对易于识别。

对于包含多个实体词的 #2,可以得到如下标记

德芙 品牌

丝滑 修饰

牛奶 实体(实际为修饰,可能是牛奶味,也可能是成分包含牛奶)

巧克力 实体

碗装 规格

252g 规格

对于这种包含多个实体的商品,如何进行实体判别,则需要引入其他条件。

第一个想到的,即是品牌,我们可以计算品牌和实体词的同现度。

商品打标

词的相关性

比如“烧烤炉”和“烧烤盘”是相关的

特征词

在title为“海蒂诗 更衣室板 塑料白色 四钩”的sku中,“更衣室”、“板”2者联合可以作为此sku的实体词,二者取其一,搜索结果准确率都会下降

**Stanford Named Entity Recognizer **

CRF++ 实现中文分词与词性标记

版本说明

crf++:CRF++-0.58

系统:osx 10.12

安装crf++

cd CRF++-0.58

./configure

make

sudo make install

安装python

在crf++目录下,提供了python的工具包,需要进行安装

cd CRF++-0.58/python

python setup.py build

sudo python setup.py install

** 利用CRF++实现中文分词 **

步骤

生成CRF++所需格式的训练数据

利用训练数据训练出模型

对测试数据集进行分词

以下为详解

生成CRF++所需格式的训练数据

在backoff2005的数据集中,有一份训练数据,是分好词的一份文件。

1fdbe28bc381?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

文件16M左右,每个词以空格隔开。我们需要把这个文件转换为crf++训练数据集所需要的格式。。

crf++所需要的格式如下

“ S

人 B

们 E

常 S

说 S

生 B

活 E

利用训练数据训练出模型

./CRF/crf_learn -f 3 -c 4.0 ./CRF/example/seg/template tmp.data model

1fdbe28bc381?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

生成的模型文件model是一个二进制文件,51M左右。

对测试文件进行分词测试

下载crf_segmenter

运行脚本python crf_segmenter.py crf++/crf++/CRF++-0.58/model ./news.txt crf_4tag_news_out.utf8

feature_index.cpp(193) [mmap_.open(model_filename)] ./mmap.h(153) [(fd = ::open(filename, flag | O_BINARY)) >= 0] open failed: model

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值