| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> TensorFlow之文本分类算法-1 -> 正文阅读 |
|
[人工智能]TensorFlow之文本分类算法-1 |
1?前言一般情况下,文本分类算法运行在各种不同软件系统的中心位置,用于规模化地处理数据。例如,电子邮件系统使用文本分类算法确定电子邮件是否是垃圾邮件,社区论坛使用分类算法确定用户发表的评论是否合法。 如上图所示,该图表示使用传统关键字检测的分类算法,其预先定于两个INBOX与SAPM FOLDER主题分类,使用CLASSIFIER分类器,将SPAM邮件过滤到SPAM FOLDER主题中,将非SPAM的正常邮件投递到INBOX主题中。 此外,其他基于情感分析的文本分类算法,该算法一般分为两个或者更多的类别:喜欢、不喜欢或者其他情感类别,该分类算法主要用在诸如Twitter社交网络场景中,分析来自用户文本内容中所属的情感类别,从而推断出用户的喜好并向用户推送其爱好的购物商品。 本文主要描述最优文本分类算法,使用TensorFlow机器学习技术框架实现,其中包括以下几个重要方面的内容:
文本分类算法的高层次视图可分为如下步骤,后续章节将详细描述每个步骤:
其中,选择模型的步骤是非必要步骤,但是选择一个合适的模型对于整体算法流程起到关键的作用,可以简化后续的算法分析工作。 2?收集数据在解决任何监督型机器学习问题的过程中,收集数据是最重要的步骤,文本分类器的精确程度取决于从收集数据中构建的数据集的优劣程度。TensorFlow为研究人员提供很多开源的数据集合用于机器学习的研究,如果研究人员需要解决某一类特定的问题,则需要自行收集对应的数据集合。其中,一些知名的社交网络也提供开放APIs,为研究人员提供渠道下载用于机器学习的数据集合,例如Twitter。 如下列举一些收集数据时,需要注意的重要事项:
本文主要使用电影网站IMDb提供的用户对电影的评价作为机器学习的学习样本,该数据集合样本分为两类,表示为积极评价或者消极评价,标识用户对电影的评价为喜欢或者不喜欢。 3?探索数据构建模型或者训练模型只是TensorFlow其中一个步骤,在这个步骤之前理解数据的特性有助于构建更好的模型,即有助于提高分类器预测的准确程度,也就是说,数据的质量比数据的数量更加重要。 3.1?加载数据集
由以上的代码可知,返回训练数据集及其对应的分类标签、测试数据集及其对应的分类标签。 3.2?检查数据数据加载完毕,需要随机抽取一些数据,并且手工检查这些数据是否与评价的标签分类保持一致,例如对应以下观众的观影评价如下所示:
很明显地,该观众的评价是消极的,对照样本数据集合中的标签分类,需要保持一致。 3.3?数据信息统计完成上一步骤的数据随机检查,当前步骤需要汇总统计数据集的信息,这些统计信息有助于利用特征解决文本分类问题,数据统计信息包括如下所示的统计项:
统计信息的代码如下所示: 每个样本的单词总数长度分布图如下所示,x坐标表示每个样本的单词总数,y坐标表示相同单词总数的样本数: 单词出现频率的分布图如下所示,x坐标表示单词,y坐标表示该单词出现的次数: 4?选择模型前面的步骤已经实现数据收集,以及对收集的数据样本执行统计分析、探查了数据样本的特征,当前步骤主要是根据前面步骤得出的特征,选择一个合适的、高效的模型用于机器学习,那么,有待解决的问题如下所示:
对于以上的问题,可以参考一些研究机构的成熟方案,但是数据规模越大则复杂度越高,因此,需要根据实际情况选择合适的技术方案。本步骤提供的选择模型的方法,其目标是简化选择模型的过程,使模型在训练过程中最小化计算时间,同时,也最大化模型预测的准确度。 本文提供的数据处理与构建模型的算法步骤如下图所示: 对于以上的流程图,分步骤描述如下所示: 步骤1.?计算上一步骤的比率R1,R1=样本总数/每个样本的单词数(中间值),本例,R1=25000/174约等于143.678,R1是上图的S/W 步骤2.?假如R1小于1500,则使用n-gram算法对文本分词,并且选择MLP模型,其中n-gram表示n个单词的顺序串,在机器学习中,其逻辑是与单词的顺序相关的,也就是,单词相同,但顺序不同,则属于不同串,例如,madly truly与truly madly?是不同的2-gram,如下显示n-gram的定义:
MLP模型的英文全称是multi-layer perceptron,使用多层汇聚的技术模拟人类的视觉神经网络,如下图所示: 如上图所示,一个软件或者硬件系统使用该模型接受一个或者多个的输入,用函数计算输入值的权重和,从而输出单一的值,在机器学习领域中,该函数是非线性的,例如ReLU、sigmoid、tanh函数,其中sigmoid是比较常用的收敛函数,函数形式如下所示: Perceptron节点接受来自权重和的输入,作为神经网络计算输入,多个perceptron组成了深度网络,在深度神经网络中,使用反向传导算法(数学定义)实现参数的优化,从而使得预测更加准确。 因此,使用n-gram以及简单的MLP模型执行以下步骤:
步骤3.?假如R1大于1500,对样本分词成普通的单词序列,并且使用sepCNN模型,该模型是纵深式、可分离的卷积神经网络模型,其特点是计算效率高,使用该模型的步骤如下所示:
步骤4.?使用样本数据集合不断测量模型,对模型的参数进行调优。 综合以上4个步骤的分析,那么,得出两个关键的问题:
理论上,问题2的答案依赖于问题1的答案,不同模型,则需要准备输入不同格式的数据,模型可以分为两大类别:序列模型或者n-gram模型,而序列模型又可以分为卷积神经网络(CNNs)、循环神经网络(RNNs)以及其他优化变异的神经网络,n-gram模型包括逻辑回归、简单的MLPs、全连接神经网络、梯度上升树、支持向量机。 研究显示,S/W的比率值与模型的好坏程度有关。由前面的分析可知,当S/W的比率值小于1500,MLPs模型的n-gram分词输入的效果更好,MLPs模型的优点是简单易懂,而且消耗的计算时间也很少,当S/W大于等于1500,使用序列模型的效果更好。由以上的计算可知,S/W~144,因此,选择MLPs模型。 (未完待续) |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/28 17:55:01- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |