R Language
प्राकृतिक भाषा प्रसंस्करण
खोज…
परिचय
प्राकृतिक भाषा प्रसंस्करण (एनएलपी) कंप्यूटर विज्ञान का क्षेत्र है जो मानव द्वारा उत्पन्न पाठ्य इनपुट से जानकारी प्राप्त करने पर केंद्रित है।
एक टर्म फ़्रीक्वेंसी मैट्रिक्स बनाएँ
समस्या का सबसे सरल तरीका (और अब तक का सबसे अधिक उपयोग किया जाता है) वाक्यों को टोकन में विभाजित करना है। सरल बनाने, शब्दों का उपयोग करने और प्राप्त करने वाले लोगों के लिए सार और व्यक्तिपरक अर्थ हैं, टोकन की एक उद्देश्यपूर्ण व्याख्या है: वर्णों का एक क्रमबद्ध क्रम (या बाइट्स)। एक बार वाक्यों के विभाजन के बाद, टोकन के क्रम की अवहेलना की जाती है। शब्द मॉडल के बैग के रूप में ज्ञात समस्या के लिए यह दृष्टिकोण।
एक शब्द आवृत्ति एक शब्दकोष है, जिसमें प्रत्येक टोकन को एक भार सौंपा जाता है। पहले उदाहरण में, हम आर पैकेज tm
साथ कॉर्पस कॉर्पस ( दस्तावेजों का एक संग्रह) से एक शब्द आवृत्ति मैट्रिक्स का निर्माण करते हैं।
require(tm)
doc1 <- "drugs hospitals doctors"
doc2 <- "smog pollution environment"
doc3 <- "doctors hospitals healthcare"
doc4 <- "pollution environment water"
corpus <- c(doc1, doc2, doc3, doc4)
tm_corpus <- Corpus(VectorSource(corpus))
इस उदाहरण में, हमने दो कार्यों Corpus
और VectorSource
के पैकेज tm
द्वारा परिभाषित क्लास Corpus
का एक कोष बनाया, जो एक चरित्र वेक्टर से एक वेक्टर VectorSource
वस्तु लौटाता है। ऑब्जेक्ट tm_corpus
प्रत्येक दस्तावेज़ का वर्णन करने के लिए अतिरिक्त (और वैकल्पिक) मेटाडेटा के साथ हमारे दस्तावेजों की एक सूची है।
str(tm_corpus)
List of 4
$ 1:List of 2
..$ content: chr "drugs hospitals doctors"
..$ meta :List of 7
.. ..$ author : chr(0)
.. ..$ datetimestamp: POSIXlt[1:1], format: "2017-06-03 00:31:34"
.. ..$ description : chr(0)
.. ..$ heading : chr(0)
.. ..$ id : chr "1"
.. ..$ language : chr "en"
.. ..$ origin : chr(0)
.. ..- attr(*, "class")= chr "TextDocumentMeta"
..- attr(*, "class")= chr [1:2] "PlainTextDocument" "TextDocument"
[truncated]
एक बार Corpus
, हम फाइनल आउटपुट (टर्म फ्रिक्वेंसी मैट्रिक्स) की गुणवत्ता में सुधार के लिए Corpus
में निहित टोकन को प्रीप्रोसेस कर सकते हैं। ऐसा करने के लिए हम tm
फ़ंक्शन tm_map
उपयोग करते हैं, जो फ़ंक्शन के apply
परिवार के समान है, प्रत्येक दस्तावेज़ में फ़ंक्शन लागू करके कॉर्पस में दस्तावेज़ों को रूपांतरित करें।
tm_corpus <- tm_map(tm_corpus, tolower)
tm_corpus <- tm_map(tm_corpus, removeWords, stopwords("english"))
tm_corpus <- tm_map(tm_corpus, removeNumbers)
tm_corpus <- tm_map(tm_corpus, PlainTextDocument)
tm_corpus <- tm_map(tm_corpus, stemDocument, language="english")
tm_corpus <- tm_map(tm_corpus, stripWhitespace)
tm_corpus <- tm_map(tm_corpus, PlainTextDocument)
इन परिवर्तनों के बाद, हम अंततः आवृत्ति मैट्रिक्स के साथ बनाते हैं
tdm <- TermDocumentMatrix(tm_corpus)
जो देता है a
<<TermDocumentMatrix (terms: 8, documents: 4)>>
Non-/sparse entries: 12/20
Sparsity : 62%
Maximal term length: 9
Weighting : term frequency (tf)
कि हम इसे एक मैट्रिक्स में परिवर्तित करके देख सकते हैं
as.matrix(tdm)
Docs
Terms character(0) character(0) character(0) character(0)
doctor 1 0 1 0
drug 1 0 0 0
environ 0 1 0 1
healthcar 0 0 1 0
hospit 1 0 1 0
pollut 0 1 0 1
smog 0 1 0 0
water 0 0 0 1
प्रत्येक पंक्ति प्रत्येक टोकन की आवृत्ति का प्रतिनिधित्व करती है - जैसा कि आपने देखा है कि स्टेम किया गया है (जैसे environment
लिए environ
) - प्रत्येक दस्तावेज़ में (4 दस्तावेज़, 4 कॉलम)।
पिछली पंक्तियों में, हमने प्रत्येक जोड़े को टोकन / दस्तावेज़ को निरपेक्ष आवृत्ति (यानी दस्तावेज़ में दिखाई देने वाले टोकन के उदाहरणों की संख्या) के साथ तौला है।