TF-IDF
----------------------------------------------------------------
认为一个单词出现的文本频率越小,它区别不同类别的能力就越大,所以引入了逆文本频度 IDF 的概念:以 TF 和 IDF 的乘积作为特征空间坐标系的取值测度。

Wi 表示第 i 个特征词的权重,TFi(t,d) 表示词 t 在文档 d 中的出现频率,N 表示总的文档数,DF(t) 表示包含 t 的文档数。用 TF-IDF 算法来计算特征词的权重值是表示当一个词在这篇文档中出现的频率越高,同时在其他文档中出现的次数越少,则表明该词对于表示这篇文档的区分能力越强,所以其权重值就应该越大。

将所有词的权值排序,根据需要可以有两种选择方式:
选择权值最大的某一固定数 n 个关键词
选择权值大于某一阈值的关键词
达观数据的实践经验是,计算机选择的关键词数量在 10∽15 个,人工选择的关键词数量在 4∽6 个比较合适,通常具有最好的覆盖度和专指度。

另外考虑到单词区别不同类别的能力,TFIDF 法认为一个单词出现的文本频数越小,它区别不同类别文本的能力就越大。因此引入了逆文本频度 IDF 的概念,以 TF 和 IDF 的乘积作为特征空间坐标系的取值测度,并用它完成对权值 TF 的调整,调整权值的目的在于突出重要单词,抑制次要单词。但是在本质上 IDF 是一种试图抑制噪音的加权,并且单纯地认为文本频数小的单词就越重要,文本频数大的单词就越无用,显然这并不是完全正确的。IDF 的简单结构并不能有效地反映单词的重要程度和特征词的分布情况,使其无法很好地完成对权值调整的功能,所以TF*IDF 法的精度并不是很高。

文档频数 (Document Frequency, DF) 是最为简单的一种特征选择算法,它指的是在整个数据集中有多少个文本包含这个单词。但如果某一稀有词条主要出现在某类训练集中,却能很好地反映类别的特征,而因低于某个设定的阈值而滤除掉,包含着重要的判断信息被舍弃,这样就会对分类精度有一定的影响。

在提取文本特征时,应首先考虑剔除这些对文本分类没有用处的虚词,而在实词中,又以名词和动词对于文本的类别特性的表现力最强,所以可以只提取文本中的名词和动词作为文本的一级特征词。

根据统计,二字词汇多是常用词,不适合作为关键词,因此对实际得到的二字关键词可以做出限制。比如,抽取 5 个关键词,本文最多允许 3 个二字关键词存在。

CNN卷积神经网络
----------------------------------------------------------------
·特征 & 卷积运算
拿图片举例。
几张图片都画了X这个字母,不过,每个图片X的样子不一样,但是,他们都被定义为X。
他们总会有几个相同的特征,如某几段线条相识。而这几个相识的线条,就说是几个特征(feature)。
经过卷积运算,每一个feature从原始图像中提取出来“特征”,得到feature map(特征图。是均值填入一张新的图。)
feature map其中的值,越接近为1表示对应位置和feature的匹配越完整,越是接近-1,表示对应位置和feature的反面匹配越完整,而值接近0的表示对应位置没有任何匹配或者说没有什么关联。
对这张X图来说,我们用的是3个feature,因此最终产生3个 feature map。

·非线性激活层
用非线性激活函数作用后,feature map里的值<0的值全部设为0。

·pooling池化层
为了缩小特征图的数据量。
池化分为两种,Max Pooling 最大池化、Average Pooling平均池化。顾名思义,最大池化就是取最大值,平均池化就是取平均值。
因为最大池化保留了每一个小块内的最大值,所以它相当于保留了这一块最佳匹配结果(因为值越接近1表示匹配越好)。
CNN能够发现图像中是否具有某种特征。这也就能够帮助解决之前提到的计算机逐一像素匹配的死板做法。

·全连接层
全连接层要做的,就是对之前的所有操作进行一个总结,给我们一个最终的结果。它最大的目的是对特征图进行维度上的改变,来得到每个分类类别对应的概率值。

卷积层采用的是“局部连接”的思想。
那除窗口之外的、未连接的部分怎么办呢? 我们都知道,采用的是将窗口滑动起来的方法后续进行连接。这个方法的思想就是“参数共享” ,参数指的就是filter,用滑动窗口的方式,将这个filter值共享给原图中的每一块区域连接进行卷积运算。

还是回来看接下来的操作,得到了2X2的特征图后,对其应用全连接网络,再全连接层中有一个非常重要的函数----Softmax,它是一个分类函数,输出的是每个对应类别的概率值。比如:
【0.5,0.03,0.89,0.97,0.42,0.15】就表示有6个类别,并且属于第四个类别的概率值0.89最大,因此判定属于第四个类别。
因此直接将三个特征图改变维度直接变成一维的数据。一维数据也就是概率值。

·神经网络的训练与优化
训练的就是那些卷积核(filter)。
BP算法---BackProp反向传播算法,进行大量数据的训练。

在训练时,我们采用的训练数据一般都是带有标签label的图片。如果图片中的字母是X,则label=x,如果图片中的字母是A,则label=A。 标签能直观地反映图片。

