【NLP】零碎整理

利用Python进行文章特征提取:http://www.cnblogs.com/Haichao-Zhang/p/5223301.html

scikit-learn:CountVectorizer提取tf都做了什么:http://blog.csdn.net/mmc2015/article/details/46866537

词袋模型

最初的Bag of words,也叫做“词袋”,在信息检索中,Bag of words model假定对于一个文本,忽略其词序和语法,句法,将其仅仅看做是一个词集合,或者说是词的一个组合,文本中每个词的出现都是独立的,不依赖于其他词是否出现,或者说当这篇文章的作者在任意一个位置选择一个词汇都不受前面句子的影响而独立选择的。

词向量

词向量 https://www.zhihu.com/question/21714667/answer/19433618   

http://licstar.net/archives/328  http://dataunion.org/10760.html

one-hot representation:无法捕捉词与词之间的相似度,还容易发生维数灾难;

distributed Representation:通过训练将每个词映射成K维实数向量(K一般为模型中的超参数),通过词之间的距离(比如cosine相似度、欧氏距离等) 来判断它们之间的语义相似度。 而word2vec使用的就是这种词向量表示方式。

要介绍词向量是怎么训练得到的,就不得不提到语言模型。到目前为止我了解到的所有训练方法都是在训练语言模型的同时,顺便得到词向量

向量空间模型

http://blog.csdn.net/Felomeng/article/details/4059128

把对文本内容的处理简化为向量空间中的向量运算,并且它以空间上的相似度表达语义的相似度,直观易懂。实际上,计算向量之间的夹角余弦比直接计算夹角容易。(由百度百科)普通向量空间模型的改进→实际应用中常用的向量空间模型:通过TFIDF计算。

TFIDF

TF-IDF与余弦相似性文本处理:自动提取关键词、找出相似文章:(通俗好文http://mt.sohu.com/it/p/128270925_609569

http://blog.csdn.net/chl033/article/details/4735411

提取关键词:TF-IDF与一个词在文档中的出现次数成正比,与该词在整个语言中的出现次数成反比。

找出相似文章:余弦相似性:有些时候,除了找到关键词,我们还希望找到与原文章相似的其他文章。比如,"Google新闻"在主新闻下方,还提供多条相似的新闻。需要用到"余弦相似性"(cosine similiarity):计算词频向量的相似程度(通过向量夹角的大小,来判断向量的相似程度。夹角越小,就代表越相似。余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,这就叫"余弦相似性"。)

计算文本TF-IDF值

使用scikit-learn工具计算文本TF-IDF值:http://blog.csdn.net/eastmount/article/details/50323063

 Scikit-Learn中TF-IDF权重计算方法主要用到两个类:CountVectorizer和TfidfTransformer。 CountVectorizer类会将文本中的词语转换为词频矩阵,例如矩阵中包含一个元素a[i][j],它表示j词在i类文本下的词频。它通过fit_transform函数计算各个词语出现的次数,通过get_feature_names()可获取词袋中所有文本的关键字,通过toarray()可看到词频矩阵的结果。

word2vec

http://blog.csdn.net/zhoubl668/article/details/24320625
http://blog.csdn.net/vs412237401/article/details/50628239

word2vec是一个将单词转换成向量形式的工具。可以把对文本内容的处理简化为向量空间中的向量运算,计算出向量空间上的相似度,来表示文本语义上的相似度。

paragraph vector

http://www.jianshu.com/p/d34d61188ab5

一种非监督学习方式,输入为文本,输出则是文本对应的向量表示。

连续分布式向量(distributed vector表示。文本可以是可变的长度(对应于 sentence 及 documents)。
向量表示可以用来预测文章中的 word。可以连接 paragraph vector和 word vector,预测给定的 context 下将要出现的 word。word 向量和 para 向量都是通过 GD (gradient descent,梯度下降)和 BP(Error Back Propagation,误差反向传播计算出来的para 向量唯一对应于相应的文章,而 word 向量则是全局共享的。在 predict 时,固定 word 向量,并训练新的 para 向量直到收敛获得 para 向量的预测。

word 向量一般是通过对 context 下得 word 向量进行连接或者平均获得。结果向量用来预测在这个 context 下的其他 word。例如在NNLM(Bengio 06)中,使用前面出现的 word 向量的连接作为神经网络的输入,目的是预测下面的 word。在 model 训练完成,word 向量被映射到一个向量空间,使得语义相似的 word 拥有相似的向量表示。(如“strong” 靠近 “powerful”)。在此基础上,出现了 phrase 和 sentence 层的表示。使用文档中出现的 word 的平均权重来表示一个 document。更复杂的是使用 sentence 的分析树,使用矩阵向量操作。这两种方式都有弱点,因为他们都忽略了 word 在 document 中出现的顺序。第二种由于依赖于分析(parsing)则只能处理 sentence。

para 向量可以用来构造可变长度的输入序列的表示。不同于前面的一些方法,para 向量是通用的并可以用在任意长度的文本上。例如,在情感分析人物中,我们获得新的结果,比那些复杂的方法还要好。在文本分类的工作中,我们的方法相较于bag-of-words方法有超过30%的提升。

Spark MLlib

在Python集成开发环境中调用Spark MLlib:http://www.th7.cn/Program/Python/201501/352718.shtml

在spark上做简单的文本分类(python):http://blog.csdn.net/q1w2e3r4470/article/details/50534336

Spark MLlib实现的中文文本分类–Naive Bayes:http://blog.csdn.net/u012102306/article/details/51556535

Sparck文本分类各方法:http://spark.apache.org/docs/latest/ml-features.html

哈希表

其中3.通过哈希表来实现特征向量:在计算文档词频和IDF值时,都是先通过建立词典,然后创建特征向量。但是如果文档集特别大,就会引起内存耗尽的问题。因此,可以采取利用哈希表来解决上述问题。sklearn提供了HashingVectorizer来实现(详见http://www.cnblogs.com/Haichao-Zhang/p/5223301.html)

然而,经测试:设置30000个特征后,同样,也报MemoryErrorr   = =!

Blaze库

Blaze——NumPy和Pandas的大数据接口:http://hao.jobbole.com/blaze/

清华大学开源软件镜像站(在conda下,通过命令行简单安装库):https://mirror.tuna.tsinghua.edu.cn/help/anaconda/

源于在PyCharm安装blaze报错“安装blaze报错CondaHTTPError: HTTP None None for url <https://repo.continuum.(提示conda指令无法连接网络):http://blog.csdn.net/data8866/article/details/60961043

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值