Je suis toujours là!

好久不写博客了,今天更新一下。

看到上次博客停留在2019年,正是这年,我和朋友几位开始打造TAGWORD,全身心扑在上面了。

这几年成长了不少,不管是能力上,还是商业逻辑上,一直在不断突破自己的边界,不过做成并非易事,努力过了。

后续也将慢慢恢复博客更新,我一直有关注博客的数据,感谢各位网友的访问。

Ubuntu虚拟服务器无法联网的问题处理

这次的断网问题可能比较特殊,记录一下对应的处理方案。

服务器Ubuntu 18.04安装Python 3的时候,发现有多个版本的Python被安装了,这时候为了做到具体的控制,所以将Python全删除了一遍,也好像因此造成了系统网络的问题。

重启后的第一结果是ssh连接超时,由于服务器使用了阿里云ECS,可以通过“控制台”远程连接服务器,这个连接可以理解为本地操作。

连上之后,有一些坑,还卸载了openssh-server,在重新安装openssh-server的时候,发现一直无法连上软件服务器,尝试用ifconfig检查联网,才发现网卡消失,没有任何的连接。

检查/etc/network/interfaces,发现配置都没有问题,通过ifconfig -a,能找到网卡eth0,这个时候使用dhclient eth0,来获取ip地址,解决联网问题。

但是重启服务器后,发现又无法联网,服务器不可能每次重启后都要手动的获取一下IP,这个问题需要解决一下,之前尝试通过ifup eth0启用网卡的时候发现ifup没有安装,最后就通过sudo apt-get install ifupdown解决了这个问题,蛮神奇的,大概是什么依赖包因为安装了这个之后也一起安装了吧。

所以本文就对这次断网处理做个记录。

Ubuntu下MongoDB版本的升级

MongoDB从3.4到3.6到4.0的升级,是一个逐步完成的过程,需要运行每个版本的服务器程序做调整。下面给出的是一个逐步升级的方案,同时给出了各个版本的阿里云源,方便国内使用。

使用MongoDB好几年,服务器版本自最后一次升级一直停留在3.4版本。MongoDB版本已经出了3.6和4.0两个版本。这次服务器版本升级到Ubuntu 18.04,顺便就把MongDB也升级一下。

MongoDB从3.4到3.6到4.0的升级,是一个逐步完成的过程,需要每个版本的服务器程序运行做调整。下面给出的是一个逐步升级的方案,已经对应的阿里云源,方便国内使用

Continue reading “Ubuntu下MongoDB版本的升级”

服务器维护

本次服务器维护,将原来的一堆杂乱的资料重新整理了。但是出了些差错,之前的博客图片在备份的时候没有保存成功,好在数据库全保存了,不然文字图片都没了那是灾难。

本次维护会影响到之前推出的一些关键词工具的使用,会尽快恢复使用的,请随时关注博客的更新。

pymongo中find_one和find的效率

在Mongodb中,如果想检查一个文档是否存在,最高效的方法应该是使用find()+count(),而不是使用find_one()。

在Mongodb中,如果想检查一个文档是否存在,最高效的方法应该是使用find()+count(),而不是使用find_one()。

一般来说,我们第一感觉会认为find_one()最高效,但是find_one()每次查找会同时读取文档,这相比find()返回一个cursor,会慢不少。

David Mytton,在《Checking if a document exists – MongoDB slow findOne vs find》 (2013),指出了这个区别。

在我目前使用的pymongo 3.7.2中,无法像其文中所述,使用limit()判断返回的cursor是否存在,而需要count()判断返回的cursor是否包含文档。

因此,使用

db.collection.find({"username":"abc"}).count()
db.collection.find({"username":{"$in":usernames}).count() # 如果usernames是一个列表

来替代:

db.collection.find_one({_id: "myId"}, {_id: 1})

 

CNN文本分类数据不平衡的处理

用CNN做文本分类有一段时间了,关于训练数据不平衡的问题,我一直使用一个简单的方法,复制样本数据少的类别,在训练的时候,每个mini-batch都能相对均匀的抓取每个类别的信息。

今天一个偶然,去查了查CNN数据不均衡的问题,发现网上资料不少,主要围绕过采样的方法,看了下定义,原来就是我的这个操作方式,这种方式不适合在SVM里面使用,因为数据表现的信息恒定不变,可是为啥在CNN里面效果好呢?复制样本并没有添加任何的信息。只是为了让mini-batch更均衡的使用每个类别数据。

跟着疑问,追逐mini-batch的痕迹,在梯度下降的时候,由于计算量和机器的限制,无法一次性读入所有数据,而1个样本1个样本的处理,根本无法收敛,采用mini-batch,可以找到合适的下降步长和方向,快速收敛。同时,我们在使用mini-batch的时候,是用的sample batch,每一个batch,随机从总训练样本中抽取,这样每一个batch在梯度下降中的表现就不一样了。说到这,应该能联系上过采样在CNN中的好处了,一方面较为均匀的分配给每一个batch每一类别的信息,另一方面,增加了mini-batch的多样性,梯度下降能更好的找到最优或局部最优解。

当然,最好的方式还是增加信息量,即样本多样性,让模型的准确率更高,这个就是数据量大的说法了。

下次有机会做个对比实验。

 

 

关键词提取工具

发布一个关键词提取工具的在线版本,希望能给有需要的朋友提供便利,可以生成词云,也有详细的关键词和权重,这个工具的另外一个特性是提取的词会将高频的词组也提出,也因此存在一些非词组的词被自动提出),好处是通过关键词(或词组)能更清晰的看到文本的特点。

 

由于服务器性能有限,提交文本的长度最大为一万个字,每天工具使用次数上限为一万词,不过顶不住大家使用的压力的话,会下调,可以看通知。

传送门:关键词提取

有什么问题可以留言!

Nodemcu、无线射频和Wifi实现家庭灯光控制

之前参与智能音箱的项目,做语义理解,但硬件方面,实在是小白,这段时间腾出些时间,折腾下硬件,把家中的灯光整体改造一下。这篇文章从设计、硬件、软件、云服务、手机应用5个方面记录了这次改造中所获取的信息以及相关的程序代码。最终构建了一个通过手机控制和传统控制兼容的智能灯光。

项目地址
https://github.com/Ushiao/smartlife

Continue reading “Nodemcu、无线射频和Wifi实现家庭灯光控制”