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:
- Tokenização de Texto: Preparar texto para bag-of-words removendo pontuação
- Contagem de Palavras: Garantir que "palavra" e "palavra!" sejam contadas como iguais
- Análise de Frequência: Focar apenas em termos sem símbolos de pontuação
- 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