1.项目背景

1.1业务问题描述

目前企业财务人员开取商品增值税发票时,票面上的商品需要与税务总局核定的税分类编码进行关联,按分类编码上注明的税率和征收率开具发票,使得税务机关可以统计、筛选、比对数据等,最终加强征收管理。为了满足这一要求,最关键的地方就在于确定商品的税分类编码。传统的方法是人工筛选商品关键字,然后在税务总局提供的税分类编码列表中查找,无法直接查找到的,根据政策先进行行业、大类的划分,再进行小类细划分,对于无法清楚界定、归类的,按照商品的材料或用途选择最近似的编码,最后根据编码确定商品名称和税率。

例如根据商品名“夏装雪纺条纹短袖t恤女春半袖衣服夏天中长款大码胖mm显瘦上衣夏”,预测相应的税分类编码(要求类目比较精细)、税分类简称、税分类描述以及对应的税率。商品量为千万甚至亿量级,通常商品名字数不会太多,税分类编码有4200多种,常见的商品税分类编码应该少于该数值。

1.2解决方案

目前存在少部分自动税分类编码系统,采取的方案主要是根据大量的商品关键词建立关键词与税分类编码的一一对应关系,并存储在数据库中,开票人员首先仍然需要人工筛选商品关键词提供给税分类系统,系统在数据库中根据关键词进行查找,输出相应的税分类编码和税率等,如果没有匹配的结果将没有输出。原有系统存在的缺点主要是需要事先人工筛选商品关键词,而目前实际的商品名称五花八门,为了提高商品的检索量添加了大量的修饰词语,在人工筛选关键词这一步仍然存在不少工作量,不能做到完全的自动化处理。

本文的思路主要是将该问题当作一个短文本多分类问题,根据商品名称分词后生成的词向量,基于神经网络学习一个文本分类模型,在此基础上构建一个智能商品税分类系统。

2.完整的技术方案

2.1数据接入

大数据平台数据库内存有大量已开票商品数据,从已开票商品数据中提取商品名称、税分类编码和税率三个字段,同时要筛选掉税分类编码字段为空或者编码错误的数据,将最终获取的数据按行存储到文本文件中,为训练商品模型提供数据服务。

2.2文本预处理

文本预处理是在文本中提取关键词表示文本的过程,主要包括文本分词和去停用词两个阶段。例如商品名“夏装雪纺条纹短袖t恤女春半袖衣服夏天中长款大码胖mm显瘦上衣夏”经文本分词和去停用词之后商品示例标题变成了下面“ / ”分割的一个个关键词的形式:

夏装 / 雪纺 / 条纹 / 短袖 / t恤 / 女 / 春 / 半袖 / 衣服 / 夏天 / 中长款 / 大码 / 胖mm / 显瘦 / 上衣 / 夏。

由于业内中文文本分词方法已经非常成熟,我们采用目前应用较多的中文分词库jieba进行分词。

2.3词嵌入生成

word embedding(词嵌入)生成模型如图1所示。

\"image\"

图1 词嵌入生成模型架构

2.3.1前向传播

\"image\"

2.3.2反向传播和随机梯度下降学习权重

在学习权重矩阵W与W’过程中,我们可以给这些权重赋一个随机值来初始化。然后按序训练样本,逐个观察输出与真实值之间的误差,并计算这些误差的梯度。并在梯度反方向纠正权重矩阵,这种方法被称为随机梯度下降,但这个衍生出来的方法叫做反向传播误差算法。具体步骤如下

  1. 首先定义loss function(损失函数),这个损失函数就是给定输入上下文的输出词语的条件概率,一般都是取对数,如下所示:

\"image\"

其中j*表示目标词在词表V中的索引。

  1. 接下来对损失函数求导,得到输出权重矩阵W’的更新规则:

\"image\"

  1. 类似地可以得到权重矩阵W的更新规则:

\"image\"

2.3.3获取词嵌入

在第2.3.2节中经过足够次数的迭代,损失函数足够小时,我们可以得到权重矩阵W,其中矩阵W的第k行就是词表V中编号为k的词所对应的词嵌入。

2.4商品税分类模型

算法模型示意图如图2所示。

\"image\"

图2 商品税分类模型架构

2.4.1模型理解

本算法是一种有监督的模型,与上一节提到的词嵌入生成架构很相似,其结构如图2所示。上一节中的词嵌入生成模型,通过上下文预测中间词,而本分类模型则是通过上下文预测标签(这个标签就是文本的类别,本发明中就是商品名对应的税分类编码,是训练模型之前通过人工标注等方法事先确定下来的)。

