मैं एक टिप्पणी के रूप में इस पोस्ट, लेकिन सोचा था कि मैं के साथ-साथ यह शरीर से बाहर हो सकता है कुछ स्पष्टीकरण के साथ एक पूर्ण जवाब में:
आप str.split()
उपयोग करने के लिए शब्दों में स्ट्रिंग विभाजित करने के लिए, और फिर स्टेम चाहते प्रत्येक शब्द:
for word in text.split(" "):
PorterStemmer().stem_word(word)
आप एक साथ सभी उपजी शब्दों की एक स्ट्रिंग प्राप्त करना चाहते हैं, यह तुच्छ है तो शामिल होने के लिए इन वापस एक साथ उपजी है। यह आसानी से ऐसा करने के लिए और कुशलता से हम str.join()
का उपयोग करें और एक generator expression:
" ".join(PorterStemmer().stem_word(word) for word in text.split(" "))
संपादित करें:
अपने अन्य समस्या के लिए:
with open("/path/to/file.txt") as f:
words = set(f)
यहाँ हम the with
statement का उपयोग कर (जो सबसे अच्छा है फ़ाइल को खोलने के फ़ाइलों को खोलने का तरीका, क्योंकि यह उन्हें अपवादों पर भी सही तरीके से बंद कर देता है, और अधिक पठनीय है) और सामग्री को एक सेट में पढ़ें। हम एक सेट का उपयोग करते हैं क्योंकि हमें शब्दों, या डुप्लिकेट के क्रम की परवाह नहीं है, और यह बाद में अधिक कुशल होगा। मैं प्रति पंक्ति एक शब्द मान रहा हूं - यदि यह मामला नहीं है, और वे अल्पविराम से अलग हैं, या str.split()
का उपयोग करते हुए वेइटस्पेस अलग हो गए हैं जैसा कि हमने पहले किया था (उचित तर्क के साथ) शायद एक अच्छी योजना है।
stems = (PorterStemmer().stem_word(word) for word in text.split(" "))
" ".join(stem for stem in stems if stem not in words)
यहाँ ऐसे शब्द हैं जो शब्द हम एक फ़ाइल से लोड के सेट में हैं अनदेखी करने के लिए एक जनरेटर अभिव्यक्ति की अगर खंड का उपयोग करें। एक सेट पर सदस्यता जांच ओ (1) हैं, इसलिए यह अपेक्षाकृत कुशल होना चाहिए।
संपादित करें 2:
शब्द निकालने के लिए इससे पहले कि वे उपजी रहे हैं, यह और भी आसान है:
" ".join(PorterStemmer().stem_word(word) for word in text.split(" ") if word not in words)
दिए गए शब्दों को हटाने के लिए बस है:
filtered_words = [word for word in unfiltered_words if not in set_of_words_to_filter]
में शब्द के लिए
' text.split (''): stemmer.stem_word (शब्द) '? – birryree
stemmed = text.split ('') में शब्द के लिए: stemmer.stem_word (शब्द) यह काम करेगा? – ChamingaD
बिल्कुल नहीं। यदि आप उपभेदों की एक सूची चाहते हैं, तो आप text.split ('')] w में w के लिए 'stemmed = [stemmer.stem_word (w) कर सकते हैं। यदि आप इसकी एक वाक्य चाहते हैं, तो आप 'sente =' '.join (stemmed)' कर सकते हैं, जो सभी उपभेदों की एक वाक्य वापस कर देगा। यदि इससे सहायता मिलती है तो मुझे बताएं। – birryree