自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 关于mybatis注解方式的坑

Mybatis推荐用注解方式替代XML方式进行开发,这样SpringBoot+Mybatis开发就能做到“零"XML。然而Mybatis的注解方式还存在着不少的坑,比如以下SQL语句@Select({ "<script>", "select t.day from t", "where ", "t.day in " + "<foreach item='d...

2020-04-28 13:34:27 486

原创 SpringBoot的web完整的异常处理

开发SpringBoot应用,往往需要定义全局的异常处理机制。在系统处理用户请求出现错误时,能够返回自定义的错误页面。错误信息页面设计错误页面可以采用freemarker的模板的形式(尽量在Java代码中处理业务逻辑,而将页面渲染尽量写在html或者html模板中)。Freemarker可在pom文件中引用。<dependency> <groupId>org.spr...

2020-04-16 17:35:23 554

原创 聊聊神经网络中的梯度法

简介在最优化问题求解的过程中,使用最多的迭代方法就是梯度法。比如针对最优化问题minxf(x)min_{\mathbf x} f(\mathbf x)minx​f(x)采用的梯度迭代的步骤为x=x−η∇f(x)\mathbf x = \mathbf x - \eta \nabla f(\mathbf x)x=x−η∇f(x)梯度法的优势在于抗"噪声"。即使每次求解的梯度并不是...

2020-04-04 14:18:17 1044

原创 springboot支持多邮件账号

springboot带有spring-boot-starter-mail包,可用于发送邮件。但是SpringBoot mail默认只能配置一个账号,为了支持多个账号,需要自定义IOC的机制。查看Springboot mail相关的源代码,发现邮件的配置主要是在类MailSenderPropertiesConfiguration里完成,这里会配置JavaMailSender和MailPropert...

2020-04-03 18:09:01 2020

原创 nginx tcp端口转发的配置-(用于作为邮件代理)

