Suporte Universal de Química
Projeto criado para atender necessidade pessoal.

Projeto:
https://grabcad.com/library/chemical-universal-bracket-1
Permite pendurar dispositivos e componentes de química.
Projeto criado para atender necessidade pessoal.

Projeto:
https://grabcad.com/library/chemical-universal-bracket-1
Permite pendurar dispositivos e componentes de química.
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
Ao digitar no spacy :
palavras = []
for token in doc:
token.pos_
Aparece uma série de abreviações.
Segue o significado destas aqui:
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:
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 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
Para executar um serviço digite:
systemctrl start [serviço]
Quem tiver interesse em continuar o treinamento de octave, pode adicionar o canal que eu recomendo:
https://www.youtube.com/channel/UCfu1un2W4wxpdjYekpfo4zQ
https://www.youtube.com/@marcelomaurin/videos
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

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');
o Comentário é o % seguido do texto.
Conforme o exemplo:
% Isso é um comentário
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.
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.
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.
Iremo hoje, usar o octave para definir e criar gráficos do segundo grau.
Para isso iremos utilizar o exemplo abaixo:
% Gerar gráfico de Função do Segundo Grau
% X^2 + 2X + 10
% 2X^2 +2X^1 + 10X^0
x = -10:0.1:10;
y = 2*x.^2 - 5*x - 100;
plot(x, y);
xlabel('x');
ylabel('f(x)');
title('Gráfico da função f(x) = x^2 + 2x + 10');
grid on;
Em gráficos do segundo grau, temos os valores de Y em função do X, sendo assim primeiramente atribuimos o x. O X recebe uma faixa de valores, ou seja, valores que serão apresentados ao Y, começando do -10 até o valor 10, pulando de 0.1 em 0.1.
Para isso usamos a seguinte sintaxe:
x = valor_inicial: pulo : valor_final
Onde:
Spacy é uma biblioteca de processamento de linguagem natural, desenvolvida para auxiliar na analise e identificação do contexto de textos.
Ela pode ser utilizada, quando há necessidade de entender o que foi escrito.
A lib é mantida pelo site:
Muito utilizada em NLP (Natural Linguage Process) Processamento de Linguagem Natural.
A biblioteca tenta analisar texto, sobre os aspectos de sua estrutura morfológica e sintática.
Identificando o sujeito da frase, os verbos e etc. Traçando também uma relação de dependência entre as diversas partes.
Todos os exemplos aqui descritos, estão em meu repositório:
https://github.com/marcelomaurin/ExSpacy
Instalação do Spacy
Estarei usando o python 3, e o procedimento de instalação é relativamente simples.
pip3 install spacy
No nosso repositório na pasta src/install, inclui um script ./install.sh que automatiza a instalação.
Porem considero que o usuário tenha instalado o python 3 previamente.
Para rodar o procedimento de instalação rode:
> /src/install/install.sh
Modelos são treinados para reconhecer aspectos de diversos idiomas, tais como o portugues.
Existem diversos modelos em diversos idiomas, voce pode escolher o modelo que deseja instalar através do link:
Os modelos em português não destoam do português Brasil, pois as regras ortográficas são as mesmas em qualquer pais com a língua.
Ao rodar nosso install o padrão do modelo com melhor acurácia, já será instalado automáticamente.
Agora iremos colocar a mão na massa!
Neste primeiro modelo, apresentamos um texto e analisamos o mesmo de forma sintática.
Esterei apresentando o Ex01 do nosso git:
import spacy
nlp = spacy.load("pt_core_news_lg")
import pt_core_news_lg
nlp = pt_core_news_lg.load()
doc = nlp("O Marcelo pegou COVID-19 em setembro de 2019, porem não teve problemas com isso")
for token in doc:
print("Token:"+token.text)
print("Pos:"+token.pos_)
Nele importamos a lib spacy, e em seguida carregamos a rede treinada pt_core_news_lg. Após isso identificamos o texto alvo através da variável doc.
E em seguida mostramos alguns resultados tokenizados.

O POS faz a analise do que significa o token.
Maior informação sobre a morfologia aplicada ao spacy pode ser vista no link abaixo:
https://spacy.io/api/morphologizer
Pudemos ver neste artigo os primeiros fundamentos da lib spaCy, espero que tenham gostado.