- 博客(685)
- 资源 (14)
- 收藏
- 关注
原创 卷积神经网络文本分类
前言卷积神经网络(CNN)在图像处理领域取得了很大的成绩,它的卷积和池化结构能很好提取图像的信息,而在 NLP 领域循环神经网络(RNN)则使用的更多,RNN 及其各种变种因拥有记忆功能使得它们更擅长处理上下文。但 NLP 领域很多方面使用 CNN 取得了出色的效果,比如语义分析、查询检索、文本分类等任务。这篇文章看看如何用 CNN 进行文本分类。模型结构模型结构可以通过下图一层层...
2018-03-24 10:14:23 22571 10
原创 mysql协议
文章列表 mysql 协议的服务端握手包及对其解析 mysql 协议的认证包及解析 mysql 协议的OK包及解析 mysql 协议的错误包及解析 mysql 协议的退出命令包及解析 mysql 协议的ping命令包及解析 mysql 协议的初始化DB命令包及解析 mysql 协议的EOF包及解析 mysql ...
2018-03-20 09:27:28 1191
原创 本地方法怎么映射Java层的数据类型
前言Java 语言上定义了不同的数据类型,比如有基础类型int、double等等,还有所有类的父类Object等,这些都是 Java 层面的类型,而使用本地方法的处理过程需要有它们对应的类型。大概的流程Java 层编写的本地方法,被编译器编译为字节码,字节码将按照规范将不同类型的参数给记录到 class 文件中,比如 B 表示 byte、I 表示 int、J 表示 long 等等。...
2018-03-16 08:57:55 775
原创 文本分析——分配单词权重
前言文本处理中很多时候会需要给每个单词分配权重,有了权重以便后续进一步处理。常用的算法主要是TF-IDF。TFTF,即Term Frequency。我们可以将文档看成由若干词(term)组成,那么文档中某个term出现的频率就是TF。词频和词权重存在关系,可以用来作为词权重的衡量因素之一。IDFIDF,即Inverse Document Frequency。TF算法存在...
2018-03-13 08:50:27 3080
原创 System.arraycopy为什么快
前言在 Java 编程中经常会遇到数组拷贝操作,一般会有如下四种方式对数组进行拷贝。 * for遍历,遍历源数组并将每个元素赋给目标数组。 * clone方法,原数组调用clone方法克隆新对象赋给目标数组,更深入的克隆可以看之前的文章《从JDK角度看对象克隆》。 * System.arraycopy,JVM 提供的数组拷贝实现。 * Arrays.copyof,实际也是调用Syste...
2018-03-10 08:25:14 8327 2
原创 近期的爬虫工作杂谈
前言最近在做自然语言理解处理相关的东西,主要是信息抽取方面的需求,由于没有好的公开数据集用作训练及测试,于是只能先自己去权威平台上爬取收集数据,所以这就涉及到了爬虫。关于语言写爬虫用什么语言?由于我较熟且常用的大语言是 java、c++ 和 python。所以用这三种语言写爬虫其实都可以很快写出来,之前写爬虫较多用 java,现在觉得在小项目且要求快速实现的场景下用 python ...
2018-03-06 08:59:07 1284
原创 从JDK源码看Java域名解析
前言在互联网中通信需要借助 IP 地址来定位到主机,而 IP 地址由很多数字组成,对于人类来说记住某些组合数字很困难,于是,为了方便大家记住某地址而引入主机名和域名。早期的网络中的机器数量很少,能很方便地通过 hosts 文件来完成主机名称和 IP 地址的映射,这种方式需要用户自己维护网络上所有主机的映射关系。后来互联网迅猛发展起来,hosts 文件方式已经无法胜任,于是引入域名系统(DN...
2018-03-03 08:44:37 2862
原创 智能算法之隐马尔可夫模型(HMM)
前言前面的《马尔科夫模型》主要是研究能直接观察到的序列的概率问题,通过马尔科夫假设能建立起马尔科夫链,从而解决一些序列问题。但有时候观察的对象并不是我们待处理的目标对象,它的规律隐含在观察对象中,观察的事件和隐含事件存在一定的相关关系,这时候就要用到隐马尔科夫模型(HMM)。比如nlp中常见的词性标注任务就经常用HMM,其中显状态就是单词,而隐状态为词性,通过我们观察到的单词序列去标出隐含...
2018-02-27 08:31:53 810
原创 从JDK角度看对象克隆
对象克隆对象克隆其实是很常见的操作,它完成的功能是将现有对象内容(属性)拷贝到新的对象中,得到的是一个新的对象,而并不只是一个对象引用。其实对于属性不多的对象我们可以直接通过编写代码逐一属性复制,比如我们可以直接 new 一个新对象,然后通过 set 方法将属性值一个个设置进去。但这种做法我们也是比较不屑,看起来不够高端,而且字段一多就会造成代码冗长。另外,可能有些私有变量也无法这样拷贝,...
2018-02-23 08:34:09 1684
原创 智能算法之马尔可夫模型
前言可能大家更常见到隐马尔科夫模型(HMM),马尔科夫模型可以看成是一个更基础的模型,它是对能直接观察到的事件进行建模,所以与HMM相对应,有时也叫它为显马尔科夫(VMM)。马尔科夫模型要处理的是序列问题,核心思想就是统计所有样本的过程,得到系统中状态之间的转移概率。马尔可夫过程马尔可夫过程是一个随机过程,系统从一个状态到另外一个状态存在转移概率,而转移概率仅通过前一状态来计算出来...
2018-02-10 09:25:01 1185
原创 HTTPS杂记
交互过程主要缺点网络耗时(比HTTP多了交互次数)。加解密耗时。比HTTP慢几百毫秒以上,页面加载时间增加了50%,增加10%到20%的耗电耗时分析可能浏览器需要由http跳转到https的耗时,用户使用http需要服务端返回302强制跳转https。接着经过某种机制多次交互协商得到通信密钥,并且还会对证书的身份认证。可能浏览器需要到证书机构查询证书状态。可...
2018-02-07 09:08:05 902
原创 一图简看智能聊天机器人的设计
(早前的一个智能聊天机器人设计,实际使用中已经改了很多了。)简述主要分三块: * SuperRobot 框架主体。 * 自然语言理解系统。 * 词向量Trainer。SuperRobotAliceBot负责闲聊,采用AIML Engine,属于rulebased。闲聊语句通过后台输入到DB。ServiceBot负责业务QA,Matcher负责匹配工作。自定
2018-02-03 10:19:59 7038
原创 细看Java序列化机制
概况在程序中为了能直接以 Java 对象的形式进行保存,然后再重新得到该 Java 对象,这就需要序列化能力。序列化其实可以看成是一种机制,按照一定的格式将 Java 对象的某状态转成介质可接受的形式,以方便存储或传输。其实想想就大致清楚基本流程,序列化时将 Java 对象相关的类信息、属性及属性值等等保存起来,反序列化时再根据这些信息构建出 Java 对象。而过程可能涉及到其他对象的引用,所
2018-01-31 08:35:06 985
原创 机器学习之决策树
前言决策树是很常见的机器学习分类算法,竟然叫决策树,那么它的模型其实就像树一样。通过对样本集的学习,挖掘出有用的规则。对于程序员来说或许以条件语句来看就更好理解了,决策树可以看成是多个if then条件语句的集合。这种模型等同于我们写的条件语句,所以它的预测分类速度是很快的。例子来个例子了解下决策树分类过程,以女生相亲挑“高富帅”为例吧,遇到已婚的肯定是不交往了,在未婚的情况下接着
2018-01-28 10:03:06 1091 1
原创 Tomcat内核、集群、参数及性能
主题简介:内核实现原理 分布式集群生产部署关键参数性能监控和分析一、内核实现原理HTTPWeb服务器与浏览器之间以HTTP协议通信,浏览器要访问服务器即向服务器发送HTTP请求报文。如图,此处用get方法访问了localhost的8080端口的Web、Index、JSP,服务器返回200状态码并将一些HTTP报文返回到客户端。HTTP报文从图中可以看到
2018-01-24 10:34:54 2295 3
原创 机器学习之支持向量机(SVM)
SVMSVM 即支持向量机,常用于二分类模型。它主要的思想是: 1. 它是特征空间上间隔最大的线性分类器。 2. 对于线性不可分的情况,通过非线性映射算法将低维空间的线性不可分的样本映射到高维特征空间,高维特征空间能够进行线性分析。结构风险对于指定的损失函数,根据一定的样本集就能根据这些样本来计算经验风险,而经验风险最小化就是根据样本集来最小化经验风险。假如我们能获取到所有
2018-01-20 10:06:01 760
原创 我的2017年文章汇总——Java并发篇
近期准备把过去一年写的文章按照分类重新整理推送一遍,包括:“分布式”、“机器学习”、“深度学习”、“NLP”、“Java深度”、“Java并发核心”、“JDK源码”、“Tomcat内核”。本篇推送java并发相关文章。从JDK源码角度看并发的原子性如何保证从JDK源码角度看java并发线程的中断从JDK源码角度看并发锁的优化从JDK源码角度看线程的阻塞和唤醒从JDK源码角度
2018-01-16 19:51:05 3273
原创 2017文章汇总——Java并发篇
从JDK源码角度看并发的原子性如何保证从 JDK 源码角度看 java 并发线程的中断JDK源码角度看并发锁的优化从JDK源码角度看线程的阻塞和唤醒从JDK源码角度看并发...
2018-01-16 19:32:39 179
原创 我的2017年文章汇总——自然语言处理篇
近期准备把过去一年写的文章按照分类重新整理推送一遍,包括:“分布式”、“机器学习”、“深度学习”、“NLP”、“Java深度”、“Java并发核心”、“JDK源码”、“Tomcat内核”。本篇推送nlp相关文章。基于典型相关分析的词向量来自麻省理工的信息抽取如何用机器学习对文本分类循环神经网络如何使用中文维基百科语料深度学习的Attention模型TensorFlo
2018-01-14 11:41:30 2957
原创 2017文章汇总——自然语言处理篇
基于典型相关分析的词向量来自麻省理工的信息抽取如何用机器学习对文本分类循环神经网络如何使用中文维基百科语料深度学习的Attention模型TensorFlow实现seq2...
2018-01-14 11:15:14 161
原创 从JDK角度认识枚举enum
前言对于比较稳定的值集合,Java 提供了枚举来定义,通过它可以很方便管理集合。那么 Java 的枚举是通过怎样的机制实现的?本文将从 JDK 角度来看看枚举的原理。定义枚举使用很简单,比如定义一个表示“环保”、“交通”、“手机”三个值的集合,那么就可以直接定义如下,然后可直接 Labels.ENVIRONMENT 使用,public enum Labels { E
2018-01-12 09:04:12 1534
原创 基于典型相关分析的词向量
本文首发于雷锋网前言在NLP领域中,为了能表示人类的语言符号,一般会把这些符号转成一种数学向量形式以方便处理,我们把语言单词嵌入到向量空间中就叫词嵌入(word embedding)。比如有比较流行的谷歌开源的 word2vec ,它能生成词向量,通过该词向量在一定程度上还可以用来度量词与词之间的相似性。word2vec采用的模型包含了连续词袋模型(CBOW)和Skip-Gram模
2018-01-09 16:49:10 2441
原创 我的2017年文章汇总——JDK源码篇
2018已经开始,可能还有360天结束。Eventually a single thing can only get so big. You need to do something else.近期准备把过去一年写的文章按照分类重新整理推送一遍,包括:“分布式”、“机器学习”、“深度学习”、“NLP”、“Java深度”、“Java并发核心”、“JDK源码”、“Tomcat内核”。本篇推
2018-01-07 14:08:09 3746
原创 2017文章汇总——JDK源码篇
2018已经开始,可能还有360天结束。 Eventually a single thing can only get so big. You need t...
2018-01-06 10:53:13 161
原创 服务器模型——从单线程阻塞到多线程非阻塞(下)
前言的前言服务器模型涉及到线程模式和IO模式,搞清楚这些就能针对各种场景有的放矢。该系列分成三部分: * 单线程/多线程阻塞I/O模型 * 单线程非阻塞I/O模型 * 多线程非阻塞I/O模型,Reactor及其改进前言这里探讨的服务器模型主要指的是服务器端对I/O的处理模型。从不同维度可以有不同的分类,这里从I/O的阻塞与非阻塞、I/O处理的单线程与多线程角度探讨服务器模型。
2018-01-04 09:14:01 1221
原创 我的2017年文章汇总——机器学习篇
2018,你跟自己做了约定了吗?为了遇见更好的自己。近期准备把过去一年写的文章按照分类重新整理推送一遍,包括:“分布式”、“机器学习”、“深度学习”、“NLP”、“Java深度”、“Java并发核心”、“JDK源码”、“Tomcat内核”。本篇推送机器学习相关文章。强化学习机器学习之条件随机场(CRF)隐马尔可夫模型的Viterbi解码算法线性回归之最小二乘法k-means聚类算法机器学习之层次聚类
2017-12-31 13:02:58 4159 2
原创 机器学习之牛顿法
泰勒公式首先看泰勒公式,对于函数,如果函数平滑且某点存在各阶导数,则可以用一个多项式来描述该点邻域的近似值。公式如下:牛顿法牛顿法一般用来求解方程的根和求解极值。数值优化算法除了梯度下降法外还有比较常用的一种方法是牛顿法。对于非线性方程,可以用牛顿迭代法进行求解,它收敛速度快。基本思想是:对于非线性函数f(x),根据泰勒公式得到x附近某个点x k x_{k}展开的多项式可用来近似函数f(x)的值,
2017-12-31 12:53:43 1259
原创 2017文章汇总——机器学习篇
2018,你跟自己做了约定了吗?为了遇见更好的自己。 近期准备把过去一年写的文章按照分类重新整理推送一遍,包括:“分布式”、“机器学习”、“深度学习”、“N...
2017-12-31 09:51:42 145
原创 我的2017年文章汇总——Java及中间件篇
2018即将到来,大家看着2017给自己制定的计划有没有感慨?当你觉得过去一年没有什么进步时,那么请行动起来,能开始总是好的。近期准备把过去一年写的文章按照分类重新整理推送一遍,包括:“分布式”、“机器学习”、“深度学习”、“NLP”、“Java深度”、“Java并发核心”、“JDK源码”、“Tomcat内核”。本篇推送Java及中间件相关文章。volatile足以保证数据同步吗JVM层对jar包字
2017-12-29 09:22:59 5253
原创 如何让你的传输更安全——NIO模式和BIO模式实现SSL协议通信
对于SSL/TLS协议,如果要每个开发者都自己去实现显然会带来不必要的麻烦,正是为了解决这个问题Java为广大开发者提供了Java安全套接字扩展——JSSE,它包含了实现Internet安全通信的一系列包的集合,是SSL和TLS的纯Java实现,同时它是一个开放的标准,每个公司都可以自己实现JSSE,通过它可以透明地提供数据加密、服务器认证、信息完整性等功能,就像使用普通的套接字一样使用安全套接字,
2017-12-29 09:14:18 1477
原创 集群RPC通信怎么做
RPCRPC即远程过程调用,它的提出旨在消除通信细节、屏蔽繁杂且易错的底层网络通信操作,像调用本地服务一般地调用远程服务,让业务开发者更多关注业务开发而不必考虑网络、硬件、系统的异构复杂环境。RPC过程先看看集群中RPC的整个通信过程,假设从节点node1开始一个RPC调用, 1. 先将待传递的数据放到NIO集群通信框架中; 2. 由于使用的是NIO模式,线程无需阻塞直接返回; 3. 由于与集
2017-12-29 09:05:26 1495
原创 2017文章汇总——Java及中间件
2018即将到来,大家看着2017给自己制定的计划有没有感慨?当你觉得过去一年没有什么进步时,那么请行动起来,能开始总是好的。 近期准备把过去一年写的文章按...
2017-12-28 19:30:00 142
原创 服务器模型——从单线程阻塞到多线程非阻塞(中)
前言的前言服务器模型涉及到线程模式和IO模式,搞清楚这些就能针对各种场景有的放矢。该系列分成三部分: * 单线程/多线程阻塞I/O模型 * 单线程非阻塞I/O模型 * 多线程非阻塞I/O模型,Reactor及其改进前言这里探讨的服务器模型主要指的是服务器端对I/O的处理模型。从不同维度可以有不同的分类,这里从I/O的阻塞与非阻塞、I/O处理的单线程与多线程角度探讨服务器模型。
2017-12-26 10:34:19 3450
原创 我的2017年文章汇总——深度学习篇
2017快过完了,大家过去一年收获如何?不管怎样,保持好心态,未来不迎,当下不杂,既过不恋。近期准备把过去一年写的文章按照分类重新整理推送一遍,包括:“分布式”、“机器学习”、“深度学习”、“NLP”、“Java深度”、“Java并发核心”、“JDK源码”、“Tomcat内核”。本篇推送深度学习相关文章。LSTM神经网络GRU神经网络循环神经网络卷积神经网络深度学习的seq2seq模型TensorF
2017-12-23 11:22:22 3458 1
原创 2017文章汇总——深度学习篇
2017快过完了,大家过去一年收获如何?不管怎样,保持好心态,未来不迎,当下不杂,既过不恋。 近期准备把过去一年写的文章按照分类重新整理推送一遍,包括:“分...
2017-12-23 08:51:54 151
原创 服务器模型——从单线程阻塞到多线程非阻塞(上)
前言的前言服务器模型涉及到线程模式和IO模式,搞清楚这些就能针对各种场景有的放矢。该系列分成三部分: * 单线程/多线程阻塞I/O模型 * 单线程非阻塞I/O模型 * 多线程非阻塞I/O模型,Reactor及其改进前言这里探讨的服务器模型主要指的是服务器端对I/O的处理模型。从不同维度可以有不同的分类,这里从I/O的阻塞与非阻塞、I/O处理的单线程与多线程角度探讨服务器模型。对于I/O,可以分
2017-12-22 09:21:12 1870
原创 从JDK源码看字节流和字符流
在各种 IO 中都会涉及到流的概念,比如网络 IO、磁盘IO、内存IO或其他设备IO,于是抽象出流概念,可以分为两大类:输出流和输入流。有了这些抽象就能很方便表达网络从某端传输到另外一端,或对磁盘进行读写操作。而 Java 还分出字节流和字符流,对字节和字符提供了方便的操作。从JDK源码看InputStream从JDK源码看OutputStream从JDK源码看Writer从JDK源码看Reader
2017-12-19 09:45:18 1594
原创 从JDK源码看Reader
概况Reader 是一个用于读字符流的抽象类,它将一些相通的读相关操作抽象到此类,方便各种读操作类的实现。一般来说子类只需要实现它的 read 和 close 两个方法,但如果有需要还可以重写 Reader 提供的公共方法。JDK 在 Reader 的基础上实现了很多有用的 xxxReader ,包括 BufferedReader、CharArrayReader、FilterReader、Inpu
2017-12-17 16:09:26 2724
原创 中文文本相似度的研究有什么用
前言人与计算机的交互过程中,如果能提供人类的自然语言形式来进行交流,那人与计算机就能更加亲密友好。而要实现这一机制就需要自然语言处理来处理,一般来说自然语言处理会涉及几个学科:计算机科学、语言学、统计学和数学等。不同语言的自然语言处理也存在差别,对于中文来说,很多时候都无法直接套用英语自然语言处理中相对成熟的理论。有很多基础工作也是需要我们自己去做,这就包括了中文相似度。相似度中文相似度按照长度可以
2017-12-15 16:51:05 4284
原创 自然语言处理的中文文本相似度
前言 人与计算机的交互过程中,如果能提供人类的自然语言形式来进行交流,那么人与计算机就能更加亲密友好。而要实现这一机制就需要自然语言处理来处理,一般来说自然语言处理...
2017-12-14 19:30:00 394
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人