Tuesday, August 12, 2025

बॅग ऑफ वर्ड्स (Bag of Words): शब्दांची पिशवी

कल्पना करा की तुमच्याकडे काही वाक्ये आहेत आणि तुम्हाला ती संगणकाला समजावून सांगायची आहेत. संगणकाला कधीच थेट मराठी किंवा इंग्रजी भाषा समजत नाही; त्याला फक्त आकडे (numbers) समजतात. (हा संगणकाचा वैश्विक नियम आहे!) मग आपण आपल्या वाक्यांना किंवा मजकुराला (text) आकड्यांच्या स्वरूपात कसे बदलणार? इथेच "बॅग ऑफ वर्ड्स" ही पद्धत मदतीला येते. ही सर्वात जुनी पद्धत आहे.
"बॅग ऑफ वर्ड्स" हे नावाप्रमाणेच आहे. आपण एखाद्या वाक्यातील किंवा परिच्छेदातील सर्व शब्द घेतो, त्यांना व्याकरण किंवा शब्दांच्या क्रमाची पर्वा न करता एका काल्पनिक पिशवीत (bag) टाकतो. या पिशवीत कोणता शब्द किती वेळा आला आहे, फक्त याचीच नोंद ठेवली जाते. शब्दांचा क्रम, त्यांचे एकमेकांशी असलेले संबंध (व्याकरण) या गोष्टी विचारात घेतल्या जात नाहीत.
थोडक्यात सांगायचे तर, बॅग ऑफ वर्ड्स (BoW) ही मजकूर डेटाला संख्यात्मक स्वरूपात (numerical format) रूपांतरित करण्याची एक पद्धत आहे, जिथे प्रत्येक मजकूर (उदा. एक वाक्य) शब्दांच्या उपस्थितीच्या किंवा संख्येच्या आधारावर दर्शवला जातो.

"बॅग ऑफ वर्ड्स" कसे काम करते?

ही प्रक्रिया मुख्यत्वे तीन सोप्या टप्प्यांमध्ये विभागलेली आहे:
टप्पा १: टोकनायझेशन (Tokenization) - शब्दांना वेगळे करणे: या टप्प्यात, आपण दिलेला संपूर्ण मजकूर (ज्याला 'कॉर्पस' म्हणतात) घेतो आणि त्यातील प्रत्येक वाक्याला शब्दांमध्ये तोडतो. प्रत्येक शब्द हा एक 'टोकन' असतो. यामध्ये अनावश्यक चिन्हं (उदा. स्वल्पविराम, पूर्णविराम) काढून टाकली जातात आणि सर्व शब्दांना एकाच स्वरूपात (उदा. लहान लिपीत - lowercase) आणले जाते.

टप्पा २: शब्दसंग्रह तयार करणे (Building Vocabulary): एकदा सर्व मजकुरातील शब्द वेगळे केले की, आपण त्या सर्व शब्दांमधून फक्त एकदाच येणारे (unique) शब्द निवडून एक 'शब्दसंग्रह' (Vocabulary) तयार करतो. हा शब्दसंग्रह म्हणजे आपल्या संपूर्ण मजकुरात वापरल्या गेलेल्या सर्व अद्वितीय शब्दांची एक सूची असते.

टप्पा ३: व्हेक्टर तयार करणे (Vectorization): हा सर्वात महत्त्वाचा टप्पा आहे. इथे आपण प्रत्येक वाक्याला किंवा दस्तऐवजाला एका संख्यात्मक व्हेक्टरमध्ये (numerical vector) रूपांतरित करतो. हा व्हेक्टर आपल्या तयार केलेल्या शब्दसंग्रहाच्या आकाराचा असतो.

प्रत्येक वाक्यासाठी, आपण शब्दसंग्रहातील प्रत्येक शब्द तपासतो. तो शब्द त्या वाक्यात किती वेळा आला आहे, ती संख्या आपण व्हेक्टरमध्ये त्या शब्दाच्या जागी लिहितो. जर एखादा शब्द वाक्यात आला नसेल, तर आपण '0' लिहितो.

