2010-12-02 17 views
14

मुझे पहले पायथन पसंद आया क्योंकि पाइथन में समृद्ध अंतर्निहित प्रकार जैसे सेट, डिक्ट्स, सूचियां, टुपल्स हैं। ये संरचनाएं डेटा को संसाधित करने के लिए छोटी स्क्रिप्ट लिखने में मदद करती हैं।आर सामान्य प्रयोजन प्रोग्रामिंग भाषा के रूप में

दूसरी ओर, आर Matlab की तरह है, और इसके डेटा प्रकार के रूप में स्केलर, वेक्टर, डेटा फ्रेम, सरणी और सूची है। लेकिन इसमें सेट, डिक्ट्स, टुपल्स इत्यादि की कमी है। मुझे पता है कि सूची का प्रकार शक्तिशाली है, कई प्रक्रियाओं को सूची प्रसंस्करण के रूप में सोचा जा सकता है। लेकिन सामान्य उद्देश्य भाषा के रूप में आर का उपयोग करने का विचार अभी भी अस्पष्ट है।

(निम्नलिखित सिर्फ एक उदाहरण है। इसका मतलब यह नहीं है कि मैं पाठ प्रसंस्करण/खनन पर ध्यान केंद्रित।)

उदाहरण के लिए, मैं TF-आईडीएफ समाचार लेख का एक सेट के लिए गिनती (कहना 200,000 क्या करने की जरूरत एक फ़ोल्डर और उसके उप फ़ोल्डर में लेख)।

फ़ाइलों को पढ़ने के बाद, मुझे शब्द-से-आईडी मैपिंग और अन्य गिनती कार्य करने की आवश्यकता है। इन कार्यों में स्ट्रिंग हेरफेर शामिल है और सेट या मैप जैसे कंटेनरों की आवश्यकता है।

मुझे पता है कि मैं इन प्रसंस्करण करने के लिए एक और भाषा का उपयोग कर सकता हूं और डेटा को आर में लोड कर सकता हूं लेकिन शायद (छोटी चीजों के लिए) सभी प्रीप्रोकैसिंग को एक एकल आर स्क्रिप्ट में डालना बेहतर है।

तो मेरा सवाल यह है कि आर भाषा स्तर में इस तरह के समृद्ध डेटा संरचनाओं में पर्याप्त क्षमता है? या यदि नहीं, तो कोई भी पैकेज आर भाषा के लिए अच्छा विस्तार प्रदान करता है?

+1

यह आपके प्रश्न का सीधा जवाब नहीं है, लेकिन क्या आप rpy2 जैसी चीज़ों से अवगत हैं? यह आपको पायथन वस्तुओं को आर objeccts में बदलने और उन पर आर कार्यों का उपयोग करने की अनुमति देता है। तो आप पाइथन प्रोसेसिंग कर सकते हैं, फिर आर एक ही स्क्रिप्ट में प्रोसेसिंग कर सकते हैं, यद्यपि थोड़ी देर के सिंटैक्स के साथ। –

+0

@ थॉमस काफी समाधान नहीं है। मेरी चिंता यह है कि मैं आर पर चिपकना चाहता हूं और जितना संभव हो उतना कम बाहरी सामान का उपयोग करना चाहता हूं। विशेष रूप से जब मैं अपना कोड देता हूं, तो बेहतर होगा यदि अंतिम उपयोगकर्ता को केवल 'सेट' पैकेज में आर –

+0

सेट इंस्टॉल करने की आवश्यकता हो। चूंकि वैक्टरों ने तत्वों का नाम दिया है, इसलिए वे अधिकांश उद्देश्यों के लिए समान रूप से व्यवहार करते हैं। (आईडी और मूल्य कॉलम के साथ एक डेटा.फ्रेम भी एक dict के रूप में काम करता है।) –

उत्तर

21

मुझे लगता है कि आर की डेटा प्री-प्रोसेसिंग क्षमता - यानी, इसके स्रोत से डेटा निकालने और विश्लेषिकी चरणों से ठीक पहले सब कुछ - बेहतर हो गया है पिछले तीन वर्षों में काफी हद तक (समय की लंबाई मैं आर का उपयोग कर रहा हूं)। मैं रोज़ पाइथन का उपयोग करता हूं और पिछले सात सालों से इसके लिए है - इसकी टेक्स्ट प्रोसेसिंग क्षमताएं शानदार हैं - और फिर भी मैं आपके द्वारा उल्लेख किए गए कार्य के प्रकार के लिए आर का उपयोग करने के लिए एक पल के लिए संकोच नहीं करूंगा।

हालांकि कुछ प्रावधान।सबसे पहले, मैं अपने क्यू में कार्यों के सेट के लिए बाहरी संकुल की एक जोड़ी पर बहुत बारीकी से देख सुझाव देते हैं - विशेष रूप से, हैश (अजगर की तरह मुख्य मान डेटा संरचना), और stringr

stringr दोनों और हैशCRAN पर उपलब्ध हैं (ज्यादातर आधार पुस्तकालय में कम उपयोगकर्ता के अनुकूल स्ट्रिंग परिवर्तन कार्यों पर रैपर के होते हैं)।

