博客

  • Ubuntu下MongoDB版本的升级

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

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

    (更多…)
  • 服务器维护

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

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

  • pymongo中find_one和find的效率

    在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

    (更多…)

  • 闻香

    花就在那,只有走近才能闻到花香

  • 词频、互信息、信息熵发现中文新词

    新词发现任务是中文自然语言处理的重要步骤。新词有“新”就有“旧”,属于一个相对个概念,在相对的领域(金融、医疗),在相对的时间(过去、现在)都存在新词。文本挖掘会先将文本分词,而通用分词器精度不过,通常需要添加自定义字典补足精度,所以发现新词并加入字典,成为文本挖掘的一个重要工作。
    (更多…)

  • 开始用python3

    开始用python3,忘记codecs

    从python官网下载安装包直接安装,mac会配置好python3的环境变量,测试是否安装成功在命令行输入:
    python3

    设置终端的python指令,直接链接python3

    vim ~/.bash_profile:
    alias python='python3'

  • Seq2Seq和MTCS实现的对话系统

    Seq2Seq模型和蒙特卡洛搜索树(简称:MTCS)实现的对话系统,是一个信息检索的对话系统,seq2seq可以生成句向量,再通过欧式距离匹配历史对话中距离最近的问句,给出该问句的回答,同时对话框架采用蒙特卡洛搜索树,问答对来自于搜索树上的各个节点,因此可以实现前后文的对话,属于一种非理解式的多轮对话。

    (更多…)