2012-09-26 14 views
6

मैंने readChar() फ़ंक्शन का उपयोग करके आर में एक टेक्स्ट पढ़ा। मेरा उद्देश्य इस परिकल्पना का परीक्षण करना है कि पाठ के वाक्यों में अक्षर "बी" की घटनाओं के रूप में "ए" अक्षर की कई घटनाएं हैं। मैंने हाल ही में {stringr} पैकेज की खोज की, जिसने मुझे अपने पाठ के साथ उपयोगी चीजों को करने में मदद की, जैसे पात्रों की संख्या और पूरे पाठ में प्रत्येक अक्षर की घटनाओं की कुल संख्या की गणना करना। अब, मुझे पूरे पाठ में वाक्यों की संख्या जानने की जरूरत है। क्या आर में कोई कार्य है, जो मुझे ऐसा करने में मदद कर सकता है? आपका बहुत बहुत धन्यवाद!आर में किसी पाठ में वाक्यों की संख्या को कैसे गिनें?

उत्तर

11

आपके उत्तर के लिए @ gui11aume धन्यवाद। एक बहुत अच्छा पैकेज मैंने अभी पाया है कि काम करने में मदद कर सकते हैं {openNLP} है। यह है कि ऐसा करने के लिए कोड है:

install.packages("openNLP") ## Installs the required natural language processing (NLP) package 
install.packages("openNLPmodels.en") ## Installs the model files for the English language 
library(openNLP) ## Loads the package for use in the task 
library(openNLPmodels.en) ## Loads the model files for the English language 

text = "Dr. Brown and Mrs. Theresa will be away from a very long time!!! I can't wait to see them again." ## This sentence has unusual punctuation as suggested by @gui11aume 

x = sentDetect(text, language = "en") ## sentDetect() is the function to use. It detects and seperates sentences in a text. The first argument is the string vector (or text) and the second argument is the language. 
x ## Displays the different sentences in the string vector (or text). 

[1] "Dr. Brown and Mrs. Theresa will be away from a very long time!!! " 
[2] "I can't wait to see them again." 

length(x) ## Displays the number of sentences in the string vector (or text). 

[1] 2 

{openNLP} पैकेज आर में प्राकृतिक भाषा संसाधन के लिए वास्तव में महान है और आप इसे here के लिए एक अच्छा और लघु परिचय प्राप्त कर सकते हैं या आप पैकेज के दस्तावेज़ here की जाँच कर सकते हैं।

पैकेज में तीन और भाषाओं का समर्थन किया जाता है। आपको बस इसी मॉडल फ़ाइलों को स्थापित और लोड करने की आवश्यकता है।

  1. के लिए स्पेनिश
  2. {openNLPmodels.ge} के लिए जर्मन
  3. थाई
+1

भेजा गया कार्य किसी भी पैकेज में उपलब्ध नहीं है .... –

+1

@ManojKumar दरअसल, 'ओपनएनएलपी' पैकेज कुछ साल पहले काफी बदल गया था। इस प्रश्न में दूसरा उत्तर देखें: http://stackoverflow.com/questions/18370518/r-opennlp-could-not-find-function-sentdetect – SavedByJESUS

6

जो आप खोज रहे हैं वह वाक्य टोकननाइजेशन है, और ऐसा लगता है कि अंग्रेजी में भी ऐसा लगता है कि "मैं डॉ बेनेट, श्रीमती जोहान्स के पूर्व पति से मुलाकात करता हूं।" में पूर्ण स्टॉप हो सकते हैं) ।

आर निश्चित रूप से प्राकृतिक भाषा प्रसंस्करण के लिए सबसे अच्छा विकल्प है। यदि आप Python कुशल हैं, तो मेरा सुझाव है कि आपको nltk मॉड्यूल पर एक नज़र डालें, जिसमें यह और कई अन्य विषय शामिल हैं। आप this blog post से कोड भी कॉपी कर सकते हैं, जो वाक्य टोकननाइजेशन और शब्द टोकननाइजेशन करता है।

आप आर से चिपके चाहते हैं, मैं तुम्हें, अंत वाक्य वर्ण (., ?, !) गिनती के बाद से आप वर्ण गिनती करने में सक्षम हैं सुझाव है। नियमित अभिव्यक्ति के साथ ऐसा करने का एक तरीका ऐसा है:

text <- 'Hello world!! Here are two sentences for you...' 
length(gregexpr('[[:alnum:] ][.!?]', text)[[1]]) 
+0

के लिए {openNLPmodels.th}{openNLPmodels.es} क्यों आर नहीं एक अच्छा विकल्प, @SavedByJESUS ​​एक पैकेज पाठ विभाजित करने के लिए एक समारोह में शामिल है कि मिल गया है लगता है वाक्यों में इसके अतिरिक्त, आर में आपका समाधान वास्तव में आपके द्वारा दिए जाने वाले कारणों का समाधान नहीं है, उदा। डॉ फास्टोल्फ। –

+0

@PaulHiemstra R एक ऐसी तेजी से बढ़ती प्रोग्रामिंग भाषा है जिसमें सभी अतिरिक्त पैकेज जोड़े जा रहे हैं, जो कि सब कुछ के साथ रहना मुश्किल है :) – SavedByJESUS

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

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