> library(hash) 
> dx = hash(k1=453, k2=67, k3=913) 
> dx$k1 
    [1] 453 
> dx = hash(keys=letters[1:5], values=1:5) 
> dx 
    <hash> containing 5 key-value pair(s). 
    a : 1 
    b : 2 
    c : 3 
    d : 4 
    e : 5 

> dx[a] 
    <hash> containing 1 key-value pair(s). 
    a : 1 

> library(stringr) 
> astring = 'onetwothree456seveneight' 
> ptn = '[0-9]{3,}' 
> a = str_extract_all(astring, ptn) 
> a 
    [[1]] 
    [2] "456" 

यह भी लगता है आर प्रयोक्ता जिनके लिए पाठ प्रसंस्करण और पाठ विश्लेषिकी अपने दिन के लिए दिन के काम का एक महत्वपूर्ण भाग शामिल की एक बड़ी सबसेट है कि वहाँ - के रूप में क्रैन के Natural Language Processing Task View (एक के बारे में 20 की इसका सबूत ऐसे अनौपचारिक डोमेन उन्मुख पैकेज संग्रह)। उस कार्य दृश्य में पैकेज tm है, जो टेक्स्ट खनन के लिए कार्यों के लिए समर्पित पैकेज है। शामिल टीएम में इस तरह अपने Q

इसके अलावा में वर्णित के रूप में अनुकूलित प्रोसेसिंग कार्यों के लिए कार्य कर रहे हैं, आर यथोचित बड़े डेटासेट पर सहभागी काम कर (जैसे,> 1 जीबी) के लिए संकुल की एक उत्कृष्ट चयन किया है अक्सर समानांतर प्रसंस्करण बुनियादी ढांचे को स्थापित करने की आवश्यकता के बिना (लेकिन यह उपलब्ध होने पर क्लस्टर का निश्चित रूप से शोषण कर सकता है)। मेरी राय में इनमें से सबसे प्रभावशाली है माइकल केन द्वारा माइकल केन और जॉन एमर्सन द्वारा रूब्रिक "The Bigmemory Project" (सीआरएएन) के तहत पैकेजों का सेट; यह परियोजना बड़े पैमाने पर, biganalytics, synchronicity, bigtabulate, और bigalgebra subsumes। संक्षेप में, इन पैकेजों के पीछे की तकनीकों में शामिल हैं: (i) साझा स्मृति में डेटा आवंटित करना, जो डेटा की एक प्रति में अलग समवर्ती प्रक्रियाओं द्वारा साझा पहुंच के समन्वय को सक्षम बनाता है; (ii) फ़ाइल-समर्थित डेटा संरचनाएं (जो मुझे विश्वास है, लेकिन मैं निश्चित नहीं हूं, स्मृति-मैप किए गए फ़ाइल संरचना का पर्याय बन गया है, और जो पॉइंटर्स का उपयोग करके डिस्क से बहुत तेजी से पहुंच को सक्षम बनाता है, इस प्रकार उपलब्ध फ़ाइल आकार पर रैम सीमा से परहेज करता है) ।

फिर भी, आर की मानक लाइब्रेरी में कुछ फ़ंक्शन और डेटा संरचनाएं आम रैम सीमाओं के निकट डेटा के साथ अंतःक्रियात्मक रूप से काम करना आसान बनाती हैं। उदाहरण के लिए, .RData, एक देशी द्विपदीय प्रारूप, के बारे में उपयोग करने के लिए संभव के रूप में सरल है (आज्ञा बचाने और लोड कर रहे हैं) और यह उत्कृष्ट संपीड़न है:

> library(ElemStatLearn) 
> data(spam) 
> format(object.size(spam), big.mark=',') 
    [1] "2,344,384" # a 2.34 MB data file 
> save(spam, file='test.RData') 

इस फ़ाइल में 'परीक्षण। RData 'केवल 176 KB है, से अधिक 10-गुना संपीड़न।

+0

+1 - महान उत्तर! मैंने वहां कुछ चीजें सीखी हैं .. – Chase

+0

+1 हमें 'हैश' और' tm' पैकेज पर इंगित करने के लिए धन्यवाद –

3

यह सच नहीं है कि आर सेट, डिक्ट्स, सूचियों और टुपल्स की कमी है; वे सिर्फ कुछ अन्य संरचनाओं के रूप में लागू किए गए हैं। बेशक प्रदर्शन एक समस्या हो सकती है, लेकिन आमतौर पर यह पायथन की तुलना में खराब नहीं होती है, और आप आमतौर पर एक पैकेज पा सकते हैं जिसमें समाधान एक कुशल सी कोड के रूप में कोड किया गया है।

मुझे टेक्स्ट खनन के बारे में बहुत कुछ पता नहीं है, लेकिन tm पैकेज में आप जो चाहते हैं वह हो सकता है।

2

आपको Natural Language Processing Task View पर देखना चाहिए।

विषय शीर्षक:

ध्वन्यात्मक और भाषण प्रसंस्करण:
शाब्दिक डेटाबेस:
कीवर्ड निष्कर्षण और जनरल स्ट्रिंग हेरफेर:
प्राकृतिक भाषा संसाधन:
स्ट्रिंग गुठली:
पाठ खनन:

संबंधित मुद्दे