RUST
Instalando o RUST
  1. Entre no site:
  2. A linguagem de programação Rust (rust-lang.org)
  3. Baixe o instalador assistido para seu sistema operacional
  4. Baixe o compilador da sua plataforma

Execute o instalador, e aguarde o processo de instalação.

Após a instalação, rode o programa

cargo –version

teste do rust instalado

Após a sua instalação, o mesmo deve ser mostrado conforme apresentado.

Crie um hello world.rs

// This is a comment, and is ignored by the compiler.
// You can test this code by clicking the "Run" button over there ->
// or if you prefer to use your keyboard, you can use the "Ctrl + Enter"
// shortcut.

// This code is editable, feel free to hack it!
// You can always return to the original code by clicking the "Reset" button ->

// This is the main function.
fn main() {
    // Statements here are executed when the compiled binary is called.

    // Print text to the console.
    println!("Hello World!");
}

Pronto agora é só salvar na maquina.

Agora iremos criar o projeto

cargo init hello

Cria o projeto do rust

Será criado uma pasta com o mesmo nome do projeto.

Entre na pasta do projeto, hello, e digite.

cargo run

Compila e roda a aplicação

IA NLP
Etapas do desenvolvimento de aplicações IA

Neste fluxo bem simplificado, apresentamos uma visão de criação de uma IA.

Na primeira etapa, escolhemos os dados e entendemos a qualidade e características desses dados.

Em projetos de IA, nem sempre temos prontos os dados, muitas vezes precisamos preparar e coletar tais dados.

Em um segundo faz a preparação dos dados, acertando problemas e ajustando os dados. Na vida real, é praticamente impossível pegar bases prontas de clientes. Muitas vezes as bases de clientes, exigem uma analise e pré processamento, para realizar ajustes ou cortes. Necessários para obter dados coerentes com que queremos analisar.

A próxima etapa é separar dados em treinamento e testes. Onde usa-se o bom senso para avaliar as escolhas dos dados. Sendo uma referencia 70 /30% , onde 70 % dos itens serão utilizados para treinamento e os demais, serão usados para teste. Levando sempre em consideração a diversidade dos dados tanto para testes, como para treinamentos. A escolha aleatória dos 30% garante uma melhor probabilidade de sucesso, pois evita selecionar modelos com caracteristicas próximas , que podem iludir ou derrubar as estatísticas dos resultados.

Treinamento

O treinamento consiste em pegar os dados e aplicar a um modelo de IA conhecido, podendo ser NLP , redes convulocionais, ou outros tipos como Grafos.

Nesta etapa cria-se as estruturas e linguagem necessária para gerar a rede treinada.

Testes ou Validação

Nesta etapa usa-se os dados para gerar as informações separadas para validar a rede criada.

Analisando os resultados a partir de respostas conhecidas.

Melhoria ou Validação

A partir da analise dos resultados, são de fato, avaliados duas decisões:

Finalização do projeto ou etapa

Retorno a etapa de codificação, ajustando técnicas ou processos para corrigir problemas identificados.

Analise de Circuito
Analise de Circuito – Leis de Kirchhoff

Quem é Kirchhoff

Gustav Robert Kirchhoff foi um físico alemão que fez contribuições significativas em vários campos da física e da química. Ele é mais conhecido por suas leis que descrevem o fluxo de corrente elétrica em circuitos elétricos, as Leis de Kirchhoff, que são fundamentais para a engenharia elétrica e a física.

Kirchhoff nasceu em 1824 e faleceu em 1887. Durante sua vida, ele trabalhou em problemas de termodinâmica, óptica e espectroscopia, além de eletricidade. Junto com Robert Bunsen, Kirchhoff desenvolveu a espectroscopia, que é um método para analisar a composição química de materiais baseado na luz que eles emitem ou absorvem. Através desse trabalho, eles foram capazes de descobrir novos elementos químicos, como o césio e o rubídio.

