每日笔记 20201021

警告
本文最后更新于 2020-10-21,文中内容可能已过时。

每日一图

来源:冯大辉微博

达克效应

技术

最近开发中需要用到词向量检索,主要用于寻找某一个词的近义词,然后做近义词替换,增加语料数量,提升模型的泛化性。之前腾讯公开了一个800万词200维的词向量,上次直接使用 Gensim 载入,足足花了将近半个小时,虽然可以通过减少载入词的数量来提升速度,但是对于我来说,在资源足够的情况下,一次性全部载入,然后做成在线服务随时调用是最好的了。

这个annoy库主要用于检索最近邻向量,具体的算法原理还没仔细看,性能应该比Gensim好很多,按照《高维临近向量查找工具annoy使用总结》这篇文章的说明进行操作,问题不大。需要注意的是,这篇文章用的词向量并不是腾讯公开的词向量,因此词向量维度以及树的深度这两个参数需要进行修改,修改后的核心代码如下:

python

from annoy import AnnoyIndex
import random
f = 200 # 这里是词向量的维度
t = AnnoyIndex(f)
dict = {}
with open('Tencent_AILab_ChineseEmbedding.txt','r',encoding='utf-8') as f:
    count = 0
    for line in f:
        result = line.split()
        if len(result)>10:
            count+=1
            word = result[0]
            dict[count] = word
            vector = list(map(eval, result[1:]))  # 需要将txt中的str格式vec转化为float格式
            t.add_item(count, vector)
t.build(50) # 这里配置树的深度,越深速度越慢,精度越高
t.save('Tencent_AILab_ChineseEmbeddingt.ann') # 存储为专用文件,供下次载入使用

# 以下为测试部分
u = AnnoyIndex(100)
u.load('Tencent_AILab_ChineseEmbedding.ann')
simi_id = u.get_nns_by_item(880, 20,include_distances=True)
id = simi_id[0]
score = simi_id[1]
print(simi_id)

接下来,我准备配合 FastAPI + Streamlit 将词向量的相关操作封装成API和网页,以供后边能够很方便的进行查询和检索,同时我也会将该项目开源,供有需要的同学自行部署使用。

非技术

这是一篇来自于“什么值得买”的文章,比较客观的介绍了人工智能的基础应用,文章下方的评论里有很多“这也算人工智能?!”的震惊体,但是这些其实就是人工智能。人工智能和深度学习这些概念被商业化之后,已经远远偏离了当初科学家们的对其的定义,而这个节目就在实实在在地告诉人们,人工智能到底是什么,它到底能做什么,以及,我们该如何面对人工智能的发展。

文章中的结尾这句话我觉得说的非常好,

“人工智能不是碾压人类,人和人工智能更多的是协同。帮助我们和孩子去解决曾经无法解决和改变的事情。它也让我们看到人类最不可替代的东西,给了我们未来培养孩子的重点和方向。”

这个网站看起来已经很成熟了,有需要的朋友可以在上边购买自己需要的服务

现在一天比一天冷了,昨晚半夜冻醒,早上起来在“什么值得买”里看到了这款国产的羽绒推荐,对比了一下参数和价格,1k价位可以接受,可惜双十一要等到11月1日才发货,没用几天北京开始供暖了,不划算,先种个草,以后有机会再拔草。