[英]reading Tamil corpus in R
作为在线课程项目工作的一部分,我已经使用 R 构建了一个基本的单词预测产品。 我想扩展它以预测泰米尔语阶段的下一个单词。 我使用了来自 HC Corpora 网站的泰米尔语语料库样本。 我已将其读入 R 并创建了一个 tm() 语料库。
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 中正确显示泰米尔语单词。 它将其显示为底层泰米尔语单词的 unicode 字符。
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>
>
我尝试继续使用这些 unicode 字符并为 2、3 和 4-gram 构建 n-gram,并将其用于我的预测。 但是此列上的所有后续操作仅显示为原始 unicode。 我希望能够以他们的母语泰米尔语字符查看和预测它们。
我的会话信息如下:
> 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
我设法破解了上述解决方案,因此想到将其发布给对此主题感兴趣的任何人。
a) 我没有在 Windows 上将 n-gram 保存为 csv 文件,而是将它们保存为 R 二进制格式(使用 save() 和 load() 函数)。 我已经使用 read.csv() 保存了生成的 n-gram,并将 fileEncoding 选项设置为 UTF-8,但即使在 Shiny 上部署它后它仍然没有帮助。
b) 在 Shiny 应用程序上进行部署和测试,该应用程序在 Linux 平台上运行,因此能够正确显示 unicode 中的泰米尔语字符。 在 Windows 上本地测试它是无效的,因为字符显示为原始 unicode,例如,等等。
感谢 stringi 的作者 Marek Gagolewski 提供有关 Shinyio 的建议,帮助我在 Shiny 的 Linux 平台上进行部署和测试。
如果您有兴趣,可以使用以下链接查看产品: https : //periasamyr.shinyapps.io/predictwordml/
问候
佩里
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.