1

I have the following dataframe made of English and Hindi texts I want to read the hindi texts in R

Click Percentage       Email_Subject
18.12807882         तेजस्वी गैलेक्सी ए 7 (2016) बस 1856 रुपए प्रति माह से शुरू खरीदें
11.91957875         तेजस्वी गैलेक्सी ए 7 (2016) बस 1856 रुपए प्रति माह से शुरू खरीदें
0                   तेजस्वी गैलेक्सी ए 5 (2016) बस 1634 रुपए प्रति माह से शुरू खरीदें
9.523809524         खेल परिवर्तक यहाँ है।
6.789250354         एक फोन अपने समय से आगे जा सकता है।

How do I create a term document matrix in Hindi(Or any Non English Language, like thai). I have tried the tm package with this code

   text<-dataframe$Email_Subject
   mycorpus<-Corpus(VectorSource(text))
   mycorpus<-tm_map(mycorpus, tolower)
   mycorpus<-tm_map(mycorpus, removeNumbers)
   #mycorpus<-tm_map(mycorpus, removeWords, c(stopwords("hindi")))
    mycorpus
   dtm<-TermDocumentMatrix(mycorpus)
   m<-as.matrix(dtm)
   v <- sort(rowSums(m),decreasing=TRUE)
   d <- data.frame(word = names(v),freq=v)
   list(d1=d)

This however doesn't generate the term document matrix

Ronak Shah
  • 377,200
  • 20
  • 156
  • 213
Raghavan vmvs
  • 1,213
  • 1
  • 10
  • 29

1 Answers1

1

You could do as follows:

library(udpipe)
x <- data.frame(Email_Subject = c("तेजस्वी गैलेक्सी ए 7 (2016) बस 1856 रुपए प्रति माह से शुरू खरीदें", 
                             "तेजस्वी गैलेक्सी ए 7 (2016) बस 1856 रुपए प्रति माह से शुरू खरीदें", 
                             "तेजस्वी गैलेक्सी ए 5 (2016) बस 1634 रुपए प्रति माह से शुरू खरीदें", 
                             "खेल परिवर्तक यहाँ है।", 
                             "एक फोन अपने समय से आगे जा सकता है।"),
           stringsAsFactors = FALSE)
ud_model <- udpipe_download_model(language = "hindi")
ud_model <- udpipe_load_model(ud_model$file_model)

anno <- udpipe_annotate(ud_model, x$Email_Subject)
anno <- as.data.frame(anno)
anno <- subset(anno, upos %in% c("NOUN", "PRON", "ADJ"))

dtm <- document_term_frequencies(anno[, c("doc_id", "lemma")])
dtm <- document_term_matrix(dtm)