
自然语言处理
multiangle
这个作者很懒,什么都没留下…
展开
-
tensorflow笔记:使用tf来实现word2vec
时隔若干个月,又绕到了word2vec。关于word2vec的原理我就不叙述了,具体可见word2vec中的数学,写的非常好。 我后来自己用Python实现了一遍word2vec,过程写在自己动手写word2vec (一):主要概念和流程以及后续的若干文章中我当时使用的是Hierarchical Softmax+CBOW的模型。给我的感觉是比较累,既要费力去写huffman树,还要自己写计算梯度的原创 2017-01-05 14:50:21 · 29529 阅读 · 21 评论 -
深度学习笔记(六):Encoder-Decoder模型和Attention模型
这两天在看attention模型,看了下知乎上的几个回答,很多人都推荐了一篇文章Neural Machine Translation by Jointly Learning to Align and Translate 我看了下,感觉非常的不错,里面还大概阐述了encoder-decoder(编码)模型的概念,以及传统的RNN实现。然后还阐述了自己的attention模型。我看了一下,自己做了一些摘原创 2016-10-15 23:09:25 · 123306 阅读 · 17 评论 -
tensorflow笔记:多层LSTM代码分析
tensorflow笔记系列: (一) tensorflow笔记:流程,概念和简单代码注释 (二) tensorflow笔记:多层CNN代码分析之前讲过了tensorflow中CNN的示例代码,现在我们来看RNN的代码。不过好像官方只给了LSTM的代码。那么我们就来看LSTM吧。LSTM的具体原理就不讲了,可以参见深度学习笔记(五):LSTM,讲的非常清楚。坦白说,这份写LSTM的代码有点难,原创 2016-10-08 17:33:34 · 166782 阅读 · 68 评论 -
深度学习笔记(五):LSTM
看到一篇讲LSTM非常清晰的文章,原文来自Understanding LSTM Networks , 译文来自理解LSTM网络Recurrent Neural Networks人类并不是每时每刻都从一片空白的大脑开始他们的思考。在你阅读这篇文章时候,你都是基于自己已经拥有的对先前所见词的理解来推断当前词的真实含义。我们不会将所有的东西都全部丢弃,然后用空白的大脑进行思考。我们的思想拥有持久性。 传转载 2016-09-21 11:04:46 · 39251 阅读 · 7 评论 -
使用gensim和sklearn搭建一个文本分类器(二):代码和注释
在之前的 使用gensim和sklearn搭建一个文本分类器(一):流程概述 中,叙述了一个使用lsi来对文本进行向量化,再使用线性核svm进行分类的文本分类器。在这篇文章中,沿着之前的思路,提供了该文本分类器的具体实现。该分类器对之前的流程进行了适当的整合,现在有五个主要流程: 生成词典生成tfidf向量生成lsi向量分类器参数训练对新文本进行分类。前4个步骤可以看做是分类器的训练过程原创 2016-09-12 17:49:00 · 9909 阅读 · 5 评论 -
使用gensim和sklearn搭建一个文本分类器(一):流程概述
总的来讲,一个完整的文本分类器主要由两个阶段,或者说两个部分组成:一是将文本向量化,将一个字符串转化成向量形式;二是传统的分类器,包括线性分类器,SVM, 神经网络分类器等等。之前看的THUCTC的技术栈是使用 tf-idf 来进行文本向量化,使用卡方校验(chi-square)来降低向量维度,使用liblinear(采用线性核的svm) 来进行分类。而这里所述的文本分类器,使用lsi (laten原创 2016-09-04 18:19:21 · 24098 阅读 · 0 评论 -
gensim使用方法以及例子
gensim是一个python的自然语言处理库,能够将文档根据TF-IDF, LDA, LSI 等模型转化成向量模式,以便进行进一步的处理。此外,gensim还实现了word2vec功能,能够将单词转化为词向量。关于词向量的知识可以看我之前的文章关于gensim的使用方法,我是根据官网的资料来看的,思路也是跟着官网tutorial走的,英文好的或者感觉我写的不全面的可以去官网看 1. corpora原创 2016-08-16 10:58:58 · 59976 阅读 · 12 评论 -
语义分析的一些方法(二)
本文转自这里2 文本语义分析前面讲到一些文本基本处理方法。一个文本串,对其进行分词和重要性打分后(当然还有更多的文本处理任务),就可以开始更高层的语义分析任务。2.1 Topic Model首先介绍主题模型。说到主题模型,第一时间会想到pLSA,NMF,LDA。关于这几个目前业界最常用的主题模型,已经有相当多的介绍了,譬如文献[60,64]。在这里,主要想聊一下主题模型的应用以及最新进展(考虑到LD转载 2016-08-04 11:22:13 · 8570 阅读 · 0 评论 -
语义分析的一些方法(一)
原文转自这里语义分析,本文指运用各种机器学习方法,挖掘与学习文本、图片等的深层次概念。 wikipedia上的解释:In machine learning, semantic analysis of a corpus is the task of building structures that approximate concepts from a large set of documents(转载 2016-08-03 18:49:56 · 12105 阅读 · 0 评论 -
word2vec 中的数学原理详解-基于 Negative Sampling 的模型
转自:http://blog.youkuaiyun.com/itplus/article/details/37998797我之前写的是基于Hierarchical Softmax的模型。而在word2vec中,还有一种基于Negative Sampling的模型。我虽然没写,但是觉得这种方法还是蛮有用的,所以把别人写的资料贴上来,便于复习转载 2016-07-20 17:35:02 · 8007 阅读 · 0 评论 -
自己动手写word2vec (四):CBOW和skip-gram模型
CBOW和skip-gram应该可以说算是word2vec的核心概念之一了。这一节我们就来仔细的阐述这两个模型。其实这两个模型有很多的相通之处,所以这里就以阐述CBOW模型为主,然后再阐述skip-gram与CBOW的不同之处。这一部分的代码放在pyword2vec.py文件中1.CBOW模型之前已经解释过,无论是CBOW模型还是skip-gram模型,都是以Huffman树作为基础的。而Huffm原创 2016-07-18 16:54:20 · 84101 阅读 · 23 评论 -
自己动手写word2vec (三):构建Huffman树
这一部分将解释Huffman树的构造方法,并说明了如何根据Huffman树来产生对应的二进制编码。这部分的代码放在HuffmanTree.py中Huffman树的构造Huffman树的构造方法与Huffman编码密切相关。 具体的做法可以用下列伪码来描述while (单词列表长度>1) { 从单词列表中挑选出出现频率最小的两个单词 ; 创建一个新的中间节点,其左右节点分别是之前的两原创 2016-07-16 17:38:10 · 20963 阅读 · 6 评论 -
自己动手写word2vec (二):统计词频
在我之前写的word2vec的大概流程中,第一步的分词使用jieba来实现,感觉效果还不错。第二步. 统计词频统计词频,相对来讲比较简单一些,主要在Python自带的Counter类基础上稍作改进。值得注意的是需要去掉停用词。所谓停用词,就是出现频率太高的词,如逗号,句号等等,以至于没有区分度。停用词可以在网上很轻易找到,我事先已经转化成二进制的格式存储下来了。这一部分的代码放在WordCount.原创 2016-07-14 10:55:24 · 20581 阅读 · 0 评论 -
自己动手写word2vec (一):主要概念和流程
word2vec 是 Google 于 2013 年开源推出的一个用于获取词向量(word vector)的工具包,它简单、高效,因此引起了很多人的关注。我在看了@peghoty所写的《word2vec中的数学以后》(个人觉得这是很好的资料,各方面知识很全面,不像网上大部分有残缺),为了加深理解,自己用Python实现了一遍。贴在我的github上系列所有帖子 自己动手写word2vec (一):原创 2016-07-11 22:35:14 · 61595 阅读 · 27 评论 -
THUCTC源码解读(四)
LiblinearTextClassifier我认为LiblinearTextClassifier是整个分类器中最核心的模块,实现了训练,分类等功能。LiblinearTextClassifier实现的是TextClassifier的接口,实现了TextClassifier中定义的 addTrainingText, train, saveModel, loadModel, classify, sa原创 2016-05-23 21:15:39 · 4162 阅读 · 2 评论 -
THUCTC源码解读(三)
Term类Term也是一个非常简单的类,是文档向量(DocumentVector)的基本组成部分,一个Term表示词典中的一个词。 存储的变量只有id和weight, id表示该Term代表的词在词典中的id,而weight表示该词在文档向量中的权重。此外,Term的内部类TermIdComparator还实现了Comparator接口,使得java能够对Term数组进行排序。public cla原创 2016-05-22 11:53:35 · 3491 阅读 · 2 评论 -
THUCTC源码解读(二)
在通过Demo初步了解了THUCTC的用法以后,开始深入探究THUCTC的结构,了解实现方式。只要了解了代码结构,才能了解背后的原理和优化方法,也方便在此基础上做出自己的改进。THUCTC的主要原理首先,会将训练文本进行分词处理,然后进行词频统计,通过统计词频和包含该词的文档频率,利用卡方(Chi-Square)检验来选择出特征词,并以此为依据构造文档向量(DocumentVector),词向量中的原创 2016-05-18 21:24:45 · 3397 阅读 · 0 评论 -
THUCTC源码解读(一)
THUCTC(THU Chinese Text Classification),是由清华大学自然语言处理实验室推出的中文文本分类工具包,能够自动实现用户自定义的文本分类语料的训练、评测、分类功能。THUCTC中选取二字串bigram作为特征单元,特征降维方法为Chi-square,权重计算方法为tfidf,分类模型使用的是LibSVM或LibLinear。THUCTC对于开放领域的长文本具有良好的普原创 2016-05-16 23:08:52 · 7066 阅读 · 25 评论 -
中文分词词性对照表
汉语词性对照表[北大标准/中科院标准]词性编码词性名称注 解Ag形语素形容词性语素。形容词代码为 a,语素代码g前面置以A。a形容词取英语形容词 adjective的第1个字母。ad副形词转载 2016-04-14 14:24:37 · 2279 阅读 · 0 评论