As duas leis de Kirchhoff para circuitos elétricos, formuladas em 1845, são:

  1. A Lei dos Nós (ou Lei das Correntes de Kirchhoff): A soma das correntes que entram em um ponto (ou nó) do circuito é igual à soma das correntes que saem desse ponto. Isso é uma consequência da conservação da carga elétrica.
  2. A Lei das Malhas (ou Lei das Tensões de Kirchhoff): A soma das diferenças de potencial elétrico (tensões) em uma malha fechada é igual a zero. Isso é baseado no princípio da conservação de energia.

Essas leis são aplicadas no design e análise de circuitos elétricos, permitindo calcular correntes e tensões em diversos pontos de um circuito. Além de suas contribuições para a física, as descobertas de Kirchhoff tiveram um impacto duradouro em várias áreas da ciência e tecnologia.

Leis de Kirchhoff

As Leis de Kirchhoff são dois princípios aplicados em circuitos elétricos que ajudam a entender a conservação da carga e da energia em tais sistemas. Elas são fundamentais para a análise de circuitos elétricos em engenharia e física. As leis foram formuladas por Gustav Kirchhoff em 1845 e são conhecidas como Lei dos Nós (Primeira Lei) e Lei das Malhas (Segunda Lei).

1. Lei dos Nós (Lei das Correntes de Kirchhoff)

A Primeira Lei de Kirchhoff, ou Lei dos Nós, afirma que a soma algébrica das correntes em qualquer nó de um circuito é igual a zero. Isso significa que a quantidade total de corrente elétrica que flui para um nó é igual à quantidade total de corrente que sai dele. Matematicamente, isso pode ser expresso como:

ou, de forma mais geral,

onde ��Ik​ representa a corrente da k-ésima conexão em um nó, com correntes entrando no nó tratadas como positivas e correntes saindo como negativas. Essa lei é uma consequência da conservação da carga elétrica.

2. Lei das Malhas (Lei das Tensões de Kirchhoff)

A Segunda Lei de Kirchhoff, ou Lei das Malhas, afirma que a soma algébrica das diferenças de potencial (tensões) em qualquer malha fechada do circuito é igual a zero. Isso significa que a soma das quedas de tensão (consumo de energia) é igual à soma das tensões fornecidas (fontes de energia) em uma malha. Em outras palavras, a energia total em um circuito fechado é conservada. Matematicamente, pode ser expressa como:

ou, de forma mais geral,

onde Vk​ representa a diferença de potencial (tensão) na k-ésima componente da malha, com tensões no sentido do percurso assumidas como positivas e tensões contra o percurso como negativas.

Essas duas leis juntas permitem a análise completa de circuitos elétricos complexos, possibilitando calcular correntes e tensões em diversas partes de um circuito.

IA
Trabalhando com Matriz de Confusão

Acurácia

Diz os acertos:

Soma-se os Verdadeiros Positivos + Verdadeiros Negativos dividido pelo total de itens

\[a = {{(VP + VN)} \over T} \]

onde:

a = acuracia

VP = Verdadeiro Positivo

VN = Verdadeiro Negativo

T = Total de itens

Erros

Calcula o percentual de erros na matriz de confusão

\[ e = {{FP + FN} \over T } \]

Onde:

e = Percentual de erro

FP = Falso Positivo

FN = Falso Negativo

T = Total

Sensibilidade (Sensivity) ou Repescagem (RECALL)

Onde é possível medir a sensibilidade ao acerto.

\[ pv = { VP \over {VP+FN }} \]

onde:

pv = Positivo Verdadeiro

VP = Verdadeiro Positivo

FN = Falso Negativo

Precisão ou Precision

Diz quanto da amostra os acertos realmente são eficientes

\[ p = { VP \over {VP + FP } } \]

Onde:

p = Precisão

VP = Verdadeiro Positivo

FP = Falso Positivo

Negativo Verdadeiros ou Especificidade (Specifity)

Diz dos Negativos, quantos foram corretamente classificados.

\[ nv = { VN \over { VN + FP} } \]

Onde:

nv = Especificidade

