IA
Instalando drivers do NEO4J no Python

O procedimento a seguir, mostra como rodar o NEO4J no Python.

Para facilitar um pouco nosso ambiente iremos utilizar o ANACONDA/JUPYTER NOTEBOOK

Primeiro crie uma pasta NEO4J no JUPYTER NOTEBOOK.

Agora, crie uma aplicação Notebook.

E digite:

pip3 install neo4j

IA
Instalação NEO4J

Neo4J é um banco de dados baseado em grafos.

Com ele é possível montar relações baseadas em suas ligações.

Baixando a versão DESKTOP

Entre no site:

https://neo4j.com/

Faça seu cadastro e copie o seu token

Ao finalizar o download, começe instalando o mesmo, preenchendo os dados cadastrais.

Quando solicitado, copie o NEO4J Activation Key.

Por fim , aguarde a finalização da instalação.

IA Python
SPACY – MATCHER

O matcher é um módulo do SPACY destinado a encontrar padrões.

Um exemplo de código:

from spacy.matcher import Matcher

mat = Matcher(nlp.vocab)

padrao =[{"ORTH":"("},"SHAPE":"dd"},{"ORTH":")"},{"ORTH":"-","OP":"?"},{"IS_DIGIT":True})

doc= nlp("Meu telefone é (16) 981434112")

matches= matcher(doc)

for match_id, start, end in mat:
   print(doc[start:end])

Tabela dos padrões do MATCHER

  • ORTH, TEXT – Texto exato
  • LOWER – Forma minuscula
  • LENGTH – Tamanho do texto
  • IS_ALPHA – É caracter
  • IS_ASCII – É ascii
  • IS_DIGIT – É numerico
  • IS_LOWER – é caixa baixa
  • IS_UPPER – É caixa alta
  • IS_TITLE – É um titulo
  • IS_PUNCT – Pontuação
  • IS_SPACE – Espaco
  • IS_STOP – Stop Word
  • IS_SENT_START – Inicio de frase
  • LIKE_NUM – Parece um numero
  • LIKE_URL – Parece um endereço web
  • LIKE_EMAIL – Parece um email
  • SPACY – Tem espaço a direita
  • POS – Tamanho
  • TAG –
  • MORPH –
  • DEP –
  • LEMMA – É lematizado
  • Shape –
  • ENT_TYPE –
  • OP – Operador quantificador

IA Python
SPACY – Analise do texto

Ao digitar no spacy :

 palavras = []
    for token in doc:
         token.pos_

Aparece uma série de abreviações.

Segue o significado destas aqui:

  • ADJ – adjetivo
  • ADP – Aposição
  • ADV – Adverbio
  • AUX – Verbo auxiliar
  • CONJ – Conjunção
  • CCONJ – Conjunção coordenativa
  • DET – Determinante
  • INTJ – Interjeição
  • NOUN – Substantivo
  • NUM – número
  • PART – partícula (se que)
  • PRON – pronome
  • PROPN – Nome proprio
  • PUNCT – Pontuação
  • SCONJ – Conjunção subordinada
  • SYM – Simbolo
  • VERB – verbo
  • X – outros
  • SPACE – espaço

Agora ao digitar:

 palavras = []
    for token in doc:
         token.dep_

Aparece as dependencias, que são abreviações dentro do contexto:

Segue as abreviações:

  • acl – clausula modificadora de nome
  • advcl – clausula modificadora de adverbio
  • advmod – modificadora de adverbio
  • amod – modificador de adjetivo
  • appos – modificador apposicional
  • aux – auxiliar
  • case – marcação de caixa
  • cc – conjunção coordenativa
  • ccomp – clausula complementativa
  • clf – classificador
  • compound – composição
  • conj – conjunção
  • cop – copula
  • csubj – clausula substantiva
  • dep – dependencia não especificada
  • det – determinador
  • discourse – elemento de discurso
  • dislocated – elemento deslocado
  • expl – expletive
  • fixed – expressão multi palavra fixada
  • flat – expressao multi palavra gorda
  • goeswith – indo com
  • iobj – objeto indireto
  • list – lista
  • mark – marcador
  • nmod – modificação nominal
  • nsubj – sujeito nominal
  • nummod – numeric modifier
  • obj – objeto
  • obl – nominal oblico
  • orphan – orfão
  • parataxis – parataxis
  • punct – pontuação
  • reparandum – overridden disfluency
  • root – raiz
  • vocative – vocativo
  • xcomp – open clausal complement
pacotes Programação Yocto Project
Criando um daemon no linux

Daemon são programas que rodam em back ground e que são inicializados e controlados pelo sistema operacional.

Os daemon são geralmente serviços que devem ser gerenciados de forma automatica.

Iremos apresentar aqui um bom exemplo de como criar um daemon.

Para criar um daemon, primeiramente seu binário precisa ser incluído em um local que permita o acesso para qualquer usuário, por este motivo a inclusão na pasta /home/[usuário] não é uma boa pratica. Em geral incluímos em uma pasta como /usr/bin.

Os arquivos de configuração , quando houver, poderão ser incluídos na pasta /etc/[nome daemon].

A criação

A criação do daemon é bem simples.

Crie em /etc/systemd/system/ o arquivo [servido].service, tal como o exemplo do meu git:

https://github.com/marcelomaurin/srvFalar/blob/main/srvfalar/etc/systemd/system/srvfalar.service

Edite o arquivo [servico].service conforme apresentado abaixo:

[Unit]
Description=[Descreva o que faz o servico]
After=network.target

[Service]
ExecStart=/usr/bin/[servico_binario]
Restart=always
User=root
Group=root

[Install]
WantedBy=multi-user.target

Salve o serviço e como sudo dê o seguinte comando:

