Monday 15 August 2011

python - List the most common lists, from a list -


मेरे पास यह कोड है

  text = open ("tags.txt", "r ") Mylist = [] metalist = [] पाठ में पंक्ति के लिए: mylist.append (पंक्ति) अगर len (mylist) == 5: metalist.append (mylist.pdf) mylist.pop (0)   

कौन सा प्रति पंक्ति एक पीओएस टैग के साथ एक पाठ फ़ाइल खोलता है यह फिर अपनी सूची में पहले 5 पीओएस टैग की सूची जोड़ता है, जो फिर धातुविद् को जोड़ दिया जाता है। यह फिर अगली पंक्ति तक नीचे जाता है और 5 पीओएस टैग्स का अगला अनुक्रम बनाता है। पाठ फ़ाइल में लगभग कुल 110k ~ टैग हैं मुझे धातुकार से सबसे आम पीओएस टैग अनुक्रम ढूंढने की आवश्यकता है I मैंने काउंटर संग्रह का उपयोग करने की कोशिश की, लेकिन सूचियों का उपयोग करने योग्य नहीं है इस मुद्दे पर जाने का सबसे अच्छा तरीका क्या है?

जैसा कि एक टिप्पणी में उल्लिखित है, आप आसानी से उनमें से एक सूची के बजाय टैग के ट्यूपल का उपयोग करें जो संग्रह मॉड्यूल में काउंटर वर्ग के साथ काम करेगा अपने प्रश्न में कोड के सूची-आधारित दृष्टिकोण का उपयोग करके यह कैसे करें कि कुछ अनुकूलन के साथ-साथ आपको बड़ी संख्या में पीओएस टैग संसाधित करना है:

  आयात से आयात आयात करें GROUP_SIZE = 5 counter = काउंटर () mylist = [] टैगफ़ाइल के रूप में खुले ("tags.txt", "r") के रूप में: टैग = (tagfile में पंक्ति के लिए line.strip ()) कोशिश: जबकि len (mylist) & lt; GROUP_SIZE-1: mylist.append (tags.next ()) को छोड़कर रोकइंटरेशन: टैग में टैग के लिए पास करें: # मुख्य लूप mylist.pop (0) mylist.append (टैग) counter.update ((ट्यूपल (मेरीलिस्ट),)) अगर लेन (काउंटर) & lt; 1: प्रिंट 'फ़ाइल में बहुत कुछ टैग' अन्य: टैग के लिए, counter.most_common (10) में गिनती: # शीर्ष 10 प्रिंट '{}, count = {:, d}'। प्रारूप (सूची (टैग), गिनती)   

हालांकि, आप जो भी कर रहे हैं उसके लिए सूची के बजाय संग्रह मॉड्यूल से भी इसका उपयोग करना बेहतर होगा क्योंकि पूर्व में बहुत कुशल है, हे (1), बाद के साथ या तो अंत बनाम हे (एन) से जोड़ता है और पॉप जाता है। वे भी कम स्मृति का उपयोग करते हैं।

इसके अलावा, पायथन v 2.6 के बाद से वे एक maxlen पैरामीटर का समर्थन करते हैं जो स्पष्ट रूप से pop () वांछित आकार के बाद समाप्त होने वाले तत्वों तक पहुंच गया है - इसलिए यहां उन पर आधारित एक और अधिक कुशल संस्करण है:

  आयात से आयात काउंटर, डेक GROUP_SIZE = 5 counter = counter () mydeque टैगफ़ाइल के रूप में खुले ("tags.txt", "r") के साथ = डेक (maxlen = GROUP_SIZE) टैग: टैग = (tagfile में पंक्ति के लिए line.strip ()) कोशिश: जबकि लेनन (मायडेक) & lt; स्टॉप इत्यादि को छोड़कर: # मुख्य पाश mydeque.append (टैग) counter.update ((ट्यूप्ले (मैडेक),)) अगर लैन (काउंटर) और लेफ्टिनेंट (ग्रुप_एसवाईई -1): mydeque.append (tags.next ()) ; 1: प्रिंट 'फ़ाइल में बहुत कुछ टैग' अन्य: टैग के लिए, counter.most_common (10) में गिनती: # शीर्ष 10 प्रिंट '{}, count = {:, d}'। प्रारूप (सूची (टैग), गिनती)    

No comments:

Post a Comment