Pular para o conteúdo principal

Python - Aprendendo uma linguagem de programação

 Nesse link encontrei uma série de video aulas para Python, do básico a assuntos mais avançados como o pacote NLTK e RDFLib. 


Vou dedicar pelo menos 3 horas por semana para essa questão uma vez que estou sentindo falta de não ter conhecimento de uma linguagem que possa dar suporte a uma possível necessidade da fase de experimentos da pesquisa. 

Além disso Python é a linguagem usada no projeto NIMA e outros projetos de desenvolvimento do grupo de pesquisa BioBD e também tem grande potencial de apoiar o WorkFlow do INCA. Python é uma linguagem imperativa de alto nível interpretada.
 
Linguagens de programação são linguagens formais e precisas (não ambíguas) e podem seguir dois paradigmas: Imperativo ou Declarativo. 
Linguagens imperativas (ou procedural) são aquelas cujos passos e a ordem de execução são definidas pelo programados (como fazer). Podem ser de alto (Java, C,...) ou baixo nível (de máquina). As linguagens imperativas de alto nível podem ser do tipo interpretadas ou compiladas.
Linguagens declarativas (como o SQL) são aquelas que o programador define o que deseja ser feito mas não especifica o como.   

Image for post

02/09: Assisti até o vídeo 1.6 (aproximadamente 2 horas) 

Instalado o Jupyter Notebook
Para acessar, abrir o prompt de comando e digitar jupyter notebook (no caminho onde os programas foram salvos -> C:\Users\versa\AppData\Roaming\Python\Python38\Scripts). O servidor será iniciado e uma aba do browser deverá ser aberta para acesso. 

Salvei os programas em python aqui -> C:\Users\versa\Documents\Python Scripts (computador novo!)

Os slides das aulas estão no Google Classroom: https://classroom.google.com/ . 
Para se matricular, digite o código "wcofeb5".

Link da documentação oficial -> https://docs.python.org/pt-br/3/

03/09: Videos aulas 2.1 e 2.2 (aproximadamente 1 hora)

Não se esqueça, indentação é importante para distinguir os comandos de cada condição:

if condição:
....comando
....comando
....if condição:
........comando
else:
....comando
 
if condição:
....comando
elif condição:
....comando
else:
....comando
 

Geralmente, definem-se 4 espaços como indentação para cada condição.

06/09: Vídeo aulas 3.1, 3.2, 3.3  (aproximadamente 1 hora e 30 minutos) 

Funções podem não receber parâmetros e não precisam retornar valores. A indentação é importante pq não existe end-def

def <nome da função>(param1, param2, ..., paramN):

Funções externas (definidas em outros arquivos) devem ser importadas antes de serem invocadas.  Caso o arquivo seja alterado depois de importado o notebook deve ser recarregado (restart the kernel)

import <arquivo de funções>
from <arquivo de funções> import <nome de uma função>

O import pode ser de módulos (qq localização) ou programas (na mesma localização do notebook)

Instalação do pyCharm Edu (IDE) e importação de um programa de aprendizagem. Essa IDE é muito pesada, consome bastante memória e CPU da máquina. 

13/09: Exercícios da aula 3 e  vídeo aulas 4.1 e 4.2 (aproximadamente 2 horas e 30 minutos)

Variáveis como listas (operações append, len) e operações com strings (strip, isupper, islower)

16/09: Vídeo aulas 5.1, 6.1, 6.2 (aproximadamente 1 horas e 30 minutos)

Debugar com o pyCharm (o jupyter notebook não permite debug): Bullet point (duplo click ao lado da linha), Step Over, Step Into (entrar na função), Step Out (sair da função), Resume (vai para o próximo bullet). 

Exercício do vídeo 5.2: tentei fazer mas demora muito abrir o ep2.zip no pyCharm e travou. 

def reta(n, d='v'): ...... funções permitem valores default que podem ser omitidos na chamada
reta(4)
reta(6, 'h')

print ('*', end=' ') .... o separador padrão do print é a quebra de linha /n mas é possível usar outros
print ('*', end='\t') .... o separador \t inclui um TAB entre os valores

24/09: Vídeo aulas 7.1, 7.2, 7.3 (aproximadamente 2 horas e 30 minutos)

Listas são uma estrutura de dados bem interessante

Lista começam no posição 0, podem ser acessadas do fim para o início (-1, -2,....)