VN = Verdadeiro Negativo

FP = Falso Positivo

Erro do Tipo 1 ou Positivo Falso

Onde de todos os Negativos, quantos foram classificados incorretamente

\[ pf = { FP \over { VN + FP} } \]

Onde:

pf = Positivo Falso

FP = Falso Positivo

VN = Verdadeiro Negativo

FP = Falso Positivo

Negativos Falsos ou Erro do Tipo II

De todos os Positivos, quantos foram classificados incorretamente como Negativo

\[ nf = { FN \over { VP + FN} } \]

Onde:

nf = Negativos Falsos

FN = Falso Negativos

VP = Verdadeiros Positivos

FN = Falso Negativos

F1 Score

Maximiza os acertos, com relação a precisão, onde valores mais próximos ao 1 são desejados.

\[ F1 = {1 \over { {1 \over p} + {1 \over r}} } \]

Onde:

F1 = Score

p = Precisão ou Precision

r = Sensibilidade (Sensivity) ou Repescagem (RECALL)

Logarithmic Loss (Perda Logarítmica)

A perda logarítmica, também conhecida como log loss ou cross-entropy loss, é uma medida de desempenho usada em problemas de classificação, especialmente em classificações binárias e multiclasse. Essa métrica quantifica quão distantes estão as probabilidades previstas de um modelo em relação aos valores verdadeiros ou reais (0 ou 1). A ideia é penalizar não apenas as classificações incorretas, mas também a confiança errada nas previsões.

Para uma previsão perfeita, a perda logarítmica é 0, e ela aumenta à medida que a previsão se afasta do valor real. Um aspecto importante da perda logarítmica é que ela penaliza severamente as previsões que estão confiantemente erradas. Por exemplo, uma previsão errada com alta certeza (por exemplo, prever a probabilidade de uma classe como 0.9 quando a classe verdadeira é a outra) resultará em uma penalidade maior do que uma previsão errada com baixa certeza.

A fórmula para a perda logarítmica em classificação binária é dada por:

Receiver Operator Characteristic (ROC)

A Característica de Operação do Receptor (ROC, do inglês “Receiver Operating Characteristic”) é uma ferramenta utilizada para avaliar o desempenho de modelos de classificação binária. Ela é representada graficamente por uma curva que compara a taxa de verdadeiros positivos (sensibilidade) com a taxa de falsos positivos (1 – especificidade), para diferentes limiares de decisão.

A área sob a curva ROC (AUC, do inglês “Area Under the ROC Curve”) é um indicador da capacidade do modelo de discriminar entre as duas classes. Um valor de AUC igual a 1 indica um modelo perfeito, capaz de separar completamente as duas classes sem erros. Um valor de AUC igual a 0,5 sugere um desempenho não melhor do que o acaso, ou seja, o modelo não tem capacidade de discriminação entre as classes.

A curva ROC é particularmente útil porque permite a avaliação do desempenho do modelo em diferentes limiares, facilitando a escolha de um ponto de corte que equilibre entre a captura de verdadeiros positivos e a minimização de falsos positivos, de acordo com o contexto e os custos associados a cada tipo de erro.

AUC – Area Under Curve

AUC, que significa “Área Sob a Curva”, é um termo amplamente utilizado em análise de dados e machine learning, especialmente quando se refere à Curva ROC (Característica de Operação do Receptor). A AUC é uma métrica que quantifica o desempenho geral de um modelo de classificação, independentemente do limiar de decisão aplicado.

Características Principais da AUC

  • Avaliação de Desempenho: A AUC mede a capacidade do modelo de discriminar entre classes positivas e negativas. Um modelo com uma AUC de 1.0 é considerado perfeito, capaz de separar perfeitamente as duas classes. Um modelo com uma AUC de 0.5 não tem capacidade de discriminação, equivalente a um palpite aleatório.
  • Independente do Limiar: A AUC é particularmente útil porque é independente do ponto de corte escolhido. Isso significa que ela fornece uma medida do desempenho do modelo que não é afetada pela seleção de um limiar específico para a classificação de positivos e negativos.
  • Comparação de Modelos: A AUC permite comparar o desempenho de diferentes modelos de classificação diretamente. Um modelo com uma AUC maior é geralmente considerado melhor na discriminação das classes.
  • Aplicável em Diversos Contextos: Embora frequentemente associada à Curva ROC, o conceito de AUC pode ser aplicado a outras curvas, como a Curva Precision-Recall, especialmente em contextos onde as classes são muito desbalanceadas.

