通用场景识别器

今天是新年第一天上班,然后想到这周只用上三天班就很开心。

由于Sequence Tagging需要大量的标注数据,我这边暂时没有数据源,所以今天下午就先用现有的标注数据集做了一个场景Softmax分类器。

原理十分简单,使用Word2vec (之后可能会考虑换成BERT,但是这两天BERT在我这里表现还不是很理想,所以先用顺手的工具搭建一下Demo)生成词向量。之后通过标注数据集合,将词表里所有的词分成以下几个大类(类别可以由具体的使用场景确定,我这里的分类主要是为了适配童话故事的情况)。

# 模型构建
model = Sequential([
Dense(32, input_dim=200),
Activation('relu'),
Dropout(0.1),

Dense(16, input_dim=32),
Activation('relu'),

Dense(9, input_dim=32),
Activation('softmax'),
])

用Keras搭建了一个最简单的多层感知机,加上Dropout,开始喂数据。最后可以达到96%左右的Accuracy,算是基本可以使用了。

 test loss:  0.09276254528926478
test accuracy: 0.9666666666666667

现在这套模型已经可以识别任意词的场景类别了。下一步就是使用Sequence Tagging找出描述场景的位置了。

隐含语义分析

最近在做NLP的一些工作。

遇到的问题是:Precisely detect scenario/weather/time/etc in a paragraph-level document.

对于这个问题,我作为一个NLP外行,首先想到的思路是建立相应的词表,然后对每一个Sentence进行Tagging。在完成Coding的工作后,在测试中效果还是可以的(毕竟用Word2Vec聚类建立了好大一份词表)。但主要的问题是Overtrigger,这个模型无法区分那些地方才是真正描述Target的,更无法理解一词多义的情况。

于是在第一版模型可以基本Cover住下游业务需求之后,我Mentor对Precision有了进一步的要求(手动GG)。

在想了好几天之后(其实主要时间都用来划水),我想了一个不太成熟的方案,先记下来等元旦过完了回来再和Mentor讨论一下:

  • 使用TF-IDF-Based Sequenced List取代完整的Word Segment List。
  • 使用BERT取代Word2vec进行Word Embedding。
  • 尝试使用Latent Semantic Analysis,进行第一轮无监督学习,总而获取到Sentence-level的Tagging information(说到底,还不是因为没有Labeler)。
  • 使用SVD左矩阵反推Word-level Influence Factor,生成NER training data(这一步的话,为了保证模型质量,估计还是得请Labeler帮忙看一下。这个样子的话,比从什么都没有标注要轻松一些)。
  • 尝试双向LSTM训练隐含序列,或者直接通过BERT Pre Trained Model 产出Word Embedding(反正BERT的Embedding是自带Context的,啦啦啦)。
  • 使用线性链的条件随机场进行Sequence Tagging。这一步的话,参考目前的NER模型,在Location/Person/Organization上有95+的F1

如果这几个流程可以按照预期来进行的话,那效果应该还是不错的。

Virtualenv pip update failure

很久之前就一直被pip的更新困扰了。由于Virtualenv自带的pip版本是10.1的,而现在的pip版本已经进化到了18,所以每次安装的时候都会被提醒要升级pip。

但是不知道为什么,pip在virtualenv里面的升级貌似会有报错。而且由于不升级的话,也不影响使用,所以也就一直没有升级。

今天实在受不了了,于是Google了一下解决的方法,其实只要强制升级一下就可以了(我估计是Python类型检查出的问题)。下面是更新命令:

If you can’t understand Chinese, and just want to update your pip in the virtialenv. Please ignore these blather, typing the following command and hit the Enter:

python -m pip install -U --force-reinstall pip

嗯,就是这么简单…

How to recapture my Oculus Home of Gear VR when I came back China

It has been more than one month that I came back my home country.

However, I recognized I have carried a Samsung Gear VR back until yesterday. It is a fancy equipment, but I met a bunch of trouble when I wanna restart it in China.

Firstly, everything looks normal…

I tried into the virtual space, and got something new. the scenario was seem like the old one, but only two applications can be shown (Samsung Gallery and Internet Browser).

The worst thing is that my library and App Store were vanished, which means I can’t download anything. So I uninstalled all applications and services which are VR-related. Technically, the behavior has been proved as a stupid idea…

Through some very struggle working, I finally recapture the original version of Oculus Home (Or the international version, in another word). Following are what I does:

  1. If you inserted a Chinese SIM card which was activated, the Oculus Home would identify it and then you will be forced updating to the Chinese version. That is the source of this problem.
  2. Now, inserting a oversea SIM card and deactivated your Chinese SIM card (If your phone has two slots of SIM card), and disabling your GPS.
  3. Open your VPN in order to downloading relevant applications and services.
  4. Inserting your phone to Gear VR. All the VR-related services would be updated to international version.
  5. The familiar picture will come back!

How to SUDO in Windows

You may be a senior user of Linux, and sudo is your lifestyle. However, how to use “sudo” in Windows except using right-click is still a problem for you probably.

Since I am working for Microsoft now, Windows operation system is the unique choice for me. Through a long and hard exploration, I finally figured out how to use “sudo” like in Linux in Windows prompt.

Here is the command for your reference:

runas /noprofile /user:Administrator "your command"

Then, You might be required to input your password like in Linux (U cannot see what you input too, so just typing…)

Red Brick

这个周末一直在琢磨去哪里玩,于是找了很多博物馆和美术馆的资料。

