Pular para conteúdo

REMOVE_PUNCTUATION - Remoção de Pontuação

O que é esta operação?

A operação REMOVE_PUNCTUATION remove toda pontuação (.,!?;:-'"() etc) mantendo apenas letras, números e espaços.

Por que esta operação existe?

Pontuação pode ser ruído em análise de palavras. Esta operação existe para:

  1. Tokenização de Texto: Preparar texto para bag-of-words removendo pontuação
  2. Contagem de Palavras: Garantir que "palavra" e "palavra!" sejam contadas como iguais
  3. Análise de Frequência: Focar apenas em termos sem símbolos de pontuação
  4. Matching de Strings: Comparar textos ignorando pontuação

Como funciona internamente?

Código interno (content-cleaner-executor.service.ts:262-265):

// Remove punctuation
if (config.removePunctuation === true && config.removeSpecialChars !== true) {
  cleaned = cleaned.replace(/[.,\/#!$%\^&\*;:{}=\-_`~()'"?]/g, '');
}

Parâmetros

Campo Tipo Obrigatório Descrição
inputVariable string Sim Variável contendo o texto
removePunctuation boolean Não Remove pontuação (padrão: false)
outputVariable string Não Variável para resultado

Exemplo: Preparação para Bag-of-Words

{
  "name": "Preparar Texto para BoW",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "variable_1",
      "type": "variable",
      "position": { "x": 300, "y": 100 },
      "data": {
        "label": "Texto Original",
        "parameters": {
          "variableName": "text",
          "variableValue": "Olá! Como vai? Estou bem, obrigado. E você?"
        }
      }
    },
    {
      "id": "cleaner_1",
      "type": "content_cleaner",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Remover Pontuação",
        "parameters": {
          "inputVariable": "text",
          "removePunctuation": true,
          "toLowerCase": true,
          "removeExtraSpaces": true,
          "outputVariable": "tokenizable_text"
        }
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 700, "y": 100 },
      "data": {
        "label": "Texto Tokenizável",
        "parameters": {
          "message": "📊 Pronto para tokenização:\n{{tokenizable_text}}"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 900, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "variable_1" },
    { "source": "variable_1", "target": "cleaner_1" },
    { "source": "cleaner_1", "target": "message_1" },
    { "source": "message_1", "target": "end_1" }
  ]
}

Saída:

📊 Pronto para tokenização:
olá como vai estou bem obrigado e você

Boas Práticas

SIM: Bag-of-words, contagem de frequência de palavras, comparação de similaridade textual ❌ NÃO: Análise de sentimento (! e ? indicam emoção), textos onde pontuação tem significado

Dicas

💡 Dica 1: Não é aplicada se removeSpecialChars: true (que já remove pontuação) 💡 Dica 2: Combine com toLowerCase para normalização completa de tokens 💡 Dica 3: Use removeExtraSpaces após para limpar espaços duplos resultantes

Próximo Node

REMOVE_SPECIAL_CHARS - Remove todos caracteres especiais (inclui pontuação) → TO_LOWERCASE - Converte para minúsculas