Limitações

  • Não Capta Todas as Dimensões de Desempenho: Embora a AUC forneça uma medida útil do desempenho geral de um modelo, ela não captura todas as nuances, como o equilíbrio entre sensibilidade e especificidade ou a precisão das previsões positivas (precisão).
  • Desbalanceamento de Classes: Em situações com desbalanceamento acentuado de classes, a AUC pode ser enganosa, sugerindo um desempenho melhor do que o modelo realmente apresenta, especialmente se a preocupação é com a precisão da classificação da classe minoritária.

Conclusão

A AUC é uma métrica valiosa para avaliar e comparar modelos de classificação, oferecendo uma visão geral da capacidade do modelo de discriminar entre classes. Contudo, é importante considerá-la junto a outras métricas para obter uma avaliação completa do desempenho do modelo.

IA NLP
Spacy trabalhando com Matcher

Uso da biblioteca spacy para pesquisa de caracteres usando matcher.

#!pip install spacy
import spacy
import spacy.util
from spacy.matcher import Matcher
# Verifica se o modelo 'pt_core_news_sm' está instalado
if not spacy.util.is_package("pt_core_news_sm"):
    # Se não estiver instalado, baixa o modelo
    !python -m spacy download pt_core_news_sm
else:
    print("Modelo 'pt_core_news_sm' já está instalado.")

# Carrega o modelo de linguagem do spaCy
nlp = spacy.load("pt_core_news_sm")

# Cria o objeto Matcher e o vincula ao vocabulário do modelo de linguagem
matcher = Matcher(nlp.vocab)

def ContarOcorrenciasPalavra(palavra, lista_textos):
    # Ajusta a palavra para lowercase
    palavra = palavra.lower()
    
    total_ocorrencias = 0

   
    # Define o padrão para procurar a palavra, considerando a correspondência de texto exato em lowercase
    pattern = [{"TEXT": palavra}]
    matcher.add("PADRAO", [pattern])

    # Converte o texto para lowercase e processa com o spaCy
    doc = nlp(lista_textos.lower())
    matches = matcher(doc)
        
    # Para cada correspondência encontrada, imprime detalhes
    for match_id, start, end in matches:
            matched_span = lista_textos[start:end]
            print(f"Achou no Texto: {lista_textos}; Palavra: '{matched_span}' na POS: {start} até {end}")
            
            total_ocorrencias += 1

    return total_ocorrencias

textos = ["Neste exemplo de caso de uso.", "São exemplos de figura de linguagem aplicadas ao exemplo.", "Este exemplo possui um erro semantico.", "Tal qual o exemplo a seguir."]
for texto in textos:
    print("Texto:"+texto)
    ContarOcorrenciasPalavra("exemplo",texto)
    ContarOcorrenciasPalavra("uso",texto)
    ContarOcorrenciasPalavra("figura",texto)
    ContarOcorrenciasPalavra("aplicadas",texto)

Saída do programa ao rodar

