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

2017-03-10  本文已影响1550人  阳春是你

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

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

良食记  品牌
东北  产地
优质  修饰
大米  实体
5kg  规格

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

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

德芙  品牌
丝滑  修饰
牛奶  实体(实际为修饰,可能是牛奶味,也可能是成分包含牛奶)
巧克力  实体
碗装  规格
252g  规格

对于这种包含多个实体的商品,如何进行实体判别,则需要引入其他条件。
第一个想到的,即是品牌,我们可以计算品牌和实体词的同现度。

**Stanford Named Entity Recognizer **

词性标记
http://x-algo.cn/index.php/2016/02/28/crf-tagging/

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

cd CRF++-0.58
./configure
make
sudo make install

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

cd CRF++-0.58/python
python setup.py build
sudo python setup.py install

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

以下为详解

crf++所需要的格式如下

“   S
人   B
们   E
常   S
说   S
生   B
活   E

利用训练数据训练出模型

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

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

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

猜你喜欢

热点阅读