在最开始,训练前,我们定义一个大小为3X3的卷积核,那么里面具体的值是多少,我们都不知道,但又不能为0吧,所以就用随机初始化法来进行赋值。刚开始有误差。训练的终极目的就是使得这个误差最小,常用的方法是 梯度下降法。

TF-IDF & CNN的更多相关文章

  1. TF/IDF(term frequency/inverse document frequency)

    TF/IDF(term frequency/inverse document frequency) 的概念被公认为信息检索中最重要的发明. 一. TF/IDF描述单个term与特定document的相 ...

  2. 基于TF/IDF的聚类算法原理

        一.TF/IDF描述单个term与特定document的相关性TF(Term Frequency): 表示一个term与某个document的相关性. 公式为这个term在document中出 ...

  3. 使用solr的函数查询,并获取tf*idf值

    1. 使用函数df(field,keyword) 和idf(field,keyword). http://118.85.207.11:11100/solr/mobile/select?q={!func ...

  4. TF/IDF计算方法

    FROM:http://blog.csdn.net/pennyliang/article/details/1231028 我们已经谈过了如何自动下载网页.如何建立索引.如何衡量网页的质量(Page R ...

  5. tf–idf算法解释及其python代码实现(下)

    tf–idf算法python代码实现 这是我写的一个tf-idf的简单实现的代码,我们知道tfidf=tf*idf,所以可以分别计算tf和idf值在相乘,首先我们创建一个简单的语料库,作为例子,只有四 ...

  6. tf–idf算法解释及其python代码实现(上)

    tf–idf算法解释 tf–idf, 是term frequency–inverse document frequency的缩写,它通常用来衡量一个词对在一个语料库中对它所在的文档有多重要,常用在信息 ...

  7. 文本分类学习(三) 特征权重(TF/IDF)和特征提取

    上一篇中,主要说的就是词袋模型.回顾一下,在进行文本分类之前,我们需要把待分类文本先用词袋模型进行文本表示.首先是将训练集中的所有单词经过去停用词之后组合成一个词袋,或者叫做字典,实际上一个维度很大的 ...

  8. 信息检索中的TF/IDF概念与算法的解释

    https://blog.csdn.net/class_brick/article/details/79135909 概念 TF-IDF(term frequency–inverse document ...

  9. Elasticsearch学习之相关度评分TF&IDF

    relevance score算法,简单来说,就是计算出,一个索引中的文本,与搜索文本,他们之间的关联匹配程度 Elasticsearch使用的是 term frequency/inverse doc ...

  10. tf idf公式及sklearn中TfidfVectorizer

    在文本挖掘预处理之向量化与Hash Trick中我们讲到在文本挖掘的预处理中,向量化之后一般都伴随着TF-IDF的处理,那么什么是TF-IDF,为什么一般我们要加这一步预处理呢?这里就对TF-IDF的 ...

随机推荐

  1. Subversion——密码保存位置

    Subversion——密码保存位置 摘要:本文主要说明了Subversion在电脑上保存密码的位置. 起因 在向本地电脑上的文件夹里下载程序代码的时候,发现输入了地址之后就能直接下载了,并没有提示输 ...

  2. synchronized和volatile使用

    synchronized和volatile volatile :保证内存可见性,但是不保证原子性: synchronized:同步锁,既能保证内存可见性,又能保证原子性: synchronized实现 ...

  3. redis笔记2

    分布式锁的实现 锁是用来解决什么问题的; 一个进程中的多个线程,多个线程并发访问同一个资源的时候,如何解决线程安全问题. 一个分布式架构系统中的两个模块同时去访问一个文件对文件进行读写操作 多个应用对 ...

  4. Vue-cli3脚手架工具快速创建一个项目

    1.首先全局安装一下vue-cli3 npm install -g @vue/cli 或 yarn global add @vue/cli vue -V查看版本(这里注意V是大写哦) 2.vue cr ...

  5. css中的baseline

    这是css中的一个容易被人忽略的概念,今天在知乎上看到一个问题,这个问题应该是关于baseline,才去补习了一下关于baseline的知识,首先我来还原一下问题: <div style=&qu ...

  6. afnet缓存

    http://www.open-open.com/code/view/1432299750333

  7. vuejs的导航栏固定

    https://blog.csdn.net/wang1006008051/article/details/78003974 博主文章,超级详细,上面传送们 不过博主的导航栏跳动比较明显,我自己做了修复 ...

  8. Python中print用法里面% ,"%s 和 % d" 代表的意思

    Python 编程 里面% . "%s 和 % d" 代表的意思 %s,表示格化式一个对象为字符 %d,整数 "Hello, %s"%"zhang3& ...

  9. c# 第17节 二维数组声明、使用

    本节内容: 1:为什么要有二维数组 2:二维数据 3:实例二维数组声明 4:二维数组的使用 1:为什么要有二维数组 2:二维数据声明 3:实例二维数组声明 4:二维数组的使用 foreach遍历 5: ...

  10. Spring Boot 配置文件application.properties

    #########COMMON SPRING BOOT PROPERTIES ######========CORE PROPERTIES=========== #SPRING CONFIG (Conf ...