systemctl daemon-reload

Executando o serviço

Para executar um serviço digite:

systemctrl start [serviço]
octave
Octave – Sistema de transferência Malha fechada

No vídeo anterior, apresentamos uma pequena apresentação de um sistema de malha aberta.

Agora iremos apresentar um exemplo de malha fechada.

Conforme o wiki:

“Também chamado de controle retroativo (realimentação ou feedback) necessita de informações da saída do controlador através de elementos sensores ou transdutores, compara o sinal da saída com o set-point(referência) e corrige a saída caso a mesma esteja desviando-se dos parâmetros programados.”

O vídeo de treinamento deste material pode ser visto aqui.

Primeiramente, temos que carregar a função control, através do comando:

 pkg load control

Em seguida criamos o num01 e den01, da planta.

Em seguida criamos o num02 e den02 da função de controle.

Por fim atribuimos a função de feedback, através da união de ambas as funções:

sys01= feedback(tf01,tf02);

Lembrando que a função feedback , aceita mais um parâmetro, que é o sinal de realimentação.

“Se sign for omitido ou definido como +1, indica que o sinal de realimentação é positivo (realimentação negativa). Se sign for definido como -1, indica realimentação positiva.”

%Apresentação do sistema de malha fechada

pkg load control

%Sistema de transferencia da planta.
num01 = [1];
den01 = [1,2,10];

%tf01 - Sistema da Planta
%tf01=tf([1],[1,2,10])
tf01=tf(num01,den01);

num02=[2];
den02=[1];
% Função de controle
tf02=tf(num02,den02);

% Construir o sistema de malha fechada
sys01= feedback(tf01,tf02);

disp(sys01);

step(sys01);

xlabel('tempo');
ylabel('saida v');
title('Sistema malha fechada');

Resultado da função de malha fechada

octave
Octave – Função de transferência

Pelo wiki: “Função de transferência é a representação matemática da relação entre a entrada e a saída de um sistema físico.”

Desta forma podemos simular equipamentos físicos através de funções matemáticas, simulando seus resultados.

De forma geral existem 2 tipo de simulação.

Sistema Malha Abertos – São sistemas que apresentam apenas uma entrada – > Com sua respectiva saída.

Já um sistema de malha fechada, possui feedback, sendo definido pela wiki como:

“Também chamado de controle retroativo (realimentação ou feedback) necessita de informações da saída do controlador através de elementos sensores ou transdutores, compara o sinal da saída com o set-point(referência) e corrige a saída caso a mesma esteja desviando-se dos parâmetros programados.”

Entendendo como funciona o sistema de malha aberta no OCTAVE:

Para entender o sistema de malha aberta , com uso da função de transferência, montei este vídeo para voces.

Podemos inicialmente verificar, que faz-se necessário o uso da lib control, pois o octave precisa desta lib para utilizar o sistema de transferencia.

Para isso usamos o comando:

pkg load control

Em seguida precisamos criar a função de transferência atribuindo o numerador num01 e denominador den01. Em criando a função de transferência, que será utilizada para injetar os valores de entrada.

Logo atribuimos a função tf(num,den) criando a variavel S01, que armazena a função de transferencia.

Agora por fim, atuaremos passando os valores de entrada, através do t, e plotando no gráfico, conforme a função step.

O resultado final fica conforme apresentado a seguir:

% Carrega o pacote da função de transferencia.
pkg load control

%      1
%  -------------
%   S^2 +2S + 10

% num01
% den01

%num01= [0,0,1];
num01 = [1];

den01= [1,2,10];

% Cria a funçao de transferencia
S01= tf(num01,den01);

disp(S01);

%Atribui um vetor de tempo
t= 0:0.1:10;



%Resposta ao degrau da função de transferencia
step(S01,t);

xlabel('Tempo');
ylabel('Saida (v)');
title('Resposta da Função de transferencia');
octave
Octave – Primeiro contato

Comentário

o Comentário é o % seguido do texto.

Conforme o exemplo:

% Isso é um comentário

Declaração de variável

x = 14;
resultado = x + 2;
resultado2 = x ^2 ;
resultado3 = (x ^2)/ (x*2)

As variáveis podem ser declaradas livremente no octave, conforme apresentado no código acima.

Trabalhando com vetor

Trabalhar com vetor é tão simples como manipular variáveis, para isso, basta declarar os elementos entre chaves [ ]

vt = [10,20,30]

resultado4 = vt*2;

vt2 = [1,2,3]
resultado5 = vt + vt2;

resultado6 = vt .* vt2;
disp(resultado6);
printf("O Resultado: %d",resultado6);

Podemos ver, no exemplo acima, que temos a variável vt, que tem 3 elementos, 10,20 e 30, armazenados.

Desta forma sempre que falarmos em vt, estaremos trabalhando com os valores [10,20,30]. Até que este seja modificado.

Ao declarar resultado4, fazemos a operação matemática de multiplicação por 2, ficando [20,40,60 como resultado na variável resultado4.

Comparando valores

Agora iremos usar o valor armazenado na variável para tomar uma decisão. Para isso usamos o comando if, conforme nosso exemplo.

x = 14;

printf("\n\n");
if (x == 12)
  printf("O valor bateu\n");
else
  printf("O valor nao bateu\n");
end;

printf("\n\n");
if (x < 12)
  printf("O valor é menor que 12\n");
else
  printf("O valor é maior ou igual a 12\n");
end;

Neste exemplo testamos o valor de x, verificando se este atende a condição onde == é valor igual ao definido, < (menor que o definido).

Atendendo o primeiro print será mostrado. Caso contrário, ele mostrará o print atribuído após o else.

O Else pode ser omitido, não tendo então exceção. Apenas condição de atendimento ao teste if.

en_USEnglish