मौजूदा NER मॉडल को ट्रेन करें
किसी दिए गए डेटा पर spaCy का मॉडल अच्छी तरह काम न भी कर पाए. एक समाधान है कि मॉडल को हमारे डेटा पर ट्रेन किया जाए. इस अभ्यास में, आप प्रेडिक्शन परफॉर्मेंस बेहतर करने के लिए एक NER मॉडल को ट्रेन करने का अभ्यास करेंगे.
एक spaCy en_core_web_sm मॉडल nlp के रूप में उपलब्ध है, जो test स्ट्रिंग में house को एक entity के रूप में सही तरह से प्रेडिक्ट नहीं कर पा रहा है.
दिए गए training_data के आधार पर, डेटा पर दो बार इटररेट करते हुए इस मॉडल को अपडेट करने के स्टेप्स लिखें. बाकी पाइपलाइन्स पहले से disabled हैं और optimizer भी उपयोग के लिए तैयार है. epochs की संख्या पहले से 2 सेट है.
यह अभ्यास पाठ्यक्रम का हिस्सा है
spaCy के साथ Natural Language Processing
अभ्यास निर्देश
optimizerऑब्जेक्ट का उपयोग कीजिए और हर epoch के लिए,randomपैकेज से डेटासेट को शफ़ल करिए और एकExampleऑब्जेक्ट बनाइए..updateएट्रिब्यूट का उपयोग करकेnlpमॉडल को अपडेट कीजिए औरsgdआर्ग्यूमेंट्स में optimizer पास कीजिए.
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
nlp = spacy.load("en_core_web_sm")
print("Before training: ", [(ent.text, ent.label_) for ent in nlp(test).ents])
other_pipes = [pipe for pipe in nlp.pipe_names if pipe != 'ner']
nlp.disable_pipes(*other_pipes)
optimizer = nlp.create_optimizer()
# Shuffle training data and the dataset using random package per epoch
for i in range(epochs):
random.____(training_data)
for text, ____ in training_data:
doc = nlp.____(____)
# Update nlp model after setting sgd argument to optimizer
example = Example.____(____, ____)
nlp.____([____], sgd = ____)
print("After training: ", [(ent.text, ent.label_) for ent in nlp(test).ents])