चला, हे एका सोप्या उदाहरणाने समजून घेऊया. समजा, आपल्याकडे खालील तीन वाक्ये आहेत:
    वाक्य १: मला क्रिकेट खेळायला आवडते.
    वाक्य २: माझा भाऊ फुटबॉल खेळतो.
    वाक्य ३: मला फुटबॉल आणि क्रिकेट दोन्ही आवडते.
आता आपण यावर "बॅग ऑफ वर्ड्स" मॉडेल लागू करू.

टप्पा १: टोकनायझेशन
प्रथम आपण प्रत्येक वाक्यातील शब्दांना वेगळे करू.
    वाक्य १: ["मला", "क्रिकेट", "खेळायला", "आवडते"]
    वाक्य २: ["माझा", "भाऊ", "फुटबॉल", "खेळतो"]
    वाक्य ३: ["मला", "फुटबॉल", "आणि", "क्रिकेट", "दोन्ही", "आवडते"]

टप्पा २: शब्दसंग्रह तयार करणे
आता आपण वरील सर्व शब्दांमधून अद्वितीय शब्दांची एक सूची (शब्दसंग्रह) तयार करू. आपण हे शब्द वर्णानुक्रमे (alphabetically) लावूया.

आपला शब्दसंग्रह (Vocabulary):
["आणि", "आवडते", "क्रिकेट", "खेळायला", "खेळतो", "दोन्ही", "फुटबॉल", "भाऊ", "मला", "माझा"]

या शब्दसंग्रहात एकूण १० अद्वितीय (unique) शब्द आहेत.
टप्पा ३: व्हेक्टर तयार करणे

आता आपण प्रत्येक वाक्यासाठी या १० शब्दांचा एक व्हेक्टर तयार करू. व्हेक्टरमध्ये आपण प्रत्येक शब्दाची संख्या (frequency) नोंदवू.

वाक्य १: "मला क्रिकेट खेळायला आवडते"

या वाक्याचा व्हेक्टर कसा दिसेल?
शब्दसंग्रहातील शब्द    वाक्यातील संख्या
आणि            0
आवडते    1
क्रिकेट    1
खेळायला    1
खेळतो    0
दोन्ही            0
फुटबॉल    0
भाऊ            0
मला            1
माझा            0

तर, वाक्य १ चा BoW व्हेक्टर असेल: [0, 1, 1, 1, 0, 0, 0, 0, 1, 0]

वाक्य २: "माझा भाऊ फुटबॉल खेळतो"
शब्दसंग्रहातील शब्द    वाक्यातील संख्या
आणि            0
आवडते    0
क्रिकेट    0
खेळायला    0
खेळतो    1
दोन्ही            0
फुटबॉल    1
भाऊ            1
मला            0
माझा            1

तर, वाक्य २ चा BoW व्हेक्टर असेल: [0, 0, 0, 0, 1, 0, 1, 1, 0, 1]

वाक्य ३: "मला फुटबॉल आणि क्रिकेट दोन्ही आवडते"
शब्दसंग्रहातील शब्द    वाक्यातील संख्या
आणि             1
आवडते     1
क्रिकेट     1
खेळायला     0
खेळतो     0
दोन्ही             1
फुटबॉल     1
भाऊ             0
मला             1
माझा             0

तर, वाक्य ३ चा BoW व्हेक्टर असेल: [1, 1, 1, 0, 0, 1, 1, 0, 1, 0]

आता संगणकासाठी आपली वाक्ये ही शब्दांची नसून, वरील आकड्यांची (व्हेक्टर्स) आहेत. या आकड्यांवर मशीन लर्निंग मॉडेल सहजपणे गणिती प्रक्रिया करू शकतात.




"बॅग ऑफ वर्ड्स" चे फायदे आणि तोटे