从模型架构上看,沿用了词嵌入生成模型的单层神经网络的模式。模型的输入是一个n-gram词嵌入的序列(由词嵌入模型生成的1~n个连续的词嵌入求和得到),输出是这个词序列属于不同类别的概率。对词嵌入加权平均之后映射到隐藏层,再由隐藏层映射到输出层,对输出层的结果进行softmax分类可以得到文本属于各个类别的概率,可以得到loss function为:

\"image\"

2.4.2层次化softmax

传统神经网络输入输出框架如图3所示,hierarchical(层次化) softmax结构如图4所示。本模型的softmax层与传统的神经网络有一定区别,hierarchical softmax结构是把输出层改成了一颗霍夫曼树,其中图中白色的叶子节点表示词汇表中所有的|V|个词,黑色节点表示非叶子节点,每一个叶子节点也就是每一个label(标签),都对应唯一的一条从root(根)节点出发的路径。我们的目的是使的W=W0这条路径的概率最大,即:P(W=W0|W1)最大,假设最后输出的条件概率是W2最大,那么我只需要去更新从根结点到W2这一个叶子结点的路径上面节点的向量即可,而不需要更新所有label的出现概率,这样大大的缩小了模型训练更新的时间。

\"image\"

\"image\"

2.4.3反向传播与模型训练

本模型训练时采用500万条已开票数据,根据第二节所述进行分词,选择其中400万条数据作为训练集,剩下100万条数据作为测试集,注意数据要以UTF-8格式存储,格式如附图5所示。训练方法采用与词嵌入生成模型类似的反向传播和梯度下降去更新权重矩阵A和B。在32G CPU×3条件下,模型训练时间约40分钟左右,训练结束后会得到一个二进制文件,该文件内存储了权重矩阵的数值,约40M大小。利用100万条测试数据对模型性能进行验证,得到模型预测商品税分类编码准确率达95.48%。

2.4.4前向传播与模型使用

将输入的商品名分词与去停用词后,通过词嵌入生成模型生成词嵌入,再根据生成的词嵌入组合成n-gram特征,n-gram特征就是商品税分类编码分类模型的输入,根据训练出的模型权重矩阵A将n-gram特征加权平均后输入到隐藏层,再根据训练出的权重矩阵B将隐藏层的输入线性变换到输出层,最后将输出层的结果通过softmax函数f得到编码分类结果,如下式所示:

label=f(BAx_n )

由于商品税分类编码唯一标示商品,可以根据编码在税务总局提供的税分类表格中检索到商品所属大类、细分类别名称以及对应的税率。

2.5模型部署与包装

模型训练完成后为了便于用户使用,将其部署到服务器上提供远程调用服务,这里我们采用基于Google的远程过程调用框架gRPC的方案,数据存储格式采用Google的protocol buffer(协议缓冲区)格式,该格式比传统的json等格式效率更高、速度更快。在服务器上启动服务后,经验证用户每次调用的时间大约为300-500ms,能够满足正常生产需要。

3.本技术方案带来的有益效果

方案整体实施流程如图5所示。

\"image\"

对比现有技术,一方面是传统的人工查找方法,在筛选商品关键词后,需要人工进行商品所属大类和细分类别的分类,而现有商品税分类编码共有4227种,种类繁多且容易混淆,人工选择工作量较大且容易出错。另一方面目前类似的自动编码系统,对输入要求非常严格,需要人工筛选准确的商品关键词输入系统,而目前实际的商品名称错综复杂,在人工筛选关键词这一步仍然存在不少工作量,此外该系统输出准确率也较为一般。使用本技术方案,系统部署十分方便,只需配置好环境即可马上投入使用,同时系统可以直接输入商品名称,不需要做任何人工处理,能够节省大量人力成本,而且预测税分类编码准确率达95%以上,此外系统支持持续学习更新,系统升级时只需要替换模型文件,更新和维护都非常方便。

作者介绍

欧文祥,苏宁易购IT总部员工平台研发中心算法工程师,负责商品税分类、豆芽人脸识别活体检测等算法开发。曾从事无线通信算法开发,具有较丰富的算法开发经验,自学能力较强。对机器学习、深度学习相关前沿技术感兴趣,在信号处理、图像处理、图像识别、文本分类等领域有相关经验和项目实践。

