Exemplo API – Binary vs Base64

Este post, esclarece as diferenças de uma API que permite integrar arquivos, através de arquivo binário e base 64. Um ponto importante é que utilizando o formato Base 64, o payload aumenta 33% (em média), nas chamadas GET/POST.

O exemplo utiliza Spring Boot.

Desenho da Solução

A solução utiliza REST API, armazenando o arquivo em File System (/uploads/) no local onde a aplicação está rodando.

Swagger UI

De forma a facilitar o entendimento a API, o projeto conta com o Swagger UI, através do Spring Fox.

Para acessar o Swagger UI, basta subir a aplicação e acessar http://localhost:8080/swagger-ui.html.

Postman

GET – List Files

GET – Specif File (obtenção de arquivo binário)

GET – Specif File 64 (obtenção do arquivo em base64 – em torno de 33% maior que o binário) – Verifique o tamanho em Content-Length (12.764) – O arquivo binário tem 9.572 bytes.

POST – Post File

POST – Post File 64

Código

O código-fonte pode ser baixado no Github.

Instalando R no Ubuntu

Como o R é um projeto em constante atualização, a versão estável mais recente nem sempre está disponível nos repositórios do Ubuntu. Sendo assim, vamos começar adicionando o repositório externo mantido pelo CRAN.

Nota: o CRAN mantém os repositórios dentro de sua rede, mas nem todos os repositórios externos são confiáveis. Certifique-se de instalar apenas a partir de fontes confiáveis.

Vamos primeiro adicionar a chave GPG relevante.

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9

 Copy

Ao executarmos o programa, vamos receber o seguinte resultado:

OutputExecuting: /tmp/apt-key-gpghome.cul0ddtmN1/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9
gpg: key 51716619E084DAB9: public key "Michael Rutter <marutter@gmail.com>" imported
gpg: Total number processed: 1
gpg:               imported: 1

Assim que tivermos a chave confiável, podemos adicionar o repositório.

Se você não estiver usando a versão 20.04, será possível encontrar o repositório relevante da lista Ubuntu do projeto R, nomeada para cada versão. O Ubuntu 20.04 é conhecido como Focal Fossa, e a versão mais recente do R é a 4.1.0. Por conta disso, este é o nome convencionado do repositório abaixo — focal-cran40.

$ sudo add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/'

 Copy

Dentro do resultado exibido, você deve identificar linhas semelhantes às seguintes:

Output...
Get:7 https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/ InRelease [3622 B]                  
Get:8 https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/ Packages [15.6 kB]
...

Agora, precisaremos executar update (atualizar) após isso para incluir os manifestos de pacotes do novo repositório.

$ sudo apt update

 Copy

Certifique-se de que uma das linhas do resultado é semelhante à seguinte:

Output...
Hit:5 https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/ InRelease
...

Se a linha acima aparecer no resultado do comando update, adicionamos o repositório com sucesso. Podemos garantir que não instalaremos acidentalmente uma versão mais antiga.

Neste ponto, estamos prontos para instalar o R com o seguinte comando.

$ sudo apt install r-base

 Copy

Se for solicitado a confirmar a instalação, pressione y para continuar.

No momento em que este tutorial está sendo escrito, a versão estável mais recente do R do CRAN é a 4.1.0, que é exibida quando você inicia o R.

Como estamos planejando instalar um pacote de exemplo para cada usuário no sistema, iniciaremos o R como root para que as bibliotecas estejam disponíveis para todos os usuários automaticamente. De forma alternativa, se você executar o comando R sem o sudo, uma biblioteca pessoal pode ser configurada para seu usuário.

$ sudo -i R

 Copy

Output
R version 4.0.0 (2020-04-24) -- "Arbor Day"
Copyright (C) 2020 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)
...
Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.

>

Isso confirma que instalamos o R com sucesso e entramos em seu shell interativo.

Para verificar a versão instalada, digite o comando

$ R --version

NLP – Natural Language Processing

Layers

  1. Input and initial processing—Taking in speech or text and breaking it up into smaller pieces for processing. For speech, this step is called phonetic analysis, and consists of breaking down the speech into individual sounds, called phonemes. For text input, this can include optical character recognition (OCR) and tokenization. OCR is used to recognize the individual characters in text if it’s coming in as an image rather than as words made of characters. Tokenization refers to breaking down a continuous text into individual tokens, often words.
  2. Morphological analysis—Breaking down complex words into their components to better understand their meaning. For example, you can break down “incomprehensible” into its component parts.
    • “in”—not
    • “comprehens”—to understand or comprehend
    • “ible”—indicates that this word is an adjective, describing whether something can be comprehended
  3. Syntactic analysis—Trying to understand the structure of sentences by looking at how the words work together. This step is like diagramming a sentence, where you identify the role each word is playing in the sentence.
  4. Semantic interpretation—Working out the meaning of a sentence by combining the meaning of individual words with their syntactic roles in the sentence.
  5. Discourse processing—Understanding the context around a sentence to fully process what it means.
1. Speech (phonetic/phonological analysis) or text (OCR/tokenization); 2. Morphological analysis; 3. Syntactic analysis; 4. Semantic interpretation; 5. Discourse processing

Fonte: https://trailhead.salesforce.com/pt-BR/content/learn/modules/deep-learning-and-natural-language-processing/start-with-nlp