python
J_Xiong0117
一枚终生学习的算法工程师
展开
-
动手学深度学习PyTorch(三):softmax回归
softmax回归实现原创 2022-06-15 11:26:46 · 205 阅读 · 0 评论 -
动手学深度学习PyTorch(二):线性回归
线性回归实现代码原创 2022-06-14 18:40:20 · 163 阅读 · 0 评论 -
动手学深度学习PyTorch(一):数据操作
在深度学习中,我们通常会频繁地对数据进行操作。作为动手学深度学习的基础,本节将介绍如何对内存中的数据进行操作。原创 2022-06-14 15:43:23 · 1268 阅读 · 0 评论 -
深度学习框架拾遗:【Pytorch(十)】——Pytorch高阶API
1)线性回归模型import numpy as np import pandas as pdfrom matplotlib import pyplot as plt import torchfrom torch import nnimport torch.nn.functional as Ffrom torch.utils.data import Dataset,DataLoader,TensorDataset#样本数量n = 400# 生成测试用数据集X = 10*torch.r原创 2022-03-11 16:44:14 · 580 阅读 · 0 评论 -
深度学习框架拾遗:【Pytorch(九)】——Pytorch中阶API
Pytorch的中阶API主要包括:模型层损失函数优化器数据管道1)线性回归模型import numpy as npimport pandas as pdfrom matplotlib import pyplot as pltimport torchfrom torch import nnimport torch.nn.functional as Ffrom torch.utils.data import Dataset,DataLoader,TensorDataset%ma原创 2022-03-11 15:34:11 · 163 阅读 · 0 评论 -
深度学习框架拾遗:【Pytorch(八)】——Pytorch低阶API
Pytorch低阶API主要包括:张量操作计算图自动微分1)线性回归模型import numpy as npimport pandas as pdfrom matplotlib import pyplot as pltimport torchfrom torch import nn# 样本数n= 400# 生成测试用数据X = 10*torch.rand([n,2])-5.0 #torch.rand是均匀分布w0 = torch.tensor([[2.0],[-3.0]]原创 2022-03-11 14:00:22 · 167 阅读 · 0 评论 -
深度学习框架拾遗:【Pytorch(七)】——Pytorch动态计算图
1)动态计算图简介Pytorch的计算图由节点和边组成,节点表示张量或者Function,边表示张量和Function之间的依赖关系。Pytorch中的计算图是动态图。这里的动态主要有两重含义:第一层含义是:计算图的正向传播是立即执行的。无需等待完整的计算图创建完毕,每条语句都会在计算图中动态添加节点和边,并立即执行正向传播得到计算结果。第二层含义是:计算图在反向传播后立即销毁。下次调用需要重新构建计算图。如果在程序中使用了backward方法执行了反向传播,或者利用torch.autograd.g原创 2022-03-09 18:39:38 · 4919 阅读 · 0 评论 -
深度学习框架拾遗:【Pytorch(六)】——Pytorch自动微分机制
神经网络通常依赖反向传播求梯度来更新网络参数,求梯度过程通常是一件非常复杂而容易出错的事情。而深度学习框架可以帮助我们自动地完成这种求梯度运算。Pytorch一般通过反向传播 backward 方法 实现这种求梯度计算。该方法求得的梯度将存在对应自变量张量的grad属性下。除此之外,也能够调用torch.autograd.grad 函数来实现求梯度计算。这就是Pytorch的自动微分机制。1)利用bachward方法求导数backward 方法通常在一个标量张量上调用,该方法求得的梯度将存放在对应自变原创 2022-03-09 15:34:56 · 328 阅读 · 1 评论 -
深度学习框架拾遗:【Pytorch(五)】——Pytorch张量的数据结构
Pytorch的基本数据结构是张量Tensor。张量即多维数组。Pytorch的张量和numpy中的array很类似。1)张量的数据类型张量的数据类型和numpy.array基本一一对应(但是不支持str类型),包括:torch.float64(torch.double)torch.float32(torch.float)torch.float16torch.int64(torch.long)torch.int32(torch.int)torch.int16torch.int8torc原创 2022-03-08 18:05:59 · 386 阅读 · 0 评论 -
知识图谱:【知识图谱问答KBQA(七)】——P-tuning V2训练代码核心网络层解析
在P-Tuning V2代码中,包括四类NLP任务:token_classification:对应序列标注任务sequence_classification:对应文本分类任务question_answering:对应问答任务multiple_choice:对应阅读理解任务class TaskType(Enum): TOKEN_CLASSIFICATION = 1, SEQUENCE_CLASSIFICATION = 2, QUESTION_ANSWERING = 3,原创 2022-02-21 17:01:55 · 1303 阅读 · 0 评论 -
知识图谱:【知识图谱问答KBQA(六)】——P-tuning V2训练代码解析
文章目录一.arguments.pyDataTrainingArguments类ModelArguments类QuestionAnwseringArguments类get_args()函数二.run.pyStep 1. 获取所有参数Step 2. 根据任务名称选择导入对应的get_trainerStep 3. 将参数args传入get_trainer,得到trainer1)根据模型名称或路径加载tokenizer2)根据tokenizer和参数data_args、training_args加载数据集data原创 2022-02-18 11:00:30 · 2775 阅读 · 1 评论 -
Python随记:如何在pycham下调试需要指定参数的脚本
以P-Tuning V2的run_rte_roberta.sh为例:export TASK_NAME=superglueexport DATASET_NAME=rteexport CUDA_VISIBLE_DEVICES=3bs=64lr=5e-3dropout=0.1psl=128epoch=200python3 run.py \ --model_name_or_path roberta-large \ --task_name $TASK_NAME \ --dataset原创 2022-02-17 11:12:26 · 999 阅读 · 0 评论 -
知识图谱:【知识图谱问答KBQA(三)】——Prompt Learning
一. NLP范式NLP技术的发展可分为4个阶段/范式,如下图:1. 全监督学习(非神经网络)仅在目标任务的输入输出样本数据集上训练特定任务模型,其严重依赖特征工程。2. 全监督学习(神经网络)使得特征学习与模型训练相结合,于是研究重点转向了架构工程,即通过设计一个网络架构(如CNN,RNN,Transformer)能够学习数据特征。3. Pre-train,Fine-tune先在大数据集上预训练,再根据特定任务对模型进行微调,以适应于不同的下游任务。在这种范式下,研究重点转向了目标工程,设计在原创 2022-01-25 16:50:36 · 3140 阅读 · 0 评论 -
知识图谱:【知识图谱问答KBQA(二)】——开源句法分析工具LTP4
文章目录LTP4简介LTP安装载入模型自定义词典LTP应用分句分词词性标注命名实体识别语义角色标注依存句法分析语义依存分析(树)语义依存分析(图)LTP相关字段说明词性标注集命名实体识别标注集语义角色类型依存句法关系语义依存关系LTP4简介LTP(Language Technology Platform)由哈工大开源,提供了一系列中文自然语言处理的工具,用户可以使用这些工具对中文文本进行分词、词性标注、句法分析等。LTP安装pip3 install ltp载入模型from ltp import原创 2022-01-12 18:13:02 · 1333 阅读 · 0 评论 -
知识图谱:【知识图谱问答KBQA(一)】——依存分析简介
句法分析句法分析(syntactic parsing)是自然语言处理中的关键技术之一,它是对输入的文本句子进行分析以得到句子的句法结构的处理过程。对句法结构进行分析,一方面是语言理解的自身需求,句法分析是语言理解的重要一环,另一方面也为其它自然语言处理任务提供支持。语义分析通常以句法分析的输出结果作为输入以便获得更多的指示信息。根据句法结构的表示形式不同,最常见的句法分析任务可以分为以下三种:1.句法结构分析(syntactic structure parsing),又称短语结构分析(phrase s原创 2022-01-12 17:08:42 · 1628 阅读 · 0 评论 -
Python随记:【Python装饰器(三)】——functools.wraps简介
functools.wraps 旨在消除装饰器对原函数造成的影响,即对原函数的相关属性进行拷贝,已达到装饰器不修改原函数的目的。wraps内部通过partial对象和update_wrapper函数实现。partial是一个类,通过实现了双下方法new,自定义实例化对象过程,使得对象内部保留原函数和固定参数,通过实现双下方法call,使得对象可以像函数一样被调用,再通过内部保留的原函数和固定参数以及传入的其它参数进行原函数调用。...原创 2022-01-07 11:02:02 · 118 阅读 · 0 评论 -
Python随记:【Python装饰器(二)】——装饰器执行流程
模块加载 ->> 遇到@,执行timer函数,传入add函数 ->> 生成timer..wrapper函数并命名为add,其实是覆盖了原同名函数 ->> 调用add(1, 2) ->> 去执行timer..wrapper(1, 2) ->> wrapper内部持有原add函数引用(func),调用func(1, 2) ->>继续执行完wrapper函数。注意:1)如果一个函数被多个修饰器增强,执行顺序执行【洋葱原则】:可以把装饰器想原创 2022-01-07 11:00:27 · 350 阅读 · 0 评论 -
Python随记:【Python装饰器(一)】——什么是装饰器
装饰器用于在源码中“标记”函数,以增强函数的行为。在这个过程中涉及到如下两个概念:高阶函数接受函数作为入参,或者把函数作为结果返回的函数。闭包指延伸了作用域的函数,其中包含函数定义体中引用、但是不在定义体中定义的非全局变量。简言之,就是嵌套函数引用了外层函数的变量。装饰器示例代码1:def timer(func): def wrapper(*args, **kwargs): start = time.time() func(*args, **kwargs)原创 2022-01-07 10:57:25 · 81 阅读 · 0 评论 -
Python随记:【Python异步编程(六)】——异常解决
假如你的并发达到2000个,程序会报错:ValueError: too many file descriptors in select()。报错的原因字面上看是 Python 调取的 select 对打开的文件有最大数量的限制,这个其实是操作系统的限制,linux打开文件的最大数默认是1024,windows默认是509,超过了这个值,程序就开始报错。这里我们有三种方法解决这个问题:• 限制并发数量。(一次不要塞那么多任务,或者限制最大并发数量)• 使用回调的方式。• 修改操作系统打开文件数的最大限制原创 2022-01-07 10:52:01 · 526 阅读 · 0 评论 -
Python随记:【Python异步编程(五)】——多链接异步访问
如果我们需要请求多个URL该怎么办呢,同步的做法访问多个URL只需要加个for循环就可以了。但异步的实现方式并没那么容易,在之前的基础上需要将hello()包装在asyncio的Future对象中,然后将Future对象列表作为任务传递给事件循环。异步实现:import timeimport asynciofrom aiohttp import ClientSessiontasks = []url = "https://www.baidu.com/{}"async def hello(url原创 2022-01-07 10:49:03 · 410 阅读 · 0 评论 -
Python随记:【Python异步编程(四)】——aiohttp
如果需要并发http请求怎么办呢,通常是用requests,但requests是同步的库,如果想异步的话需要引入aiohttp。这里引入一个类,from aiohttp import ClientSession,首先要建立一个session对象,然后用session对象去打开网页。session可以进行多项操作,比如post, get, put, head等。aiohttp异步实现实例:import asynciofrom aiohttp import ClientSessiontasks = [原创 2022-01-07 10:46:01 · 242 阅读 · 0 评论 -
Python随记:【Python异步编程(三)】——asyncio
同步代码:import timedef hello(): time.sleep(1)def run(): for i in range(5): hello() print('Hello World:%s' % time.time()) # 任何伟大的代码都是从Hello World 开始的!if __name__ == '__main__': run()# 输出(间隔约是1s):>> Hello World:152759原创 2022-01-07 10:43:05 · 104 阅读 · 0 评论 -
Python随记:【Python异步编程(二)】——同步/异步的概念
同步是指完成事务的逻辑是顺序执行的,即先执行第一个事务,如果阻塞了,会一直等待,直到这个事务完成,再执行第二个事务;异步是和同步相对的,异步是指在处理调用这个事务之后,不会等待这个事务的处理结果,直接处理第二个事务去了,通过状态、通知、回调来通知调用者处理结果。...原创 2022-01-07 10:38:48 · 443 阅读 · 0 评论 -
Python随记:【Python异步编程(一)】——Python的不足
python由于GIL(全局锁)的存在,不能发挥多核的优势,其性能一直饱受诟病。然而在IO密集型的网络编程里,异步处理比同步处理能提升成百上千倍的效率,弥补了python性能方面的短板。但是python的优势是库(第三方库)极为丰富,运用十分方便。asyncio是python3.4版本引入到标准库的。...原创 2022-01-07 10:37:11 · 455 阅读 · 0 评论 -
Large-Scale Relation Learning for Question Answering over Knowledge Bases with Pre-trained Langu论文笔记
文章目录一. 简介1.知识库问答(KBQA)介绍2.知识库问答(KBQA)的主要挑战3.以往方案4.本文方法二. 方法问题定义:BERT for KBQA关系学习(Relation Learning)的辅助任务三. 实验1. 数据集2. Baselines3. Metrics4.Main Results一. 简介1.知识库问答(KBQA)介绍知识库问答(KBQA)旨在从给定结构化知识库(KB)中找到自然语言问题的答案,广泛用于现代问答和信息检索系统。传统的基于检索的KBQA方法通常将其构建为管道系统(原创 2021-12-29 18:02:32 · 984 阅读 · 0 评论 -
知识图谱:【知识图谱基础理论(十)】——知识图谱的问题与挑战
信息抽取环节开放域信息抽取,主要的问题包括实体抽取、关系抽取以及属性抽取。其中多语种、 开放领域的纯文本信息抽取问题是当前面临的重要挑战。知识融合环节实体消歧和共指消解的研究成果至今距离实际应用相差很大距离,如何在上下文信息受限条件下,如何准确地将从文本中抽取到的实体正确链接到知识库中对应的实体亟待解决。知识加工环节知识加工是知识图谱最具特色的功能,同时也是该领域最大的挑战。突破现有技术和思维方式的同时, 创新知识推理技术。知识更新环节如何确保自动化更新的有效性,是该领域面临的又一重大挑战。原创 2021-12-23 09:52:35 · 584 阅读 · 0 评论 -
知识图谱:【知识图谱基础理论(九)】——知识图谱的应用
目前知识图谱技术主要用于智能语义搜索、移动个人助理(如Google Now,Apple Siri等)以及深度问答系统(如IBM Watson,Wolfram Alpha等)。深度问答应用系统首先在知识图谱的帮助下对用户自然语言提出的问题进行语义分析和语法分析,进而将其转化成结构化形式的查询语言,然后在知识图谱中查询答案。对知识图谱的查询通常采用基于图的查询语言(SPARQL)。基于知识图谱的问答系统a)基于信息检索的问答系统先将问题转变为一个基于知识库的结构化查询,从知识库中查询与问题中(抽取的)原创 2021-12-23 09:50:04 · 1436 阅读 · 0 评论 -
知识图谱:【知识图谱基础理论(八)】——知识更新
从逻辑上看,知识库的更新包括概念层的更新和数据层的更新。更新的两种方式:数据驱动下的全面更新增量更新原创 2021-12-23 09:47:36 · 2708 阅读 · 1 评论 -
知识图谱:【知识图谱基础理论(七)】——知识加工
通过信息抽取和知识融合得到的事实表达并不等于知识,需经过知识加工最终获得结构化、网络化的知识体系。主要包括:本体构建,知识推理,质量评估。本体构建本体(ontology)是对概念进行建模的规范,是描述客观世界的抽象模型,以形式化方式对概念及其之 间的联系给出明确定义。知识推理从知识库中已有的实体关系数据出发,经过计算机推理,建立实体间的新关联,从而拓展和丰富知识网络。是知识图谱构建的重要手段和关键环节。知识推理方法:a)基于逻辑的推理i)一阶谓词推理ii)描述逻辑iii)基于规则的推理原创 2021-12-23 09:45:17 · 2685 阅读 · 0 评论 -
知识图谱:【知识图谱基础理论(六)】——知识融合
通过信息抽取得到的信息中可能存在着冗余和错误信息,数据间的关系扁平化,缺乏层次性和逻辑性。知识融合对这些数据进行清理和整合,确保知识质量。包括:实体链接和知识合并。实体链接指对于从文本中抽取得到的实体对象,将其链接到知识库中对应的正确实体对象的操作:实体链接的一般流程从文本中通过实体抽取得到实体指称项。进行实体消歧和共指消解,判断知识库中的同名实体与之是否代表不同的含义以及知识库中是否存在其他命名实体与之表示相同的含义。在确认知识库中对应的正确实体对象后,将该实体指称项链接到知识库中对应实体。原创 2021-12-23 09:41:27 · 1560 阅读 · 0 评论 -
知识图谱:【知识图谱基础理论(五)】——知识抽取
信息抽取是一种自动化地从半结构化或非结构化数据中抽取实体、关系以及实体属性等结构化信息的技术。关键技术包括:实体抽取、关系抽取和属性抽取:• 实体抽取(命名实体识别NER)○ 指从文本数据集中自动识别出命名实体。• 关系抽取○ 实体抽取得到的是离散的命名实体,还需要从相关语料中提取出实体之间的关系。○ 关系抽取就是解决如何从文本语料中抽取实体间关系。• 属性抽取○ 属性抽取的目标是从不同信息源中采集特定实体的属性信息。由于可以将实体的属性视为实体与属 性值之间的一种名词性关系,因此也可以将属原创 2021-12-23 09:34:18 · 1376 阅读 · 0 评论 -
知识图谱:【知识图谱基础理论(四)】——知识图谱的构建技术
原创 2021-12-23 09:31:56 · 510 阅读 · 0 评论 -
知识图谱:【知识图谱基础理论(三)】——知识图谱的构建方式
自顶向下从高质量数据中提取本体和模式信息,加入到知识库中。自底向上从公开采集的数据中提取出资源模式,选择其中置信度较高的新模式,加入到知识库中。原创 2021-12-23 09:30:34 · 440 阅读 · 0 评论 -
知识图谱:【知识图谱基础理论(二)】——知识图谱的架构
• 知识图谱自身的逻辑结构 ○ 数据层:知识以事实(fact)为单位存储在图数据库。 ○ 模式层:模式层在数据层之上,是知识图谱的核心。存储提炼过的知识,采用本体库进行模式层管理。• 知识图谱所采用的技术(体系)架构 ○ 知识图谱的构建过程是从原始数据出发,采用一系列自动或半自动的技术手段,从原始数据中提取出知识要素(即事 实),并将其存入知识库的数据层和模式层的过程。 ○ 知识图谱构建是一个迭代更新的过程,根据知识获取的逻辑,每一轮迭代包含3个阶段: § 信息抽取 § 知识融合原创 2021-12-23 09:27:54 · 1884 阅读 · 0 评论 -
知识图谱:【知识图谱基础理论(一)】——知识图谱的定义
知识图谱:是结构化的语义知识库,用于以符号形式描述物理世界中的概念及其相互关系。其基本组成单位是【实体——关系——实体】三元组,以及实体及其相关属性键值对,实体间通过关系互联,构成网状的知识结构。知识图谱本身是一个具有属性的实体通过关系链接而成的网状知识库。从图的角度来看,图中节点表示实体(概念),节点之间的边表示实体与实体之间的关系。...原创 2021-12-23 09:24:01 · 1461 阅读 · 0 评论 -
知识图谱:【数据清洗工具flashtext(五)】——flashtext使用示例
文章目录关键字提取删除关键字函数封装示例pyahocorasick版关键字提取from flashtext import KeywordProcessorkeyword_processor = KeywordProcessor()keyword_processor.add_keyword('Big Apple', 'New York')keyword_processor.add_keyword('Bay Area')keywords_found = keyword_processor.extra原创 2021-12-20 11:50:48 · 448 阅读 · 0 评论 -
知识图谱:【数据清洗工具flashtext(四)】——flashtext函数
构建Trie字典:KeywordProcessor新增关键词:add_keyword关键词抽取:extract_keywords关键词替换:replace_keywords删除关键词:remove_keywords示例:from flashtext import KeywordProcessorkeyword_processor = KeywordProcessor(case_sensitive=False)keyword_processor.add_keyword(one_kw,).原创 2021-12-20 11:47:10 · 291 阅读 · 0 评论 -
知识图谱:【数据清洗工具flashtext(三)】——flashtext原理
flashtext是一种基于Trie字典数据结构和Aho Corasick的算法。Trie字典构建flashtext首先将所有相关的关键字作为输入,使用这些关键字建立一个trie字典(start和eot分别是字符序列的开始标签和结束标签):搜索对于输入字符串或文档,对字符进行逐个遍历。当在文档中有字符序列<\b>word<\b>匹配到字典中的word时,则认为这是一个完整匹配,将匹配到的字符序列所对应的标准关键字进行输出:ps.示例中,匹配到的字符序列显示为绿色,没有匹原创 2021-12-20 11:41:11 · 975 阅读 · 0 评论 -
知识图谱:【数据清洗工具flashtext(二)】——flashtext效率测试
Regex Vs flashtext用于关键字搜索的正则表达式(Regex)是一种非常灵活和有用的模式匹配方式。1)正则表达式(Regex)在一个10k的词库中查找15k个关键词的时间差不多是0.165s,但flashtext只需要0.002s(flashtext的速度约为regex的82倍)。2)随着所需处理(检索/替换)的字符串越来越多,正则表达式的处理时间近乎线性增加,而flashtext近乎一个常量。...原创 2021-12-20 11:38:19 · 312 阅读 · 0 评论 -
知识图谱:【数据清洗工具flashtext(一)】——flashtext简介
大规模数据清洗的利器flashtext算法是一个高效的字符串搜索和替换算法,该算法的时间复杂度不依赖于搜索或替换的字符的数量,比一般的正则匹配法快很多,且flashtext算法被设计为只匹配完整的单词。比如在数据集{Machine,Learning,Machine Learning}中,一个文档“I like Machine Learning”,则flashtext算法只会优先去匹配“Machine Learning”,因为这是最长匹配。参考链接官方文档:https://flashtext.read原创 2021-12-20 11:33:37 · 1138 阅读 · 0 评论