Questão nº 28
Questão de Tecnologia da Informação · FGV CVM 2024 (nº 28)
Igor, analista de dados da CVM, escreveu e rodou o código a seguir.
```python
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
texto = "Eu sou um analista de dados da CVM!"
stop_words = set(stopwords.words('portuguese'))
tokens = word_tokenize(texto)
tokens_processados = [w for w in tokens if not w in stop_words]
print(tokens_processados)
```
Considerando que o código foi executado sem erros e sabendo que Igor está usando Python 3.10.12 e NLTK 3.8.1, a saída do terminal foi:
- A['analista', 'dados', 'CVM'];
- B['analista', 'dados', 'CVM', '!'];
- C['Eu', 'analista', 'dados', 'CVM'];
- D['Eu', 'analista', 'dados', 'CVM', '!']; (alternativa correta)
- E['Eu', 'sou', 'analista', 'dados', 'CVM', '!'].
Resposta comentada
Gabarito Alternativa D
Stop words são palavras comuns (como 'eu', 'o', 'a') que geralmente não adicionam muito significado a uma frase e são removidas para focar nas palavras mais importantes, enquanto a tokenização é o processo de dividir um texto em unidades menores, como palavras ou pontuações.
- (A) Incorreta: Esta alternativa assume que a remoção de stop words é case-insensitive (removendo 'Eu') e que a pontuação ('!') é automaticamente descartada, o que não ocorre com o código fornecido. Armadilha da banca: Muitos esperam que a remoção de stop words inclua uma etapa de conversão para minúsculas e descarte de pontuação, mas o código não implementa essas ações.
- (B) Incorreta: Assume que a remoção de stop words é case-insensitive, removendo 'Eu' (que não é removido pelo código devido à capitalização).
- (C) Incorreta: Assume que a pontuação ('!') é automaticamente descartada, o que não acontece com o
word_tokenizedo NLTK que a trata como um token separado. - (D) Correta: O
word_tokenizesepara a pontuação ('!') como um token distinto. A lista de stop words (stopwords.words('portuguese')) contém palavras em minúsculas. Como a comparaçãow in stop_wordsé case-sensitive, 'Eu' (com 'E' maiúsculo) não é encontrado na lista de stop words (que contém 'eu' minúsculo) e, portanto, não é removido. As palavras 'sou', 'um', 'de', 'da' são removidas por estarem na lista de stop words em minúsculas. - (E) Incorreta: Não removeu a stop word 'sou', que está presente na lista de stop words em português e seria removida pelo código.
Fonte: FGV CVM 2024 Analista CVM - Ciência de Dados (Perfil 7) (Caderno Tipo 1). Reproduzida para fins de estudo.