ids

使用BERT模型生成token级向量

谁说胖子不能爱 提交于 2019-11-28 06:41:04
本文默认读者有一定的Transformer基础,如果没有,请先稍作学习Transormer以及BERT。 相信网上有很多方法可以生成BERT向量,最有代表性的一个就是bert as service,用几行代码就可以生成向量,但是这样生成的是句向量,也就是说,正确的做法是输入一句句子: 我是一个中国人,我热爱着中国的每一个城市。 输出的是这句句子的向量,一个768维的向量(google预训练是这么做的),这个向量是具有上下文信息的,详细参考Transformer结构。但是网上有一些做法是用bert as service来生成词级向量,例如输入[‘我’,‘是’,‘一个’, ‘中国’, ‘人’],得到5个768维的向量,用来作为词向量,但这样做是错误的!具体原因参照我前面的描述,既然思想是错误的,也就不奇怪效果不好了,所以在这种情况下,请先别着急说BERT预训练模型不work。 BERT生成token级别的向量,这两篇文章理解的比较准确(我的代码有一部分参考第二篇博客): https://blog.csdn.net/u012526436/article/details/87697242 https://blog.csdn.net/shine19930820/article/details/85730536 为什么说是token级别的向量呢

爬取梨视频

烈酒焚心 提交于 2019-11-28 01:13:15
import re import redis import requests,time from setting import PAGE,CATEGORY_ID,START,MAIN_URL,DETAIL_URL from concurrent.futures import ThreadPoolExecutor from myredis import POOL class CrawlVideo(): pools = ThreadPoolExecutor(100) def __init__(self, page=PAGE): self.page = page self.video_info_dic_list = [] self.conn = redis.Redis(connection_pool=POOL) def async_download(self,video_dic): video_link = video_dic["video_link"] if self.conn.get(video_link): return video_name = video_dic["title"][:3] response = requests.get(video_link) if response.status_code == 200: with open("%s.mp4" % video

wrfout_画图

余生颓废 提交于 2019-11-27 08:14:41
from netCDF4 import Datasetfrom datetime import timedelta, datetimeimport osimport pandas as pdfrom wrf import getvarimport matplotlib as mplmpl.use('Agg')import matplotlib.pyplot as pltdef get_para_data(para_name, time_range, file): para_data = [] for i in time_range: z = getvar(file, para_name, timeidx=i, meta=False) # meta默认true : cat,false :join z = z[:, row, col] para_data.extend(z) return para_datadef plot_uv(p, u, v, save_path): time_ids = [0, 3, 6, 9, 12, 15, 18, 21] plt.figure(figsize=(14, 8)) for k in range(8): ax = plt.subplot(2, 4, k + 1) pp = p[time_ids[k] * 30:(time_ids[k] + 1) *

mybatis(九)强大的动态SQL

丶灬走出姿态 提交于 2019-11-26 22:06:27
上篇文章简单介绍了mybatis的查询,至此,CRUD都已讲完。本文将介绍mybatis强大的动态SQL。 那么,问题来了: 什么是动态SQL? 动态SQL有什么作用?   传统的使用JDBC的方法,相信大家在组合复杂的的SQL语句的时候,需要去拼接,稍不注意哪怕少了个空格,都会导致错误。Mybatis的动态SQL功能正是为了解决这种问题, 其通过 if, choose, when, otherwise, trim, where, set, foreach标签,可组合成非常灵活的SQL语句,从而提高开发人员的效率。下面就去感受Mybatis动态SQL的魅力吧: 1. if: 你们能判断,我也能判断! 作为程序猿,谁不懂 if ! 在mybatis中也能用 if 啦: <select id="findUserById" resultType="user"> select * from user where <if test="id != null"> id=#{id} </if> and deleteFlag=0; </select> 上面例子: 如果传入的id 不为空, 那么才会SQL才拼接id = #{id}。 这个相信大家看一样就能明白,不多说。 细心的人会发现一个问题:“你这不对啊! 要是你传入的id为null, 那么你这最终的SQL语句不就成了 select * from