苏宁11.11:一种基于神经网络的智能商品税分类系统相关推荐

  1. android有关医疗实现功能,基于Android的智能医疗监测系统的设计与实现_问答库

    随着社会经济的快速发展,工作压力的进一步加大,如今人们对个人健康越来越关注,为了有效减轻家庭医疗支出同时,让人们足不出户就能享受到自身健康检测的高质量医疗服务,智能医疗监测系统成为关注的焦点.另一方面 ...

  2. 一种基于神经网络的由PPG信号估计连续血压算法【翻译】

    一种基于神经网络的由PPG信号估计连续血压算法 摘要 由光体积描记(PPG)信号得到的血压和脉搏持续时间之间存在关系,但并不总是线性的.为了从PPG信号中估计血压,本文采用了人工神经网络(ann).训 ...

  3. 一种基于柔性压力传感器的机械手驱动系统

    本发明提供一种基于柔性压力传感器的机械手驱动系统,包括:多个柔性压力传感器.固定指.驱动指.凹状掌垫.传动机构.舵机.调节机构和手爪支架.柔性压力传感器分别贴附在凹状掌垫和驱动指内表面,凹状掌垫采用弹 ...

  4. java调试生命周期,一种基于JAVA的智能合约生命周期的管理方法与流程

    本发明涉及区块链技术,尤其涉及一种基于JAVA的智能合约生命周期的管理方法. 背景技术: 区块链技术,区块链是一种新型去中心化协议,能安全地存储数字货币交易或其他数据,信息不可伪造和篡改,区块链上的交 ...

  5. melis系统c800_一种基于Melis平台的卡拉OK系统的制作方法

    本实用新型涉及一种卡拉OK系统,具体是一种基于Melis平台的卡拉OK系统. 背景技术: 随着经济的快速发展,人们在追求物质生活上的富足外也更加注重精神的富足,由此就催生了一系列的娱乐方式,音乐就是其 ...

  6. lua软件测试自动化,一种基于Lua脚本的嵌入式软件自动化测试系统及方法专利_专利查询 - 天眼查...

    1.一种基于Lua脚本的嵌入式软件自动化测试系统,其特征在于,所述系统包括:目标 测试系统及测试主控系统,其中: 目标测试系统包括: 标准化的软件接口 :用于与被测对象进行数据交换: Lua解析器:用 ...

  7. 树莓派环境处理_一种基于树莓派的便携式的环境监测系统的制作方法

    本发明涉及通讯技术领域,尤其涉及一种基于树莓派的便携式的环境监测系统. 背景技术: 树莓派是尺寸仅有信用卡大小的一个小型电脑,可以将树莓派连接电视.显示器.键盘鼠标等设备使用.树莓派能替代日常桌面计算 ...

  8. 智能灯控制页面用HTML编写,一种基于STM32的智能灯控制系统的制作方法

    本发明涉及电子系统控制领域,具体是一种基于STM32的智能灯控制系统. 背景技术: 随着我国教育业的发展,学校照明用电量急速增加,电能损失也呈现出增大的趋势.目前,国内外照明自动控制装置基本都采用被动 ...

  9. 一种基于语音识别的机器人语义识别系统的制作方法

    本发明涉及机器人语义识别,尤其涉及一种基于语音识别的机器人语义识别系统. 背景技术: 目前,很多家庭都拥有机器人,但是很多时候机器人并不能准确识别用户对其发出的指示,使用户操作机器人不方便,这样的机器 ...

最新文章

  1. 鸟哥学习笔记---网络安全基础
  2. 安卓自动化测试(一)
  3. [转]Android开发,实现可多选的图片ListView,便于批量操作
  4. 在ubuntu上实现基于webrtc的多人在线视频聊天服务
  5. maven 无效的源发行版11
  6. 机器码合集开源易语言源码-市场上带多数的
  7. 路由器访问控制列表基础知识
  8. msdn系统镜像下载
  9. ps海报合成教程_怎样合成创意环保海报图片的PS教程
  10. SQL Server 端口映射访问方法
  11. 我把跨境电商当副业 ,一周赚了7000块:想给有梦想的人提个醒 !
  12. OpenVINO™基于人脸landmark检测实现眼睛疲劳/睡意检测
  13. 华为OD机试 - 不含101的数
  14. 组态软件开发工程的一般步骤
  15. error C2143/C2501/C2059/C2238
  16. DANN-经典论文概念及源码梳理
  17. 计算机a类会议论文难度,中国计算机学会推荐国际学术会议和期刊(A类)2019年...
  18. python画太极八卦图_CAD怎么画出八卦图? cad画完整太极八卦图的教程
  19. 多个接口可以封装成一个接口处理
  20. android 播放m3u9,M3U9笔记.ppt

热门文章

  1. VC6下使用dbghelp及注意事项
  2. JAVA常用API的笔记
  3. 用python实现身份证号校验系统
  4. 如何使html中的din居中,CSS 实现完美垂直居中
  5. 用单循环链表实现约瑟夫环(c语言)
  6. RabbitMQ面试题
  7. TOUGH2系列建模方法及在CO2地质封存、水文地球化学、地热、地下水污染等领域中的技术
  8. SSCOM3.2无法保存窗口的问题的解决
  9. OCR-字体颜色与背景颜色区分不明显的调研
  10. 散列表的概念、构造方法及冲突处理