** 关于命名实体识别和商品打标 **
- 命名实体识别
在我的业务场景中,需要识别出sku是一件什么物品,比如 sku“良食记东北优质大米 5kg”
(标记为“#1”)是大米
,sku“德芙丝滑牛奶巧克力碗装 252g”
(标记为“#2”)是巧克力
。我把以上2个例子中的大米
和巧克力
定义为实体。
对于只包含一个实体词的 #1,可以得到如下的标记
良食记 品牌
东北 产地
优质 修饰
大米 实体
5kg 规格
这种只包含一个实体词的商品,相对易于识别。
对于包含多个实体词的 #2,可以得到如下标记
德芙 品牌
丝滑 修饰
牛奶 实体(实际为修饰,可能是牛奶味,也可能是成分包含牛奶)
巧克力 实体
碗装 规格
252g 规格
对于这种包含多个实体的商品,如何进行实体判别,则需要引入其他条件。
第一个想到的,即是品牌,我们可以计算品牌和实体词的同现度。
商品打标
词的相关性
比如“烧烤炉”和“烧烤盘”是相关的特征词
在title为“海蒂诗 更衣室板 塑料白色 四钩”
的sku中,“更衣室”、“板”2者联合可以作为此sku的实体词,二者取其一,搜索结果准确率都会下降
**Stanford Named Entity Recognizer **
词性标记
http://x-algo.cn/index.php/2016/02/28/crf-tagging/
CRF++ 实现中文分词与词性标记
版本说明
crf++:CRF++-0.58
系统:osx 10.12crf++ 和数据集的下载和安装
下载地址:
google云盘下载
CRF++-0.58 CSDN
backoff2005 数据集安装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的数据集中,有一份训练数据,是分好词的一份文件。
文件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
生成的模型文件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