"एन सबसे सामान्य चीजें" खोजने का सबसे आम तरीका बहुत सुंदर है, सिवाय इसके कि आप एक को याद कर रहे हैं sort
, और आपको एक आभारी मिल गया है cat
:
tr -c '[:alnum:]' '[\n*]' < test.txt | sort | uniq -c | sort -nr | head -10
यदि आप एक में डाल नहीं है, तो sort
इससे पहले कि uniq -c
आप शायद गलत सिंगलटन शब्द का एक बहुत मिल जाएगा। uniq
केवल रेखाओं के अनूठे रन ही होते हैं, समग्रता से नहीं।
संपादित करें: मैं एक चाल भूल गया, "शब्दों को रोकें"। यदि आप अंग्रेजी पाठ (क्षमा करें, अखंड उत्तर अमेरिकी यहाँ देख रहे हैं), "की", "और", "" जैसे शब्द हमेशा शीर्ष दो या तीन स्थानों पर लेते हैं। आप शायद उन्हें खत्म करना चाहते हैं। GNU ग्रॉफ वितरण में एक फ़ाइल eign
है, जिसमें स्टॉप शब्दों की एक अच्छी सभ्य सूची है। मेरा आर्क डिस्ट्रो है /usr/share/groff/current/eign
, लेकिन मुझे लगता है कि मैंने भी देखा है /usr/share/dict/eign
या/usr/dict/eign
पुराने यूनिक्स में ।
आप इस तरह से रोक शब्दों का उपयोग कर सकते हैं:
tr -c '[:alnum:]' '[\n*]' < test.txt |
fgrep -v -w -f /usr/share/groff/current/eign |
sort | uniq -c | sort -nr | head -10
मेरा अनुमान है कि अधिकांश मानव भाषाओं को सार्थक शब्द आवृत्ति गणनाओं से हटाए गए समान "स्टॉप वर्ड्स" की आवश्यकता है, लेकिन मुझे नहीं पता कि अन्य भाषाओं को शब्दों की सूची को रोकने के लिए कहां सुझाव देना है।
EDIT: कमांड का fgrep
उपयोग करना चाहिए -w
, जो पूरे शब्द मिलान को सक्षम करता है। यह उन शब्दों पर झूठी सकारात्मकता से बचता है जिनमें केवल "स्टॉप" या "i" जैसे लघु स्टॉप कार्य होते हैं।