本来是想去国家博物馆的,但是感觉展出的主题都太红了,于是临时起意决定去美术馆转一圈。

最后选了一个看起来逼格很高的美术馆(事实证明,逼格确实很高)。正好房东的妹妹来玩,我们三个人一拍即合决定一起去美术馆玩。

我本来以为选择在朝阳区的场馆的话,应该就不用走太远的路了。但是这个美术馆让我见识到了朝阳区有多大,我们将近花了一个小时才到达目的地。

场馆里有很多超现实主义的作品,而且室外的风景也很不错,除了票价稍微有点小贵。

所以,最后,如果周末要和小姐姐出去玩又不知道去哪里的话,这里还真的是一个好地方:)

帝都十日

算算日子,来帝都已经有十天了。

不算工作的五天,大大小小的饭局约了有十多个。感觉减肥的大计又要暂时搁浅了。

之前在墨尔本报了健身房,疯狂跑步,基本上每天都可以轻一公斤的样子,最轻的时候甚至差点就要突破90大关了。但是最近各种吃吃吃,导致体重大有回升到一百的趋势。

然后工作其实还蛮轻松的。感觉整个小组是一个大的Scrum,然后我是一个小的Scrum team。每天只需要和Mentor沟通一下对好需求就可以了。

至于剩下的时间的话,就可以自由支配了。所以其实可以自己学到很多东西。虽说外面一直盛传微软不用加班,但是好歹要入乡随俗,STCA还是多多少少要加一点班的,不过范围全由自己掌握。

本来说上个周末要去圆明园和颐和园,但是时间总是不够用,和朋友玩了一会儿就没有时间去逛园子了。

周一刷朋友圈的时候看到Han也来了北京,原因竟然只是为了看升国旗,果然是思想觉悟超级高的党员。然后就愉快的和Han约了周四晚上的局。这应该也是我们第一次在国内见面吃饭。

上个周末和晓波约了周末去滑雪,感觉应该会很好玩,美滋滋。所以估计周末的另外一天我会抽出来去逛圆明园。

上周和这周的情况差不多就是这个样子了,希望假期在微软可以过的开心吧,顺便多学一点东西。

Cheers

Start Windows

这两天开始认真工作了。

由于代码仓库的权限一直没有审批下来,我昨天划了一天的水。

可能是因为巨硬的体量实在是太大了,各种流程的审批都有点慢。而且不知道问什么,感觉Check-in的引导工作也不是非常理想,很多东西都需要自己打电话去咨询,这无疑增加了沟通成本。

在其他方面,微软的东西做的还是可以的(除了经常性的exception之外)。就操作系统来说,在微软肯定是得用Windows的系统了,但是Windows真的是对开发人员不太友好,Shell好难用。

于是我默默的搜索了一波Windows效率工具… 希望可以稍微缓解一下现在尴尬的情况…

今天和豪翔约了午饭,希望可以请教前辈大佬的经验吧。

归来

到北京之后,才知道自己有这么多好朋友都在北京。

于是开启了天天约饭的任性模式。短短不到48个小时,就已经约了五六个局…

第一天早上和晓波去吃了金鼎轩,据说是北京现在唯一开门的24小时餐厅。菜式的话主要是以广式早茶为主,讲道理味道一般,但是赢在人家是怎么4小时营业的,可以满足我们这些深夜饥饿的灵魂。下午睡了一觉去了中关村,参观了一下微软大厦。本来想拍照一下微软的Logo,但是运气不好被一辆大货车挡住了,没有拍到。晚上在旁边的食宝街和白晨大吃特吃了一场,差点吃到让我对这个美食天堂失去兴趣。白晨在苏州街附近也找了一个实习,以后估计可以经常约饭了。

第二天去了头条面试。因为之前第一次预约的时间面试官有事,于是HR小姐姐特别认真负责的约到了我到北京的第二天现场面试。面试体验说实话不是特别理想,主要体现在一下几个方面:
1. 首先我得承认主要是我自己的责任,这次面试完全没有准备,如果准备一些概念题和Leetcode算法,那应该会好很多。
2. 我不太明白面试官为什么都想秀你一脸的感觉。在面试过程中面试官处于主导地位不错,但是如果一味为了炫技而去问一下明确表示不了解的问题貌似没有什么意义。
3. 很多问题都是名词解释类的问题。比如说你知道XXX吗?那XXX呢?这两个有什么区别啊?我对这种问题其实真的挺反感的。所有的系统框架都是人自己制定的,为什么不允许有别的理解呢?另一个方面,这种类型的问题看似可以很好的考察一个人的水平,但是只要来面试的人事先有过准备,看了这些问题的标准答案,那在面试的过程中真的是可以无往而不利。
虽说面试的感觉不是很理想,但是我也确实发现了我自己存在的一些问题。很多时候为了快速实现一个技术原型,我会使用大量的轮子,但并不会去深入了解具体的实现流程,所以以后一定要在技术深度上努力学习。
晚上去了望京找康凯学长和张冬妮&舒晓波约大烤鸭,饭店的名字叫局气,很有北京味。

然后就到了第三天,也就是今天。由于回国之后有了GFW,我所有G家的服务都用不了了。真的是非常的蛋疼。于是今天来咖啡厅找了一个位置,搭了一个梯子。查了一下这学期考试的成绩,也回复了一下Gmail的邮件。等会打算再看一看Vue.js的教程和GAN的生成模型。

明天和后天都约了小伙伴的局,能够见到好久不见的老朋友真的很开心。希望大家在北京的工作生活都一切顺利,Cheers!