मैं nltk
का उपयोग कर रहा हूं ताकि पहले स्टॉप शब्दों को हटाकर वाक्यों से एन-ग्राम उत्पन्न हो सके। हालांकि, nltk.pos_tag()
मेरे सीपीयू (इंटेल i7) पर 0.6 सेकंड तक धीमा है।पीओएस-टैगर अविश्वसनीय रूप से धीमा है
उत्पादन:
['The first time I went, and was completely taken by the live jazz band and atmosphere, I ordered the Lobster Cobb Salad.']
0.620481014252
["It's simply the best meal in NYC."]
0.640982151031
['You cannot go wrong at the Red Eye Grill.']
0.644664049149
कोड:
for sentence in source:
nltk_ngrams = None
if stop_words is not None:
start = time.time()
sentence_pos = nltk.pos_tag(word_tokenize(sentence))
print time.time() - start
filtered_words = [word for (word, pos) in sentence_pos if pos not in stop_words]
else:
filtered_words = ngrams(sentence.split(), n)
यह सच है कि धीमी गति है या मैं यहाँ कुछ गलत कर रहा हूँ? कई वाक्य टैगिंग के लिए
आप पाठ पोस्ट कर सकते हैं कि आपके पास इनपुट है? आपकी मशीन का विनिर्देश क्या है (सीपीयू गति और रैम)? क्या आप क्लाउड से कनेक्ट हो रहे हैं और आप फ़ंक्शन का समय कैसे लगा रहे हैं? यह भी देखें http://stackoverflow.com/questions/33558836/pos-tagging-using-nltk-takes-time – alvas
@alvas यह एक इंटेल i7 है (प्रश्न में कहा गया है)। 16 जीबी रैम नहीं, यह बादल में नहीं है यह स्थानीय है। आप मेरे कोड उदाहरण में देख सकते हैं कि मैं इसे कैसे समय देता हूं। – displayname
यदि आपके पास एक विशाल डेटासेट है तो आपको अपने समाधान को समानांतर करने की आवश्यकता है। अन्यथा (यदि आप रैम में टैग किए गए वाक्यों को पकड़ सकते हैं), बस सभी टैग की गई वाक्य एकत्र करें, फिर फ़िल्टर को बाद में करें। – alvas