内网中有服务器需要通过nginx服务器作为代理,连接外网的smtp服务器发送邮件。查看nginx作为邮件正向和反向代理,均配置过于繁杂。想起来,外网的smtp服务器是采用ssl协议,本质上属于tcp流。因此,在nginx上配置tcp端口转发就可以解决这个问题了。在nginx的nginx.conf上添加以下配置。stream { server { listen 465; proxy_p...

2020-04-03 17:48:55 3396 4

原创 使用keras-bert进行中文文本分类+Google colab运行源码

前文介绍了BERT的原理。在实际应用中,BERT要比其理论本身要简单的多。这里我们利用Github的中文BERT预训练的结果(地址),进行实际的文档分类。数据集为了便于进行比较,文档分类的数据集来自Github的这个地址。该数据集使用了THUCNews的一个子集,使用了其中的10个分类,每个分类6500条数据。类别如下:体育, 财经, 房产, 家居, 教育, 科技, 时尚, 时政, 游戏,...

2020-03-21 22:38:29 4962 5

原创 Javascript解析html GET请求时的参数

在构建J2EE web的时候,MVC的请求通常有两种方案:浏览器请求直接发送到后端,后端的Servlet对请求进行解析,解析完后再将解析结果forward到某html template上,渲染显示;浏览器先请求静态网页,静态网页通过javascript脚本向后端的Servlet发送ajax请求,将后端返回的结果回填到网页上显示。本人一般习惯于采用第二种方案。第二种方案能更好的实现前后端的...

2020-03-18 19:30:59 832

原创 BERT模型介绍

背景BERT(原论文)结合了前文提到的技术(半监督学习、Transformer)。BERT的主要思路是构建一个神经网络,对大样本的数据进行无监督的训练,然后再将训练后的模型采用Fine tunning的方法去适配其它各种各样的小样本的有监督的训练场景中。以往的神经网络多是针对一个特定的场景从零开始训练出特定的模型,所以要训练出一个可靠的模型,需要耗费大量的数据获取和人工标注的工作。经过BERT...

2020-03-15 23:42:04 2615

原创 Java后端将网页完美转为图片的方法

最近遇到开发需求,需要将SpringBoot后端的一个H5网页,转换为图片,并发送到指定的接口上。思路是操作服务器本地的Chrome,访问网页再“截图”为图片。然而Java本身并没有合适的控制本地Chrome的API,而nodejs的puppeteer提供了可以控制headless chrome的API接口,其中就包括对网页进行截屏的API。因此,决定用Java控制nodejs完成网页转图片文件的...

2020-03-15 00:03:24 3401 1

原创 Transformer:NLP中RNN的替代方案

RNN应用中存在的问题是,每一个RNN Cell的state都取决于前一个RNN Cell的state,因此RNN很难采用并行计算,计算的速度往往较慢。但是RNN的优势是,能够依据attention利用输入句子的全部信息。所以就有人提出,如果只用attention,不用RNN是否可行,这就是2017年的一篇论文提出的解决方案(原文)。该神经网络的优势是,采用了非Recurrent的Encode...

2020-03-10 13:32:28 1401 1

原创 半监督学习(样本标注有限)条件下的NLP(Elmo,TagLM, ULMfit)

在进行NLP的时候,往往我们的训练集已标注的样本是有限,有大量的样本是没有标注的。这个时候的解决办法是对无标注的样本进行训练。一般采用的是语言模型,这样训练得到的参数是context-sensitive的。语言模型具体说明见前文RNN简介),再将训练的结果用作有监督的训练中,这就是近三年里研究比较多的领域。TagLM(原文)TagLM的原理如图所示:首先将所有样本在右侧,用==多层“双向”...

2020-03-09 22:25:00 1288 2

原创 基于字符的NLP

背景以往基于单词的NLP,一般是为要处理的词建立词向量空间,然后再对词向量进行NLP。这个处理会带来两个方面的问题是:对于出现频率比较低的词,建立的词向量有可能不准确无法处理不在单词表中的单词。比如网络上经常会出现一些新词,比如不明觉厉之类,英文的社交网络,还会出现比如loooooooooooooook之类的词。有些语言还会有合成词。比如德语就会有大量的合成词,如Lebensversic...

2020-03-07 23:00:29 440

原创 CNN在NLP中的应用

CNN最初是用于图像分类,提取图像的特征。CNN在图像里,采用的是2D的卷积,如图所示。而在NLP中,同样可以把要处理的一句话看成图像。可以将一句话中的多个词排成一列,每一行代表着对应的这个词的词向量。这样,也就把NLP的问题也变成了图像问题,NLP的分类问题也就可以应用图像分类所采用的CNN了。关于卷积当然在NLP的CNN中,采用2D卷积,“横向”挪动卷积核其实是没有意义的。因为词向量...

2020-03-05 10:25:29 1954

原创 SpringBoot+mybatis+Maven+Eclipse完整搭建流程以及一些坑的注意

搭建SpringBoot环境首先在Eclipse创建Maven工程。创建完后,在pom.xml里设置<groupId>com.xx</groupId><artifactId>xxx</artifactId><version>0.0.1-SNAPSHOT</version><packaging>war&lt...

2020-03-02 23:03:04 1032

原创 poi踩过的坑

最近使用java的poi库,做一些自动生成的excel报表,遇到了几个坑总结如下。关于删除excel的行比如poi提供了removeRow函数,Row removingRow = sheet.getRow(i);if (removingRow != null) sheet.removeRow(removingRow);但是removeRow只清空了对应row的数据,但是如果当前row...

2020-03-01 23:30:43 938

原创 oracle to_char和java decimalformat的显示百分数的示例

有需求:从oracle数据库里读取到的number,小数点后保留2位,整数位不变,并加上百分号。采用以下方法select to_char(0.556, 'FM999999999999990.00') || '%' from dual; # 0.56%select to_char(13.556, 'FM999999999999990.00') || '%' from dual; #13....

2020-02-21 10:54:01 479

原创 基于RNN的自动翻译的技术介绍-seq2seq+attention模型

机器自动翻译在2010年之前采用的是基于统计的方法。比如在英译中的应用中,模型为给定英文句子xxx,确定可能性最大的中文句子yyy,即arg⁡max⁡yP(y∣x)=arg⁡max⁡yP(x∣y)P(y)\arg \max_y P(y|x)=\arg\max_y P(x|y)P(y)argymax​P(y∣x)=argymax​P(x∣y)P(y)其中P(y)P(y)P(y)即为上文提到的...

2020-02-10 20:33:14 1286

原创 java properties文件加载包含反斜杠的问题

在java中,利用Properties.load()加载配置文件时,如果配置文件含有“\”,则会将反斜杠作为转义符处理,而不是作为正常字符,如配置文件conf/test.properties里有testkey = d:\temp\那么采用以下代码,就会出现问题 public static void main(String[] args) throws Exception{ Proper...

2020-02-07 11:59:55 2451 1

原创 RNN简介

N-gram语言模型N-gram语言模型研究的是,给定前n−1n-1n−1个词,判断第nnn个词应该是哪一个?比如:今天 的 天气 真 _______即给定词x(t−n+2),...,x(t)x^{(t-n+2)},...,x^{(t)}x(t−n+2),...,x(t)判断x(t+1)x^{(t+1)}x(t+1),即求下面的最大值P(x(t+1)∣x(t−n+2),...,x(t))=...

2020-02-04 21:22:54 1289

原创 三幅图简易说明神经网络的后向传播(Backward propagation)

神经网络的后向传播是在神经网络进行训练时,神经网络各层更新数值的方法。后向传播大致可以分为以下三种情况:在节点处相加的情况:节点会将传入的梯度值直接向后传播。在节点处相乘的情况:将输入端的值对调,并和传入的梯度值相乘。在节点处进行函数变换:对函数求导,并和传入的梯度值相乘。特别的,如果g=max()g=max()g=max(),那么只有达到了max的x的分量会传出梯度值,其它分量传出的梯...

2020-02-02 18:11:09 902

原创 关于矩阵微分的形状的简单说明-Jacobian form和Shape Convention

给定函数f:Rn×1→Rf:\mathbb{R}^{n \times 1} \rightarrow \mathbb{R}f:Rn×1→R,对函数f(x)f(\mathbf{x})f(x)求微分,即∂f/∂x\partial{f}/\partial{\mathbf{x}}∂f/∂x究竟是一个行向量还是一个列向量呢?个人理解,矩阵微分的关键仍然是对矩阵中的各个分量微分值,至于微分后组成什么形状,取决...

2020-02-02 17:32:02 526

原创 word2vec相关技术补充GloVe

前文介绍,共生矩阵的方法可以反映词之间全局的共生关系,这是CBOW和Skip-Gram不具备的。为了改进上述算法,有论文提出了采用GloVe的方法来求词向量。首先,要对语料库进行一遍扫描,求出共生矩阵XXX。其中Xi,jX_{i,j}Xi,j​为出现词iii的同时,也出现jjj的次数。注意到skip-gram算法中,我们已经针对中心词i和上下文词j,我们计算得到损失函数Li,jL_{i,j}Li...

2020-02-01 21:59:55 2295

原创 word2vec相关技术总结

进行NLP,首先要对要处理的文本进行分词,再对每一个词建立向量空间。简单的词向量-one-hot vector最简单的词向量可采用one-hot vector,对每个词用单位向量来进行表示。比如对所有的词w1w_1w1​, w2w_2w2​, … w∣V∣∈Vw_{|V|} \in Vw∣V∣​∈V,对其中的词wiw_iwi​,表示的词向量为(0,0,...,1,0,...0)T∈R∣V∣(0...

2020-02-01 21:01:53 241

原创 Properties的value值加密

现有需求,需要对配置文件里,敏感的字段进行加密,参考了properties文件加密的方法。使用时发现好处是,每次加密得到的密文都不一样,这样同样的value可以加密成不同的密码。为了支持在properties文件中,同时能读取明文的配置值和密文的配置值,采用了扩展Properties类的方法import java.io.IOException;import java.io.Unsupporte...

2020-01-17 15:57:51 484

原创 Java Properties配置的保存

Java Properties配置的保存调用现成的函数使用Properties自带的函数使用apache.common的 PropertiesConfiguration自己动手Java properties保存配置文件时,都会重写配置文件,而无法只更新配置文件的某一行。因此,涉及属性的配置修改,用sqlite的本地数据库来做还是最方便的,当然本地数据库的劣势是修改配置比较麻烦,得借助工具来改。...

2020-01-17 14:21:05 1480

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除