繁体   English   中英

在 R 中阅读泰米尔语语料库

[英]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>
> 

我尝试继续使用这些 un​​icode 字符并为 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM