DAY05 日常

不知不觉变成了工作日记……确实,宅在家里除了吃喝玩,不就是工作(学习)。今天春节延期、开工日延后,鉴于14天的潜伏期,至少要元宵后才能正常上班了。。。
今天专门翻看了清华的《人工智能发展报告2019》中的信息检索与推荐一章,整理了一些关键的知识点,分享给大家:
- 信息检索
R.Baeza-Yates 教授在《现代信息检索中》中指出,信息检索主要研究如何为用户访问他们感兴趣的信息提供各种便利的手段,即:信息检索涉及对文档、网页、联机目录、结构化和半结构化记录及多媒体对象等信息的表示、存储、组织和访问,信息的表示和组织必须便于用户访问他们感兴趣的信息。
- 推荐系统
推荐系统是指信息过滤技术,从海量项目(项目是推荐系统所推荐内容的统称,包括商品、新闻、微博、音乐等产品及服务)中找到用户感兴趣的部分并将其推荐给用户,这在用户没有明确需求或者项目数量过于巨大、凌乱时,能很好地为用户服务,解决信息过载问题。
- 搜索+推荐=?
信息检索应用最广泛的就是搜索引擎,需要用户主动提供准确的关键词来寻找信息。但是比如当用户无法找到准确描述自己需求(兴趣)的关键词时,搜索引擎就无能为力了。而推荐系统则不需要用户提供明确的需求,它是通过分析用户的历史行为给用户的需求(兴趣)建模,从而主动推荐给用户能够满足他们需求(兴趣)的信息。
从某种意义上说,推荐系统和搜索引擎对于用户来说是两个互补的工具。
- 评价指标
搜索引擎通常基于 Cranfield 评价体系,整体上是将优质结果尽可能排到搜索结果的最前面,让用户以最少的点击次数、最快的速找到内容是评价的核心。而推荐系统的评价要宽泛很多,既可以用诸如 MAP(Mean Average Precision)的常见量化方法评价,也可以从业务角度进行侧面评价。
- 技术发展
目前不管是搜索还是推荐,都在往可解释的方向发展,具体体现为以下2个方面:
多任务可解释
将用户、产品、特征和观点短语等映射到同一向量空间,提取产品细粒度的个性化特征。
知识增强
利用结合知识库的记忆网络来增强推荐系统的特征捕获能力与解释性。
除了学习,我还为darksee.ai添加了400多个人工智能领域的tag。
以上为今日记录。

DAY04 习惯

分享一个段子

封城第四天了,由于路面禁止机动车行走,所以车更少了。今天附近的超市也关门了……
同样,今天抽空继续完善了这个假期的第一个业余项目,我把Tags的数据设计得更为细致,把上下位词关系(借鉴语言学)添加进去了,这样,我们可以表达“知识点”之间的覆盖范围大小,比如:
中文分词<分词
上位词的关系比较有用,因为一般只有1个,下位词就麻烦了,有可能非常多。所以,上位词的关系是建议设置的,下位词可设可不设。
然后,如何获取可以作为Tags的知识点呢?打算使用n-gram来从每天新增的内容里面计算出来。
- n-gram是什么
由于整个项目是nodejs的,所以这一块打算使用nodejs来实现,n-gram有一个nodejs的包,安装可以直接:
npm install n-gram
翻了下代码,也没几行,最关键的一句如下:
while (index--) { nGrams[index] = value.slice(index, index + n);};
举个例子,比如下面一段文本:

英伟达用RTX系列显卡的光线追踪技术,修复了颗粒感满满的登月录像……屏幕上的每个像素都是由实时光线追踪进入相机的路径生成的……

经过n-gram之后,然后统计词频:

'卡的光线': 1,
'的光线追': 1,
'光线追踪': 2,
'线追踪技': 1,
'追踪技术': 1,

可见,频率越高的,越可能是知识点(光线追踪)

但是有一个限制条件:

输入文本越多,计算结果越准确可信。

需要大量同类型的文本来计算。

今天还本来打算看下《囧妈》的,断断续续看了不到10几分钟,一会抽空继续看。
你看了ma ?


- DAY03 闭关敲代码

全国各地都开始加入防疫战线了,春节老老实实在家待着吧,吃好睡好,然后可以开始准备远程工作了。

今天我抽了点时间继续研究keystoneJS,发现Virtual这个fields,它可以干啥呢?

顾名思义,它是用来虚拟某字段的。此字段不会存储在数据库里。

示例代码:

//可以通过resolver来组合其他字段的数据,形成virtual的字段数据。keystone.createList('Example', { fields: { firstName: { type: Text }, lastName: { type: Text }, name: { type: Virtual, resolver: item => (`${item.firstName} ${item.lastName}`) }; }, },});
//除此之外,还可以请求api,来达到其他数据处理的目的。keystone.createList('Example', { fields: { movies: { type: Virtual, extendGraphQLTypes: [`type Movie { title: String, rating: Int }`], graphQLReturnType: `[Movie]`, graphQLReturnFragment: `{ title rating }`, resolver: async () => { const response = await fetch('http://example.com/api/movies/'); const data = await response.json(); return data.map(({ title, rating }) => ({ title, rating })); }, }, },});
关键是可以在字段里发起请求,利用此特性,我新增了个List:
- API 开放API的管理
利用virtual里发起请求,可以知道api目前的运行情况(是否正常),实时获取api的结果。
跟Knowledge类似,我们可以给API打上各种tags。

- DAY02 不一样的春节
今天大街上人流、车流明显更少,过江隧道开始封闭,周边城市也陆续封城。上海也对进入人员进行追踪、隔离。
同样是宅在家里,哪里都没去,除了吃、玩之外,我今天决定开始工作。
- keystoneJS v5
调研了一下cms的开源解决方案,cms:内容管理系统,提供一个易于使用的adminUI(管理界面),对内容进行增删改查。
除了UI之外,提供了api、有的还提供了更为好用的graphQL查询方式。
部分框架提供app的UI,部分没提供。最后选定了keystoneJS,体验了下,文档齐全,示例清晰,便于快速入门掌握。
尝试建立了一个小项目除了内容管理系统外,我会陆续集成darksee.ai的功能。
按照文档指引,我设置了3种List,分别是Knowledge、Tag、User。
- Knowledge用来存储内容
- Tag表达知识点的关系
- User控制用户权限
keystoneJS把graphQL的工具也提供了,非常方便,我趁此快速入门了graphQL。
- 总体架构
这个小项目打算作为mixlab无界社区的一款知识内容智能产品。
- 知识图谱
为了更好地呈现知识之间的关系,图谱是必备的技术,但由于是人工智能垂直领域的,所以暂时不需要图数据库,只需要一些图算法即可。
- 内容搜索引擎
为了满足源源不断的知识内容、降低人力,需要接入搜索引擎来获取每天的新内容。
- 提取知识
需要一个算法可以提取内容里的知识,并更新到图谱里。
一步步来,此产品第一个版本就只有知识内容,数据呈现没有好看的UI,只有json。有开源打算,召集设计师、程序员一起玩~感兴趣的社区小伙伴,可私信跟我说~

- DAY01 初遇
来武汉之前,官方的消息称只有十几例确诊,而且连续好几天没有新增消息。来了之后,情况就不一样了…
人生第一次遭遇封城,接下来几天做点记录。
武汉封城第一天,天气不好,下着小雨,街上没什么人和车。
快手捐了1亿给武汉,网易严选的口罩很便宜,百度上了个发热门诊地图,丁香医生上了个疫情追踪。
有人用所谓大数据分析了下武汉人口流动,其实不用分析,武汉是全国的交通大枢纽,辐射全国各地。看到几则消息,大致意思是本地的医院不收,只能飞往老家求医,医疗资源肯定急缺,人口本来就不少。
前几天本地的一个社区还举办万人聚会,还有今天还办了一个春节联欢,都不知道这些人是怎么想的?
除了刷各种手机信息之外,今天的日常主要是休息、看电视、吃零食、陪娃玩耍。
(0)

相关推荐