Texto:Neste exemplo de caso de uso.
Achou no Texto: Neste exemplo de caso de uso.; Palavra: 'e' na POS: 1 até 2
Achou no Texto: Neste exemplo de caso de uso.; Palavra: 'e' na POS: 1 até 2
Achou no Texto: Neste exemplo de caso de uso.; Palavra: ' ' na POS: 5 até 6
Achou no Texto: Neste exemplo de caso de uso.; Palavra: 'e' na POS: 1 até 2
Achou no Texto: Neste exemplo de caso de uso.; Palavra: ' ' na POS: 5 até 6
Achou no Texto: Neste exemplo de caso de uso.; Palavra: 'e' na POS: 1 até 2
Achou no Texto: Neste exemplo de caso de uso.; Palavra: ' ' na POS: 5 até 6
Texto:São exemplos de figura de linguagem aplicadas ao exemplo.
Achou no Texto: São exemplos de figura de linguagem aplicadas ao exemplo.; Palavra: ' ' na POS: 3 até 4
Achou no Texto: São exemplos de figura de linguagem aplicadas ao exemplo.; Palavra: 'e' na POS: 6 até 7
Achou no Texto: São exemplos de figura de linguagem aplicadas ao exemplo.; Palavra: 'p' na POS: 8 até 9
Achou no Texto: São exemplos de figura de linguagem aplicadas ao exemplo.; Palavra: ' ' na POS: 3 até 4
Achou no Texto: São exemplos de figura de linguagem aplicadas ao exemplo.; Palavra: 'e' na POS: 6 até 7
Achou no Texto: São exemplos de figura de linguagem aplicadas ao exemplo.; Palavra: 'p' na POS: 8 até 9
Achou no Texto: São exemplos de figura de linguagem aplicadas ao exemplo.; Palavra: ' ' na POS: 3 até 4
Achou no Texto: São exemplos de figura de linguagem aplicadas ao exemplo.; Palavra: 'e' na POS: 6 até 7
Achou no Texto: São exemplos de figura de linguagem aplicadas ao exemplo.; Palavra: 'p' na POS: 8 até 9
Achou no Texto: São exemplos de figura de linguagem aplicadas ao exemplo.; Palavra: ' ' na POS: 3 até 4
Achou no Texto: São exemplos de figura de linguagem aplicadas ao exemplo.; Palavra: 'e' na POS: 6 até 7
Achou no Texto: São exemplos de figura de linguagem aplicadas ao exemplo.; Palavra: 'p' na POS: 8 até 9
Texto:Este exemplo possui um erro semantico.
Achou no Texto: Este exemplo possui um erro semantico.; Palavra: 's' na POS: 1 até 2
Achou no Texto: Este exemplo possui um erro semantico.; Palavra: 's' na POS: 1 até 2
Achou no Texto: Este exemplo possui um erro semantico.; Palavra: 's' na POS: 1 até 2
Achou no Texto: Este exemplo possui um erro semantico.; Palavra: 's' na POS: 1 até 2
Texto:Tal qual o exemplo a seguir.
Achou no Texto: Tal qual o exemplo a seguir.; Palavra: ' ' na POS: 3 até 4
Achou no Texto: Tal qual o exemplo a seguir.; Palavra: ' ' na POS: 3 até 4
Achou no Texto: Tal qual o exemplo a seguir.; Palavra: ' ' na POS: 3 até 4
Achou no Texto: Tal qual o exemplo a seguir.; Palavra: ' ' na POS: 3 até 4
Sem categoria
Processamento de Sinais – Aula 2

Prof. Raphael Lopes Pinheiro raphael.pinheiro01@fatec.sp.gov.br

raphael.pinheiro@usp.br

Atividade de Processamento de Sinais.

Segue o código do projeto complementar

texto = 'A caixa 1 é azul, A caixa 2 é verde e caixa 3 é vermelha'
print(texto.replace('caixa','lata'))

Exercício 2.1 –

Escreva um programa que receba o salário de um funcionário (float), e retorne o resultado do novo salário com reajuste de 35%.

def calcular_novo_salario(salario):
    reajuste = salario * 0.35
    novo_salario = salario + reajuste
    return novo_salario

def main():
    salario = float(input("Digite o salário do funcionário: "))
    novo_salario = calcular_novo_salario(salario)
    print(f"O novo salário com reajuste de 35% é: R$ {novo_salario:.2f}")

if __name__ == "__main__":
    main()

Sem categoria
Elem. de Precisão I – Revisão de física

Revisão de trigonometria.

Revisão de estudo de força

