गेंसिम - शब्दों का एक बैग (BoW) कॉर्पस बनाना
हमने समझा है कि दस्तावेज़ों की सूची और पाठ फ़ाइलों से (एक से अधिक के साथ-साथ एक से) शब्दकोश कैसे बनाया जाए। अब, इस भाग में, हम एक बैग-ऑफ-वर्ड्स (BoW) कॉर्पस बनाएंगे। जेनसिम के साथ काम करने के लिए, यह उन सबसे महत्वपूर्ण वस्तुओं में से एक है जिनसे हमें परिचित होना चाहिए। मूल रूप से, यह कॉर्पस है जिसमें प्रत्येक दस्तावेज़ में आईडी और इसकी आवृत्ति शामिल है।
एक BoW कॉर्पस बनाना
जैसा कि चर्चा की गई है, गेंसिम में, कॉर्पस में प्रत्येक दस्तावेज में आईडी शब्द और इसकी आवृत्ति शामिल है। हम दस्तावेजों की एक सरल सूची और पाठ फ़ाइलों से एक BoW कॉर्पस बना सकते हैं। हमें क्या करने की आवश्यकता है, नाम की वस्तु को शब्दों की टोकन सूची पास करने के लिएDictionary.doc2bow()। तो पहले, चलो दस्तावेजों की एक सरल सूची का उपयोग करके BoW कॉर्पस बनाकर शुरू करते हैं।
वाक्य की एक साधारण सूची से
निम्नलिखित उदाहरण में, हम एक साधारण सूची से BoW कॉर्पस बनाएंगे जिसमें तीन वाक्य होंगे।
सबसे पहले, हमें सभी आवश्यक पैकेजों को निम्नानुसार आयात करना होगा -
import gensim
import pprint
from gensim import corpora
from gensim.utils import simple_preprocess
अब सूची युक्त वाक्य प्रदान करें। हमारी सूची में तीन वाक्य हैं -
doc_list = [
"Hello, how are you?", "How do you do?",
"Hey what are you doing? yes you What are you doing?"
]
अगला, वाक्यों का टोकन निम्नानुसार है -
doc_tokenized = [simple_preprocess(doc) for doc in doc_list]
का एक ऑब्जेक्ट बनाएँ corpora.Dictionary() निम्नानुसार है -
dictionary = corpora.Dictionary()
अब इन टोकन वाक्यों को पास करें dictionary.doc2bow() objectनिम्नानुसार है -
BoW_corpus = [dictionary.doc2bow(doc, allow_update=True) for doc in doc_tokenized]
आखिरकार हम शब्द कोष के बैग को प्रिंट कर सकते हैं -
print(BoW_corpus)
उत्पादन
[
[(0, 1), (1, 1), (2, 1), (3, 1)],
[(2, 1), (3, 1), (4, 2)], [(0, 2), (3, 3), (5, 2), (6, 1), (7, 2), (8, 1)]
]
उपरोक्त आउटपुट से पता चलता है कि आईडी = 0 वाला शब्द पहले दस्तावेज़ में एक बार दिखाई देता है (क्योंकि हमें आउटपुट में 0,1 मिला है) और इसी तरह।
उपरोक्त आउटपुट किसी तरह मनुष्य के लिए पढ़ना संभव नहीं है। हम इन id को शब्दों में भी बदल सकते हैं लेकिन इसके लिए हमें अपने शब्दकोश को रूपांतरित करने की आवश्यकता है -
id_words = [[(dictionary[id], count) for id, count in line] for line in BoW_corpus]
print(id_words)
उत्पादन
[
[('are', 1), ('hello', 1), ('how', 1), ('you', 1)],
[('how', 1), ('you', 1), ('do', 2)],
[('are', 2), ('you', 3), ('doing', 2), ('hey', 1), ('what', 2), ('yes', 1)]
]
अब उपरोक्त आउटपुट किसी तरह मानव पठनीय है।
पूर्ण कार्यान्वयन उदाहरण
import gensim
import pprint
from gensim import corpora
from gensim.utils import simple_preprocess
doc_list = [
"Hello, how are you?", "How do you do?",
"Hey what are you doing? yes you What are you doing?"
]
doc_tokenized = [simple_preprocess(doc) for doc in doc_list]
dictionary = corpora.Dictionary()
BoW_corpus = [dictionary.doc2bow(doc, allow_update=True) for doc in doc_tokenized]
print(BoW_corpus)
id_words = [[(dictionary[id], count) for id, count in line] for line in BoW_corpus]
print(id_words)
एक पाठ फ़ाइल से
निम्नलिखित उदाहरण में, हम एक टेक्स्ट फ़ाइल से BoW कॉर्पस बना रहे हैं। इसके लिए, हमने पिछले उदाहरण में उपयोग किए गए दस्तावेज़ को सहेजा है, जिसका नाम टेक्स्ट फ़ाइल में हैdoc.txt.।
Gensim फ़ाइल लाइन को लाइन से पढ़ेगा और एक बार में एक लाइन का उपयोग करके प्रोसेस करेगा simple_preprocess। इस तरह, इसे एक बार में पूरी फ़ाइल को मेमोरी में लोड करने की आवश्यकता नहीं है।
कार्यान्वयन उदाहरण
सबसे पहले, आवश्यक और आवश्यक पैकेजों को निम्नानुसार आयात करें -
import gensim
from gensim import corpora
from pprint import pprint
from gensim.utils import simple_preprocess
from smart_open import smart_open
import os
अगला, कोड की निम्नलिखित पंक्ति doc.txt से दस्तावेजों को पढ़ेगी और इसे टोकन देगी -
doc_tokenized = [
simple_preprocess(line, deacc =True) for line in open(‘doc.txt’, encoding=’utf-8’)
]
dictionary = corpora.Dictionary()
अब हमें इन टोकन शब्दों को पारित करने की आवश्यकता है dictionary.doc2bow() ऑब्जेक्ट (जैसा कि पिछले उदाहरण में किया गया था)
BoW_corpus = [
dictionary.doc2bow(doc, allow_update=True) for doc in doc_tokenized
]
print(BoW_corpus)
उत्पादन
[
[(9, 1), (10, 1), (11, 1), (12, 1), (13, 1), (14, 1), (15, 1)],
[
(15, 1), (16, 1), (17, 1), (18, 1), (19, 1), (20, 1), (21, 1),
(22, 1), (23, 1), (24, 1)
],
[
(23, 2), (25, 1), (26, 1), (27, 1), (28, 1), (29, 1),
(30, 1), (31, 1), (32, 1), (33, 1), (34, 1), (35, 1), (36, 1)
],
[(3, 1), (18, 1), (37, 1), (38, 1), (39, 1), (40, 1), (41, 1), (42, 1), (43, 1)],
[
(18, 1), (27, 1), (31, 2), (32, 1), (38, 1), (41, 1), (43, 1),
(44, 1), (45, 1), (46, 1), (47, 1), (48, 1), (49, 1), (50, 1), (51, 1), (52, 1)
]
]
doc.txt फ़ाइल में निम्न सामग्री है -
CNTK जिसे पहले कम्प्यूटेशनल नेटवर्क टूलकिट के रूप में जाना जाता है, एक मुक्त उपयोग में आसान ओपन-सोर्स कमर्शियल-ग्रेड टूलकिट है जो हमें मानव मस्तिष्क की तरह सीखने के लिए गहन शिक्षण एल्गोरिदम को प्रशिक्षित करने में सक्षम बनाता है।
आप इसके मुक्त ट्यूटोरियल को tutorialspoint.com पर पा सकते हैं, जो कि एआई डीप लर्निंग मशीन लर्निंग जैसी तकनीकों पर सर्वश्रेष्ठ तकनीकी ट्यूटोरियल प्रदान करते हैं।
पूर्ण कार्यान्वयन उदाहरण
import gensim
from gensim import corpora
from pprint import pprint
from gensim.utils import simple_preprocess
from smart_open import smart_open
import os
doc_tokenized = [
simple_preprocess(line, deacc =True) for line in open(‘doc.txt’, encoding=’utf-8’)
]
dictionary = corpora.Dictionary()
BoW_corpus = [dictionary.doc2bow(doc, allow_update=True) for doc in doc_tokenized]
print(BoW_corpus)
बचत और एक Gensim Corpus लोड हो रहा है
हम निम्नलिखित स्क्रिप्ट की मदद से कॉर्पस को बचा सकते हैं -
corpora.MmCorpus.serialize(‘/Users/Desktop/BoW_corpus.mm’, bow_corpus)
#provide the path and the name of the corpus. The name of corpus is BoW_corpus and we saved it in Matrix Market format.
इसी प्रकार, हम निम्न लिपि का उपयोग करके सहेजे हुए कॉर्पस को लोड कर सकते हैं -
corpus_load = corpora.MmCorpus(‘/Users/Desktop/BoW_corpus.mm’)
for line in corpus_load:
print(line)