len(lista)) .... retorna o tamanho da lista, ou seja, o número de itens
lista.index(<valor>)) ... retorna a posição do valor na lista, se existir. Se não existir erro
lista.append(<valor>) ... inclui um item no final da lista 
lista[<posicao>] ... acessar o elemento da posição 
for item in lista: ... percorre os itens da lista e retorna o valor na variável item 
zip(lista1, lista2) .... faz merge de duas listas e cada elemento é uma tupla
del lista[<posicao>] ... remove da lista o elemento na posição
lista.remove(<valor>) ... remove da lista o elemento com o valor correspondente
if <valor> in lista: .... testar se o valor pertence a lista

del <variável> .... garbage collection, remover variáveis não mais utilizadas do código em python

list(range(ini, fim, intervalo)) ... gera uma lista de números de ini até fim com intervalo

a atribuição de uma lista1 em uma lista2 é feita por referência (e não por cópia de valores)

lista2 = lista1

ou seja, alterações em uma lista refletem na outra pq são alteração em uma área de memória

para fazer a cópia (clonar) é necessário

import copy
lista2 = copy.copy(lista1)

ou seja, a memória é duplicada e cada lista assume um ponteiro para a respectiva área

para concatenar duas listas: lista1 + lista2

min, max, sum, sorted(lista) ... mínimo, máximo, somatório e ordenação de listas

Maiores informações sobre lista na documentação oficial -> https://docs.python.org/3/tutorial/datastructures.html

Algumas ferramentas interessantes em python estão nas imagens abaixo. 





Comentários

Postagens mais visitadas deste blog

Connected Papers: Uma abordagem alternativa para revisão da literatura

Durante um projeto de pesquisa podemos encontrar um artigo que nos identificamos em termos de problema de pesquisa e também de solução. Então surge a vontade de saber como essa área de pesquisa se desenvolveu até chegar a esse ponto ou quais desdobramentos ocorreram a partir dessa solução proposta para identificar o estado da arte nesse tema. Podemos seguir duas abordagens:  realizar uma revisão sistemática usando palavras chaves que melhor caracterizam o tema em bibliotecas digitais de referência para encontrar artigos relacionados ou realizar snowballing ancorado nesse artigo que identificamos previamente, explorando os artigos citados (backward) ou os artigos que o citam (forward)  Mas a ferramenta Connected Papers propõe uma abordagem alternativa para essa busca. O problema inicial é dado um artigo de interesse, precisamos encontrar outros artigos relacionados de "certa forma". Find different methods and approaches to the same subject Track down the state of the art rese...

Knowledge Graph Embedding with Triple Context - Leitura de Abstract

  Jun Shi, Huan Gao, Guilin Qi, and Zhangquan Zhou. 2017. Knowledge Graph Embedding with Triple Context. In Proceedings of the 2017 ACM on Conference on Information and Knowledge Management (CIKM '17). Association for Computing Machinery, New York, NY, USA, 2299–2302. https://doi.org/10.1145/3132847.3133119 ABSTRACT Knowledge graph embedding, which aims to represent entities and relations in vector spaces, has shown outstanding performance on a few knowledge graph completion tasks. Most existing methods are based on the assumption that a knowledge graph is a set of separate triples, ignoring rich graph features, i.e., structural information in the graph. In this paper, we take advantages of structures in knowledge graphs, especially local structures around a triple, which we refer to as triple context. We then propose a Triple-Context-based knowledge Embedding model (TCE). For each triple, two kinds of structure information are considered as its context in the graph; one is the out...

KnOD 2021

Beyond Facts: Online Discourse and Knowledge Graphs A preface to the proceedings of the 1st International Workshop on Knowledge Graphs for Online Discourse Analysis (KnOD 2021, co-located with TheWebConf’21) https://ceur-ws.org/Vol-2877/preface.pdf https://knod2021.wordpress.com/   ABSTRACT Expressing opinions and interacting with others on the Web has led to the production of an abundance of online discourse data, such as claims and viewpoints on controversial topics, their sources and contexts . This data constitutes a valuable source of insights for studies into misinformation spread, bias reinforcement, echo chambers or political agenda setting. While knowledge graphs promise to provide the key to a Web of structured information, they are mainly focused on facts without keeping track of the diversity, connection or temporal evolution of online discourse data. As opposed to facts, claims are inherently more complex. Their interpretation strongly depends on the context and a vari...