प्रत्येक तंत्रज्ञानाप्रमाणे याचेही काही फायदे आणि तोटे आहेत.
फायदे (Advantages):
- साधेपणा (Simplicity): ही पद्धत समजायला आणि लागू करायला खूप सोपी आहे.
- जलद प्रक्रिया (Fast): मजकुराला व्हेक्टरमध्ये रूपांतरित करण्याची प्रक्रिया खूप जलद होते.
- परिणामकारकता (Effectiveness): अनेक सोप्या कामांसाठी (जसे की मजकूर वर्गीकरण) ही पद्धत आश्चर्यकारकपणे प्रभावी ठरते.

तोटे (Disadvantages):
- शब्दांचा क्रम महत्त्वाचा नाही (Loss of Word Order): हा याचा सर्वात मोठा तोटा आहे. BoW मॉडेलसाठी " कुत्रा माणसाला चावला" आणि "माणसाने कुत्र्याला चावले" ही दोन्ही वाक्ये सारखीच आहेत, कारण दोन्हीमध्ये तेच शब्द आहेत. मात्र, दोन्ही वाक्यांचा अर्थ पूर्णपणे वेगळा आहे.
- संदर्भ आणि अर्थाचा अभाव (Loss of Context and Semantics): BoW शब्दांचा अर्थ किंवा संदर्भ समजत नाही. उदा. "He is feeling blue" (तो दुःखी आहे) आणि "His shirt is blue" (त्याचा शर्ट निळा आहे), या दोन्ही वाक्यांमध्ये 'blue' हा शब्द BoW साठी एकच आहे, पण त्याचे अर्थ वेगळे आहेत.
- शब्दसंग्रहाचा आकार (Vocabulary Size): जर मजकूर खूप मोठा असेल, तर शब्दसंग्रह प्रचंड मोठा होतो. यामुळे तयार होणारे व्हेक्टर्स खूप मोठे होतात आणि त्यातील बहुतेक मूल्ये '0' असतात (याला 'Sparsity' म्हणतात).
- महत्त्वाच्या शब्दांना ओळखत नाही: "आणि", "व", "आहे" यांसारखे वारंवार येणारे शब्द (stopwords) जास्त महत्त्वाचे नसतात, तरीही त्यांना BoW मध्ये जास्त वजन मिळते. (अर्थात, यावर उपाय म्हणून हे शब्द आधीच काढले जातात).

"बॅग ऑफ वर्ड्स" चा वापर कुठे होतो?

या पद्धतीचा वापर अनेक NLP कामांमध्ये केला जातो, जसे की:
- मजकूर वर्गीकरण (Text Classification): ई-मेल 'स्पॅम' आहे की नाही हे ओळखणे, बातमी कोणत्या प्रकारची आहे (क्रीडा, राजकारण, मनोरंजन) हे ठरवणे.
- भावना विश्लेषण (Sentiment Analysis): एखाद्या उत्पादनाबद्दल ग्राहकांची मते (reviews) सकारात्मक आहेत, नकारात्मक आहेत की तटस्थ आहेत, हे ओळखणे.
- दस्तऐवज समानता (Document Similarity): दोन दस्तऐवज एकमेकांशी किती मिळतेजुळते आहेत, हे त्यांच्या BoW व्हेक्टर्समधील समानतेवरून तपासणे.

"बॅग ऑफ वर्ड्स" ही एक मूलभूत परंतु अत्यंत शक्तिशाली संकल्पना आहे. ही पद्धत मजकुरातील शब्दांचा क्रम आणि व्याकरण गमावते, परंतु मजकुराला मशीन लर्निंग मॉडेलसाठी वापरण्यायोग्य संख्यात्मक स्वरूपात आणण्याचे महत्त्वाचे काम करते. जरी आज TF-IDF, Word2Vec, आणि BERT सारख्या अधिक प्रगत पद्धती उपलब्ध असल्या तरी, "बॅग ऑफ वर्ड्स" ही NLP च्या जगात पहिली पायरी म्हणून आजही महत्त्वाची आहे आणि अनेक ठिकाणी प्रभावीपणे वापरली जाते.

--- तुषार भ. कुटे 

No comments:

Post a Comment

to: tushar.kute@gmail.com