Lei dos cosenos

A Lei dos Cossenos é uma importante fórmula usada na trigonometria para estabelecer uma relação entre os lados de um triângulo e o cosseno de um de seus ângulos. Essencialmente, ela permite calcular um lado de um triângulo quando conhecemos os outros dois lados e um ângulo, ou calcular um ângulo quando conhecemos todos os três lados. A Lei dos Cossenos é particularmente útil para triângulos que não são retângulos, onde o Teorema de Pitágoras não se aplica.

A fórmula da Lei dos Cossenos é expressa da seguinte forma:

�2=�2+�2−2��cos⁡(�)c2=a2+b2−2abcos(C)

Nesta equação:

  • c representa o comprimento do lado do triângulo oposto ao ângulo C.
  • a e b são os comprimentos dos outros dois lados.
  • cos(C) é o cosseno do ângulo oposto ao lado c.

A Lei dos Cossenos pode ser reorganizada para resolver diferentes tipos de problemas, como encontrar o ângulo C quando os três lados são conhecidos:

cos(C)=2aba2+b2−c2​

Esta lei é uma generalização do Teorema de Pitágoras. De fato, quando o ângulo C é um ângulo reto (90 graus), o cos(C) é 0, e a fórmula se reduz ao bem conhecido .

A Lei dos Cossenos é aplicável em muitos contextos diferentes, desde a resolução de problemas puramente geométricos até aplicações mais práticas em física, engenharia e navegação, permitindo calcular distâncias indiretas e ângulos quando a medição direta não é possível.

Fundamentos de Fisiologia Humana
Sistema Digestório

Processos associados

  • Apreensão
  • Mastigação
  • Deglutição
  • Absorção

Escreta – Algo tóxico produzido ou derivado do processo metabólico.

Digestão mecânica (Mastigação , deglutição e peristaltismo)

Digestão Química (Hidrolise enzimática das moléculas de alimento)

Lumem – Espaço transitório

Boca

PH aproximadamente 7.2

Umedece e amolece, principalmente a enzima amilase salivar. (ptialina)

Estômago

PH acido 2

Enzima pepsina (pepsinogênio – inativa) – Ativado pelo acido cloridrico.

Refluxo gástrico

Intestino delgado

Responsável pela digestão

Pancreatite

Pancreatite e Pedra na vesícula

Proteínas sistema circulatório

lipídios – Sistema linfático.

Intestino grosso, absorção de agua e eletrólito (sais minerais)

MNote2 srvFalar
MNote 2.32

Fechamos a versão 2.31 e demos inicio a versão 2.32.

Na versão 2.31 foram feitos as seguintes mudanças:

  • Melhora no tratamento das janelas
  • Correções no CHATGPT e uso da API
  • Correções no MQUERY para Windows
  • Criação de gráficos a partir dos datasets de select
  • Exportação para JSON e CSV dos datasets
  • Importação de CSV de dados para Mysql
  • Sintetização de vóz para windows e Linux.
  • Inicio da integração da ferramenta de criação de treinamento de redes neurais
  • srvFalar associado ao projeto MNote

Estas modificações já estão disponíveis em Windows e Linux, e em breve atualizadas na versão ARM.

Sintetização de Voz

Apresentação de melhorias na versão 2.31 usando o chatgpt.

Criação de Gráficos

Criação de gráficos no MNote2

ESPEAK MNote2 srvFalar
srvFalar para windows

Depois de algum tempo lançamos a primeira versão pré beta do srvFalar para windows.

Nessa feature desenvolvemos a aplicação amarrada ao eSpeak, porem ainda não a lib.

Foi desenvolvido a função Ler usando eSpeak integrada a LIB, e a biblioteca SAPI do windows, nativa para do próprio windows.

Para quem não conhece o srvFalar, se trata de um serviço de sintetização de voz, que permite sintetizar voz através de socket.

Estaremos disponibilizando tambem recurso para web api em breve.

GitHub – marcelomaurin/srvFalar

pt_BRPortuguese