文本挖掘阿拉伯语&英语与tm包在R中 - MAC OSX和MICROSOFT Windows 8.1操作系统之间的结果不同

时间:2014-07-07 00:54:35

标签: r utf-8 arabic text-mining tm

R - TM包 - Mac OS X和Windows OS之间的阿拉伯语 - 差异问题

使用RSTUDIO打开MACBOOK PRO

```{r}
versionInfo()
```
1.R version 3.1.0 (2014-04-10)

2.Platform: x86_64-apple-darwin10.8.0 (64-bit)

3.Packages : tm_0.6    NLP_0.1-3

在WINDOWS 8.1上使用RSTUDIO

```{r}
versionInfo()
```
1.R version 3.1.0 (2014-04-10)

2.Platform: x86_64-w64-mingw32/x64 (64-bit) 

3.Packages : tm_0.6    NLP_0.1-3

问题描述

亲爱的,

我整个星期都在工作。我正在攻读社交网络分析博士学位。目前,我正在使用TM软件包进行文本挖掘和分析,英语和阿拉伯语混合在投标数据集中。

数据集是使用JAVA程序从Twitter API收集的,并放在MongoDB数据库中。

出于测试目的,我使用了36000条推文的小数据集。

问题在于,对于大型数据集计算(> 1000000行),我的MacBookPro是不够的。我需要使用具有Windows 8.1操作系统的PC,它具有更好的ROM和RAM。

在Windows 8.1操作系统上测试我的代码在MAC OS X上使用相同的测试数据集在RStudio上正常工作时,我在Corpus计算级别上得到了与TM软件包不同的结果。

这里是R代码的开头:

```{r}
y <<- dget("file") # get the file ext rated from MongoDB with rmongodb package
a <<- y$tweet_text # extract only the text of the tweets in the dataset
text_df <<- data.frame(a, stringsAsFactors = FALSE) # Save as a data frame
myCorpus_df <<- Corpus(DataframeSource(text_df_2)) # Compute a Corpus from the data frame
```

当我在MAC OS中检查R时,所有角色,英语和阿拉伯语都有很好的代表性:

```{r}
str(myCorpus_df[1:2])
```

List of 2
 $ 1:List of 2
  ..$ content: chr "The CHRONICLE EYE  Ahrar al#Sham is clearly fighting #ISIS where its men storm some #Manbij buildings #Aleppo "
  ..$ meta   :List of 7
  .. ..$ author       : chr(0) 
  .. ..$ datetimestamp: POSIXlt[1:1], format: "2014-07-03 22:42:18"
  .. ..$ 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"


 $ 2:List of 2
  ..$ content: chr "RT @######## جبهة النصرة مهاجرينها وأنصارها  مقراتها مكان آمن لكل من يخشى على نفسه الآذى "
  ..$ meta   :List of 7
  .. ..$ author       : chr(0) 
  .. ..$ datetimestamp: POSIXlt[1:1], format: "2014-07-03 22:42:18"
  .. ..$ description  : chr(0) 
  .. ..$ heading      : chr(0) 
  .. ..$ id           : chr "2"
  .. ..$ language     : chr "en"
  .. ..$ origin       : chr(0) 
  .. ..- attr(*, "class")= chr "TextDocumentMeta"
  ..- attr(*, "class")= chr [1:2] "PlainTextDocument" "TextDocument"
 - attr(*, "class")= chr [1:2] "VCorpus" "Corpus"

然而,当我在WINDOWS OS上的RSTUDIO中执行相同的代码部分时,所有的阿拉伯语言都被错误地解码了(不能在这里传递给你)。语料库的str显示相同的参数。只有阿拉伯语的显示是不可读的。检查数据框text_df时,阿拉伯语言会很好地显示出来。

当我检查两个OS(MAC和WINDOWS OS)上的阿拉伯语单词的编码时,它似乎编码良好:

```{r}
Encoding("لمياه_و_الإصحا")
```

[1] "UTF-8"

在创建Corpus(使用readerControl等等)时,我尝试传递了许多其他信息但没有任何变化:我的阿拉伯语言在Windows操作系统中的R或RStudio中显示不佳用tm包。

是否有人在使用非拉丁语文本挖掘的MAC OS X和WINDOWS操作系统之间遇到了相同的差异问题?

1 个答案:

答案 0 :(得分:0)

据我所知,在我看来,阿拉伯字符是以某种原生(特定于Windows)编码进行编码的,而您的R代码却错误地将它们解码为UTF8。这就是为什么你得到所有那些令人讨厌的符号,如“Ø”**。要验证这一点,只需使用charToRaw检查字符串变量的原始字节,然后检查UTF8字符表。

之前我没有使用mongodb包,但我想知道是否有办法强制以UTF8格式从mongodb读取数据,可能是通过指定编码参数一些“阅读”功能。

**实际上,我可以立即识别这些字符的原因是因为我在处理使用twitteR包获得的阿拉伯语推文时遇到了这种问题。