2016-10-01 2 views
2

Я создал базовый продукт прогнозирования слов, используя R как часть работы по проекту онлайн-курса. Я хотел продлить его для предсказания следующего слова с тамильских фаз. Я использовал образец тамильских языков с сайта HC Corpora. Я прочитал его в R и создал тм() корпус.чтение Tamil corpus in R

testData <- "திருவண்ணாமலை, கொல்லிமலை, சதுரகிரி என அவன் சித்தர்களை பல 
     இடங்களில், மலைகளில், குகைகளில், இன்னும் பல ரகசிய இடங்களில் 
     அவன் சித்தர்களை சந்தித்து பல நம்பமுடியாத சக்திகளைப் 
     பெற்றுவிட்டான் என்று சொல்லிக் கொள்கிறார்கள்" 
getUnigrams <- function(x) {NGramTokenizer(x, 
          Weka_control(min=1, max=1))} 
unigrams <- DocumentTermMatrix(VCorpus(VectorSource(testData)), 
           control=list(tokenize=getUnigrams)) 
unigramsList <- data.frame(slam::col_sums(unigrams)) 
head(unigramsList, 3) 

>   slam..col_sums.unigrams. 
அவன்       2 
இடங்களில்      2 
இன்னும்       1 

Фактические слова тамилов - это имена строк этого кадра данных и отображаются на экране надлежащим образом. Тем не менее, когда я пытаюсь добавить его в качестве столбца против их соответствующего подсчета, результирующий фрейм данных не отображает слова тамилов правильно в столбцах unigramsList $ word1. Он отображает его как символы юникода лежащего в основе тамильского слова.

unigramsList$word1 <- rownames(unigramsList) ## Encoding issues arise from here!!! 
head(unigramsList, 3) 

slam..col_sums.unigrams. 
அவன்       2 
இடங்களில்      2 
இன்னும்       1 
                      word1 
அவன்            <U+0B85><U+0BB5><U+0BA9><U+0BCD> 
இடங்களில் <U+0B87><U+0B9F><U+0B99><U+0BCD><U+0B95><U+0BB3><U+0BBF><U+0BB2><U+0BCD> 
இன்னும்     <U+0B87><U+0BA9><U+0BCD><U+0BA9><U+0BC1><U+0BAE><U+0BCD> 
> 

Я попытался продолжить эти символы Юникода и построен н-г на ​​2, 3 и 4-грамме и использовал его для моего предсказания. Но все последующие операции над этим столбцом отображаются только в виде необработанного юникода. Я хочу иметь возможность просматривать и прогнозировать их у своих родных тамильских персонажей.

Моей сессия информации, как показано ниже:

> sessionInfo() 
R version 3.2.5 (2016-04-14) 
Platform: i386-w64-mingw32/i386 (32-bit) 
Running under: Windows 7 (build 7601) Service Pack 1 

locale: 
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252 
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C       
[5] LC_TIME=English_United States.1252  

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

other attached packages: 
[1] RWeka_0.4-29 tm_0.6-2  NLP_0.1-9  stringi_1.0-1 stringr_1.0.0 

loaded via a namespace (and not attached): 
[1] magrittr_1.5  parallel_3.2.5 tools_3.2.5  slam_0.1-37  
[5] grid_3.2.5  rJava_0.9-8  RWekajars_3.9.0-1 
+1

Добро пожаловать на SO. Пожалуйста, прочитайте [как предоставить минимальные воспроизводимые примеры в R] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example#answer-5963610). Затем отредактируйте и улучшите его соответствующим образом. Хорошая почта обычно обеспечивает минимальные входные данные, желаемые выходные данные и попытки кода - все операции копирования и вставки в новом/чистом сеансе R. 'blogcon <- file (" Ta_Blogs.txt ")' не воспроизводится. – lukeA

+0

Я исправил его сейчас и включил некоторый воспроизводимый код с образцовыми текстовыми данными Tamil. Спасибо за ваше предложение о предоставлении воспроизводимых примеров –

ответ

1

мне удалось взломать решение выше, и, следовательно, думали о его размещении для тех, кто заинтересован в этой теме.

a) Вместо сохранения n-граммов в виде файлов csv в Windows я сохранил их в двоичном формате R (используя функции save() и load()). Я сохранил сгенерированные n-граммы, используя read.csv() с параметром fileEncoding, установленным в UTF-8, но все же это не помогло даже после развертывания на Shiny.

b) Развернутый и протестированный на блестящих приложениях, работающих на платформе Linux, и, следовательно, он смог правильно отображать символы тамилов в юникоде. Тестирование локально в Windows было неэффективным, поскольку символы отображались как необработанные юникоды, например. , и т. д.

Спасибо Мареку Гаголевски, автору стринги, за предложения относительно shinyio, которые помогли мне развернуть и протестировать на платформе Linux на блестящей платформе.

Вы можете проверить продукт, используя ссылку ниже, если вы заинтересованы: https://periasamyr.shinyapps.io/predictwordml/

С уважением

Peri