A funcionalidade de saco de palavras quantifica a frequência de palavras em documentos de texto para processamento em modelos de aprendizado de máquina. Sua variação TF-IDF gera modelos que explicam ainda mais a frequência das palavras em um corpus de documentos.
Bag of words (BoW; também estilizado como bag-of-words é uma técnica de extração de funcionalidades que modela dados de textos para processamento em algoritmos de recuperação de informações e aprendizado de máquina . Mais especificamente, os modelos BoW são uma variedade não estruturada de todas as palavras conhecidas em um documento de texto definido somente de acordo com a frequência, ignorando a ordem e o contexto das palavras.1 Bag of words é uma das várias etapas em muitos pipelines de mineração de texto.
A maioria dos pacotes de processamento de linguagem natural (PNL) vem carregada com funções para criar modelos de bag of words, como a função CountVectorizer do scikit-learn.
A caracterização de um saco de palavras pode, às vezes, ser considerada uma forma de processamento de texto de nível iniciante, dada a sua simplicidade conceitual ostensiva na contagem de palavras em um determinado conjunto de textos. No entanto, os modelos de saco de palavras são mais complicados.
A compreensão da caracterização do saco de palavras exige uma compreensão, pelo menos iniciante, dos espaços vetoriais. Um espaço vetorial é um espaço multidimensional no qual os pontos são plotados. Em uma abordagem de saco de palavras, cada palavra individual se torna uma dimensão (ou eixo) separada do espaço vetorial. Se um conjunto de textos tiver n número de palavras, o espaço vetorial resultante terá n dimensões, uma dimensão para cada palavra única no conjunto de textos. Em seguida, o modelo plota cada documento de texto separado como um ponto no espaço vetorial. A posição de um ponto em uma determinada dimensão é determinada pelo número de vezes que a palavra dessa dimensão aparece no documento do ponto.
Por exemplo, suponha que temos um conjunto de textos em que os conteúdos de dois documentos separados são, respectivamente:
Documento 1: Uma rosa é vermelha, uma violeta é azul
Documento 2: Meu amor é como uma rosa vermelha, vermelha
Como é difícil imaginar qualquer coisa além de um espaço tridimensional, nos limitaremos apenas a isso. Um espaço vetorial para um corpus contendo esses dois documentos teria dimensões separadas para vermelho, rosa e violeta. Um espaço vetorial tridimensional para essas palavras pode ter a seguinte aparência:
Como vermelho, rosa e violeta ocorrem uma vez no Documento 1, o vetor para esse documento neste espaço será (1,1,1). No Documento 2, vermelho aparece duas vezes, rosa uma vez e violeta não aparece. Assim, o ponto vetorial para o Documento 2 é (2,1,0). Ambos os pontos dos documentos serão mapeados no espaço vetorial tridimensional como:
Observe que essa figura visualiza documentos de texto como vetores de dados em um espaço de recursos tridimensional. Mas um bag of words também pode representar palavras como vetores de funcionalidades em um espaço de dados. Um vetor de funcionalidade significa o valor (ocorrência) de uma determinada funcionalidade (palavra) em um ponto de dados específico (documento). Portanto, os vetores de funcionalidades para vermelho, rosa e violeta nos Documentos 1 e 2 ficariam assim:2
Observe que a ordem das palavras nos documentos originais é irrelevante. Para um modelo de saco de palavras, tudo o que importa é o número de ocorrências de cada palavra no conjunto de textos.
Como os modelos de bag of words quantificam apenas a frequência de palavras em um determinado documento, o bag of words é frequentemente descrito como uma técnica de modelagem simples. Mas o bag of words auxilia em muitas tarefas do PNL, principalmente na classificação de documentos. Na verda, a literatura frequentemente discute o bag of words juntamente com classificadores estatísticos como o Naïve Bayes.3
As tarefas de classificação de textos interpretam essas palavras com alta frequência em um documento como representando as ideias principais do documento.4 Essa não é uma suposição irracional. Por exemplo, se algumas das palavras mais frequentes em um documento são presidente, eleitores e eleição, há uma grande probabilidade de que o documento seja um texto político, discutindo especificamente uma eleição presidencial. A classificação de textos com um bag of words extrapola que documentos com conteúdo semelhante são semelhantes em tipo.
Embora os classificadores probabilísticos que usam a abordagem do saco de palavras se mostrem amplamente eficazes, o saco de palavras tem várias desvantagens.
Correlação de palavras. O bag of words pressupõe que as palavras são independentes umas das outras em um documento ou corpus. É mais provável que eleição apareça em um contexto compartilhado com presidente do que com poeta. Ao medir a frequência de termos individuais, o bag of words não leva em conta correlações no uso entre palavras. Como o bag of words extrai cada palavra em um documento como uma funcionalidade do modelo de bag of words, com a frequência de termos sendo o peso dessa funcionalidade, duas ou mais palavras correlacionadas podem teoricamente induzir multicolinearidade em classificadores estatísticos usando esse modelo. No entanto, a suposição simplificadora do Naïve Bayes demonstrou produzir modelos robustos, apesar dessas limitações potenciais.5
Palavras compostas. A correlação de palavras se estende a representações de sacos de palavras de frases compostas, nas quais duas ou mais palavras operam como uma unidade semântica. Por exemplo, um modelo simples de saco de palavras pode representar Sr. Darcy como duas palavras únicas e não relacionadas, mesmo que funcionem em conjunto. Tal representação com um saco de palavras não reflete a natureza semântica e sintática dos conceitos com múltiplas palavras.
Palavras polissêmicas. Muitas palavras têm significados múltiplos e marcadamente diferentes. Por exemplo, taco pode significar um instrumento esportivo ou um alimento, e esses significados geralmente ocorrem em contextos significativamente diferentes. Da mesma forma, as palavras podem mudar de significado dependendo da colocação de sua ênfase na linguagem falada — por exemplo, CON-teúdo versus con-TEÚDO. Como o saco de palavras não leva em conta o contexto e o significado ao modelar palavras, ele agrupa todos esses significados distintos em uma única palavra, omitindo, assim, informações potencialmente significativas sobre o assunto de um texto (e, portanto, a classificação potencial).
Dispersão. Em um modelo de bag of words, cada palavra é uma funcionalidade, ou dimensão, do modelo, e cada assim chamado documento é um vetor. Como um documento não utiliza todas as palavras do vocabulário do modelo gerado, muitos dos valores das funcionalidades de um determinado vetor podem ser zero. Quando a maioria dos valores para vetores é zero, o modelo é disperso (se estiver representando vetores como uma matriz, isso é chamado de matriz dispersa). A dispersão do modelo resulta em alta dimensionalidade, o que, por sua vez, leva ao overfitting nos dados de treinamento.6
Bag de n-gramas. Adotar n-gramas em vez de palavras pode corrigir uma série de desvantagens inerentes aos modelos de bag of words. Em vez de criar um modelo em que cada palavra é uma funcionalidade, pode-se usar n-gramas como características vetoriais. Neste contexto, n se refere ao número de palavras que são tratadas como uma unidade semântica. Talvez o mais comum no conjunto de n-gramas sejam os bigramas (ou seja, duas palavras). Os bigramas de palavras são úteis porque podem representar palavras compostas, como Nova York ou Torre Eiffel. É claro que nem todos os bigramas de palavras são informativos, como por exemplo , em um ou de um. No entanto, essa é uma forma de levar em consideração questões como palavras compostas e correlação de palavras.7
Técnicas de normalização de textos. Dados de texto bruto podem precisar ser normalizados para melhorar a estrutura e a função dos modelos de bag of words. Ao criar um modelo de bag of words, ou bag de n-gramas, palavras como artigos (por exemplo, um, o etc.) e preposições (por exemplo, de, para, em etc.) podem ter o maior número de ocorrências. Essas palavras não fornecem muitas informações sobre o conteúdo ou tipo de um documento e, portanto, são amplamente inúteis em tarefas de classificação. Técnicas de pré-processamento de texto, como remoção de palavras vazias (frequentemente usadas em stemming), podem ajudar a remover palavras irrelevantes de conjuntos de dados de texto para ajudar a melhorar a estrutura de modelos de bag of words. Felizmente, muitas bibliotecas e pacotes Python, como NLTK ou sklearn, vêm com funções para conduzir técnicas comuns de pré-processamento.
Hashing. O hashing de funcionalidades essencialmente converte palavras individuais de dados de texto de entrada em um conjunto numérico de tamanho fixo. Então, esse intervalo fixo de números é usado para construir o espaço vetorial para o modelo de bag of words. Limitar o intervalo de números e, portanto, as dimensões do modelo, a um tamanho fixo ajuda a evitar dispersão e alta dimensionalidade. Uma desvantagem importante do hashing são as chamadas colisões. Uma colisão de hashing ocorre quando dois tokens não relacionados são mapeados no mesmo número inteiro. Outra desvantagem do hashing é que ele não leva em conta palavras polissêmicas.8
Com modelos padrão de sacos de palavras, as palavras semanticamente irrelevantes (por exemplo, o, alguns etc.) podem ter a frequência de termos mais alta e, portanto, maior peso em um modelo. A frequência inversa de documentos de frequência de termos (TF-IDF) tem como objetivo corrigir isso. Enquanto o saco de palavras conta apenas o número de vezes que uma palavra aparece em um documento, o TF-IDF contabiliza a prevalência da palavra em todos os documentos em um conjunto de texto. O TF-IDF é representado na equação:
Nessa equação, o primeiro termo é o valor calculado pelo modelo de bag of words, ou seja, a frequência do termo. O segundo termo representa a frequência inversa do documento. N é igual ao número total de documentos no conjunto de textos, e n é igual ao número de documentos em que uma determinada palavra aparece. Em quanto mais documentos uma determinada palavra aparecer, maior será a redução do peso dessa palavra pelo TF-IDF. Dessa forma, o TF-IDF é um exemplo de escalonamento de funcionalidades em modelos de aprendizado de máquina.9
Assim como os modelos gerais de saco de palavras, os pacotes NLP geralmente têm funções preexistentes para implementar o TF-IDF, como a função tfidfvectorizer do scikit-learn.
Variações de modelos de bag of words são usadas em uma variedade de tarefas de PLN. Por exemplo, a rede neural word2vec usa um bag of words contínuo para produzir modelos de incorporação de palavras.10 A análise e classificação de sentimentos também podem usar modelos de bag of words.11
A pesquisa inicial para uma grande quantidade de técnicas de PNL se concentra em inglês ou outros idiomas com alfabeto latino, como espanhol ou francês. Mais recentemente, pesquisadores se voltaram para outros idiomas, como o árabe. Estudos recentes examinaram a eficácia dos modelos de bag of words juntamente com outras ferramentas de PLN, como o word2vec, para análise e classificação de sentimentos de textos em árabe, com resultados promissores.12 Outros mostram o potencial dos classificadores Naïve Bayes baseados em modelos de bag of words para a desambiguação do sentido das palavras em textos em sânscrito.13
A abordagem de bag of words foi testada em algoritmos para detectar discurso de ódio em plataformas de redes sociais, com sucesso variável. Um estudo compara o bag of words com o word2vec e classificadores de deep learning como o BERT, argumentando que o BERT supera o bag of words e que o TF-IDF não melhora significativamente as previsões dos modelos de bag of words.14 Por outro lado, um estudo posterior apresenta um algoritmo que usa bag of words e Naïve Bayes para detecção de discurso de ódio com uma precisão de aproximadamente 99%.15 Diferenças no tamanho dos dados e na amostragem, bem como no pré-processamento de textos, podem contribuir para a diferença nessas descobertas. De fato, outros estudos sugerem que o desempenho comparativo entre o BERT e classificadores que usam o bag of words depende dos tamanhos das categorias de classificação do conjunto de dados.16
Mais recentemente, as comunidades de visão computacional adotaram sua própria variação de bag of words para extração de funcionalidades em tarefas de classificação e recuperação de imagens. Essa abordagem detecta e extrai funcionalidades de imagens e agrupa patches semelhantes como "palavras de código". Muitos dos desafios que assolam as abordagens de bag of words para classificação de imagens são os mesmos de outras tarefas de visão computacional: por exemplo, objetos com cores ou fundos semelhantes, objetos ocultos e sobrepostos, variação intraclasse e assim por diante.17
Projete assistentes e agentes de IA escaláveis com facilidade, automatize tarefas repetitivas e simplifique processos complexos com o IBM® watsonx Orchestrate.
Acelere o valor comercial da inteligência artificial com um portfólio poderoso e flexível de bibliotecas, serviços e aplicativos.
Reinvente os fluxos de trabalho e operações críticos adicionando IA para maximizar experiências, tomadas de decisão em tempo real e valor de negócios.
O IBM Granite é nossa família de modelos de IA abertos, de alto desempenho e confiáveis, personalizados para a empresa e otimizados para escalar suas aplicações de IA. Explore as opções de linguagens, código, séries temporais e proteções.
Descubra como o processamento de linguagem natural pode ajudar você a conversar de forma mais natural com computadores.
Entrevistamos duas mil organizações a respeito de suas iniciativas de IA para descobrir o que está funcionando, o que não está e como se preparar.
Explore o site do desenvolvedor da IBM para acessar blogs, artigos, boletins informativos e saber mais sobre a IA incorporável da IBM.
1 Ruslan Mitkov (ed.), Oxford Handbook of Computational Linguistics, 2nd edition, Oxford University Press, 2014.
2 Alice Zheng and Amanda Casari, Feature Engineering for Machine Learning, O’Reilly, 2018.
3 Daniel Jurafsky and James Martin, Speech and Language Processing: An Introduction to Natural Language Processing, Computational Linguistics, and Speech Recognition, 3rd edition, 2023, https://web.stanford.edu/~jurafsky/slp3. Christopher Manning and Hinrich Schütze, Foundations of Statistical Natural Language Processing, MIT Press, 2000.
4 Dongyang Yan, Keping Li, Shuang Gu, and Liu Yang, “Network-Based Bag-of-Words Model for Text Classification,” IEEE Access, Vol. 8, 2020, pp. 82641-82652, https://ieeexplore.ieee.org/document/9079815.
5 Christopher Manning and Hinrich Schütze, Foundations of Statistical Natural Language Processing, MIT Press, 2000.
6 Dani Yogatama, "Sparse Models of Natural Language Text," doctoral thesis, Carnegie Mellon University, 2015, https://lti.cmu.edu/people/alumni/alumni-thesis/yogatama-dani-thesis.pdf
7 Yoav Goldberg, Neural Network Methods for Natural Language Processing, Springer, 2022.
8 Alice Zheng and Amanda Casari, Feature Engineering for Machine Learning, O’Reilly, 2018.
9 Alice Zheng and Amanda Casari, Feature Engineering for Machine Learning, O’Reilly, 2018.
10 Tomas Mikolov, Kai Chen, Greg Corrado, and Jeffrey Dean, "Efficient Estimation of Word Representations in Vector Space," Workshop Track Proceedings of 1st International Conference on Learning Representations (ICLR), 2013, https://arxiv.org/abs/1301.3781.
11 Tan Thongtan and Tanasanee Phienthrakul, "Sentiment Classification Using Document Embeddings Trained with Cosine Similarity," Proceedings of the 57th Annual Meeting of the Association for Computational Linguistics: Student Research Workshop, 2019, pp. 407-414, https://aclanthology.org/P19-2057/.
12 Huda Abdulrahman Almuzaini and Aqil M. Azmi, "Impact of Stemming and Word Embedding on Deep Learning-Based Arabic Text Categorization," IEEE Access, Vol. 8, 2020, pp. 127913-127928, https://ieeexplore.ieee.org/abstract/document/9139948. Mohammed Kasri, Marouane Birjali, and Abderrahim Beni-Hssane, "A comparison of features extraction methods for Arabic sentiment analysis," Proceedings of the 4th International Conference on Big Data and Internet of Things (BDIoT '19), 2019, https://dl.acm.org/doi/abs/10.1145/3372938.3372998.
13 Archana Sachindeo Maurya, Promila Bahadur, and Srishti Garg, "Approach Toward Word Sense Disambiguation for the English-To-Sanskrit Language Using Naïve Bayesian Classification," Proceedings of Third Doctoral Symposium on Computational Intelligence, 2023, pp. 477–491, https://link.springer.com/chapter/10.1007/978-981-19-3148-2_40.
14 Joni Salminen, Maximilian Hopf, Shammur A. Chowdhury, Soon-gyo Jung, Hind Almerekhi, and Bernard J. Jansen, "Developing an online hate classifier for multiple social media platforms," Human-centric Computing and Information Sciences, Vol. 10, 2020, https://hcis-journal.springeropen.com/articles/10.1186/s13673-019-0205-6.
15 Yogesh Pandey, Monika Sharma, Mohammad Kashaf Siddiqui, and Sudeept Singh Yadav, "Hate Speech Detection Model Using Bag of Words and Naïve Bayes," Advances in Data and Information Sciences, 2020, pp. 457–470, https://link.springer.com/chapter/10.1007/978-981-16-5689-7_40.
16 Paula Fortuna, Juan Soler-Company, and Leo Wanner, "How well do hate speech, toxicity, abusive and offensive language classification models generalize across datasets?," Information Processing and Management, Vol. 58, 2021, https://www.sciencedirect.com/science/article/pii/S0306457321000339.
17 Wisam A. Qader, Musa M. Ameen, and Bilal I. Ahmed, “An Overview of Bag of Words: Importance, Implementation, Applications, and Challenges," Proceedings of the Fifth International Engineering Conference on Developments in Civil & Computer Engineering Applications (IEC2019), 2019, pp. 200-204, https://ieeexplore.ieee.org/document/8950616.