textcnn中的bn和ln 之前的textcnn: cnn->relu->pool但是考虑到cnn是窗口滑动,感觉应该加一个。cnn->bn/ln->relu->pool。但是实际上我这个就一层,不加norm好像区别也不大,
个人笔记_持续更新 激活函数的选择:参考资料:https://zhuanlan.zhihu.com/p/172254089sigmoid的梯度范围是(0,0.25),假设一个网络有多层,每层的激活函数是sigmoid,那么反传多层后梯度会变的非常小。也就是sigmoid会导致梯度消失。如果权重非常大,使得输出达到了饱和区域,那么梯度会接近于0。所以sigmoid容易发生梯度消失。relu的公式是max(0,x),梯度取值为0和1两个值,多层relu之后梯度还是0或者1,1的话梯度继续传播,0的话从该位置开始停止传播
transformer杂记 transformer代码结构图.这个图其实就是把网上常见的transformer图画得更详细了,参考的是transformer的代码.这么细致的图并不方便于记忆,但是日后回顾细节时不必再看代码.总结有如下几个点:encoder的输入和bert的输入相同的是都有token_emb和pos_emb,但transformer没有token_type_id(也叫segment_id).另外transformer中采用的三角函数式位置编码,bert是训练得到的位置编码.位置编码的重要性低于token_emb
huggingface datasets load_metric connecterror cannot reach 出现这个错误的原因是连不上网,解决办法很简单:1.翻墙;2.打开提示中的网址,并把该网址对应的py文件下载下来。3.datasets.load_metric('py文件所在目录')就可以了
用kfold提高bert 笔记 下面言论仅针对小一点的数据集,bert非常受随机种子的影响:Fine-Tuning Pretrained Language Models: Weight Initializations, Data Orders, and Early Stopping如果不想受随机种子的影响,那么可以用小一点的学习率,epoch设的大一点(原bert作者建议微调2-4epoch,大一点就是epoch设为10/20这样的)。但是我目前的数据是,跑到3epoch效果最好,如果增加epoch(到20),f1会降很多,倒是确
关系抽取工具浅析 1.Jiagu思知(ownthink)开发的,对于百度百科文本,还能提取到部分三元组,抽取到的三元组有重复,有些比较奇怪,有些百科文本也提取不到任何三元组。其他文本就根本不行。Jiagu可以同时抽取出实体和实体之间的关系。2.DeepKE关系抽取用到的模型有很多:BiLSTM、Capsule、GCN(先用工具提取出句子的语法树,构建出词语之间的邻接矩阵,然后用GCN)、LM、CNN、Transformer可以用自己的训练数据重新训练模型,上述几个模型可视为baseline,代码写的...
关系抽取相关论文笔记 a frustratingly easy approach for joint entity and relation extraction文章链接:https://arxiv.org/pdf/2010.12812.pdf时间:2020.10.24挂到arxiv上作者:陈丹琦简介:做关系抽取的,用pipeline的方式,包括两个步骤:先训练好一个NER,然后用人工标注的数据训练关系抽取模型。其中NER是Span-level,并没有很多改进,主要改进是在关系抽取阶段。代码还没有开源。关系.
Apache jena安装(docker镜像) 安装使用的是docker镜像,就两个命令拉下来镜像docker pull stain/jena-fuseki跑起来docker run -p 3030:3030 stain/jena-fuseki镜像里面的参数-e ADMIN_PASSWORD=pw123admin的密码,如果没有的话是自动随机生成的,可以通过docker logs containerid看到需要注意的点是,如果container重启,那么数据可能会丢失,所以需要挂载,可以用下面的命令,记得修改路径:
无监督语义相似度 没有成对的文本,如何计算语义相似度1. bert方面的坑bert计算出来句子之间的相似度很接近,在我的数据集上finetune之后稍微好一点点,用的是cls的输出直接作为句子的向量,然后计算cosine,结果有点翻车,主要问题在:句子之间的距离都很近 句子的长短也会影响,相同长度的句子之间距离更接近。针对这个问题,我有尝试把每个字的字向量加起来处以字符数量,但是发现还是一样后来,看了一个知乎的回答,原文:https://www.zhihu.com/question/354129879用字
知识图谱入坑 比较大的开放知识图谱:中文百科类:CN-DBPedia,http://shuyantech.com/api/cndbpedia/ment2ent?q=词语 ZhiShi.me ownthink,https://github.com/ownthink/KnowledgeGraphData 非常大,8G多,用csv存的知识图谱的核心作用:确定了实体。有益于多个方面:分词会更准确,本体更加明确(消除了语言多样性带来的干扰) 找出实体间的关系。这种对关系的明确定义是非常有意义的,因为在没有知识图
elasticsearch 今天搞了一下es,安装参考的是:https://www.linuxprobe.com/elasticsearch.htmlhttps://www.jianshu.com/p/1ca69272564d我遇到的问题有两个:一个是内存不够,一个是没有找到主节点(参考http://www.mamicode.com/info-detail-3052766.html)如果连接超时:装完es后还需要装配套的ikhttps://github.com/medcl/elasticsearch-an.
推荐系统学习笔记——内容&协同 推荐系统分为基于内容的推荐系统和基于邻域的推荐系统(协同过滤)基于内容的推荐系统以内容为主要推荐依据,一个简单的流程对物品进行分类/打标签; 计算用户的偏好,比如某个用户喜欢爱情类电影,如果用户的偏好是变化的,可以加入衰退因子。利用衰退因子调整不同时间段偏好的权重; 生成候选集。根据物品所属类型/标签生成候选集; 对候选集进行排序。可以用别的用户对该物品的平均评分 优点:冷启动影响较小,因为物品的分类不受用户评价影响,但是对候选集的排序可能会受影响(要看具体排序的策略); 能照...
crf中的状态转移 crf条件随机场,有一个初始状态矩阵、状态转移矩阵和发射矩阵。在用bilstm+crf做ner时状态转移矩阵常常有问题,比方说直接从”O“跳到“I”(BIO标注方式下)。看了tensorflow的代码后明白了原因所在:在没有给定状态转移矩阵时(通常不会给出状态转移矩阵),tensorflow随机初始一个状态转移矩阵,然后在训练的过程中学习这个状态转移矩阵。问题的原因是tf随机初始的,对于神经网络而言,初始值是非常重要的。一个好的初始值会让模型得到一个好的结果,一个不好的初始值很有可能让模型在一开始就跑偏
Docker日记 今天是被docker虐的一天。任务是把自己用python写的flask服务部署到一个服务器上,悲剧的是那个服务器上没有python,不能联网。尝试的第一个方法是装anaconda,把每个包下载到本地,然后逐个安装。这样的问题是:有的包依赖的包太多了,实在是装不过来,瞎折腾了很久才决定放弃这条路。如果您遇到这种情况,请一定不要学我,钻了半天的牛角尖才想到可以换个方法!尝试的第二个方法是用docker,然后就开启了被docker虐的一天,所幸最后是成功了。一、docker部署的流程1.写dock
setup.py install后无法导入包 今天遇到一个很有意思的情况,安装了一个包vec4ir,安装方式是在命令行中用python setup.py install 安装的,安装好以后发现import报错,提示找不到这个包。这就比较尴尬了。然后打开python的安装目录找lib->site-package,发现里面只有一个vec4ir的egg文件,名字叫做vec4ir-0.2-py3.6.egg。情况就是这么个情况,解决方法:把vec4ir文件夹复制到了lib->site-package,这个方法并不漂亮,但是解决了问题
tensorflow模型保存和加载 方式一ckpt 使用saver:如果要看,请直接看这个方法的最后两个,前面讲的是官网的坑。 用tf.train.Saver()创建一个saver,然后保存。# 建立网络创建变量,建图v1 = tf.Variable(..., name="v1")v2 = tf.Variable(..., name="v2")...# 建立saver对象,后面保存的时候要用saver = tf.train.Saver()with tf.Session() as sess: sess.run(..
BM25 计算用户输入query和语料库中每条语句之间的相似度分数。我参考了gensim中的源码,实现的挺简单的,还是包括tf和idf两部分,tf:单词在文档中出现的频率idf:,其中D是整个语料库中包含多少篇文档,df是语料库中有多少个文档包含了某个单词,0.5是用来做平滑的。现在忽略0.5,分子分母约分,就变成了。如果语料库中一半的文档都包括某个词,那这个词的idf=0,如果语料库中超过一半的文档都包括某个词,那么这个词的idf<0,这时候就用eps代替,eps是一个比较小的值,是平均每个词的i
tfidf tfidf包括两部分:tf:词语在文档中出现的次数,idf中的df是在整个语料库中有多少篇文档包含了该词语,其中的i是逆的意思,核心思想是:如果一个词在某篇文档中出现的次数多并且包含该词语的文档少,那么这个词语很重要。如果一个词在很多个文档中都出现,那么说明这个词只是个高频词,没有意义(例如:“的”这个字)。tfidf有很多变种,可以参考下面图表。上图的出处:https://rare-technologies.com/pivoted-document-length-normalisation/
使用docker布服务 今天更新了一下git的代码,但是自己不会用docker部署,求助了组内的大神,在这里记录一下过程:1.首先把更新后的代码拷到服务器上:git clone 地址2.把原来运行docker镜像停一下:docker stop <容器id>其中的容器id可以通过 docker images看到所有的dockerdocker ps3. 构建镜像docker build -t 要创建的镜像的名称 Dockerfile所在目录Dockerfile中包括了很多指令,每个指令都
矩阵求两两元素之间的距离 如果是两维的,很简单,可以直接用scipy.spatial.distance的cdist,要求两个矩阵必须是2维的,三维会报错import numpy as npfrom scipy.spatial.distance import cdista = np.reshape(np.arange(12),newshape=[3,4])b = np.reshape(np.arange(10,30),newshape=[5,4])distance = cdist(a,b)print(distance)