Поиск текста на арабском и английском языках с помощью пакета tm в R - проблема с разными результатами между MAC OSX и ОС Microsoft Windows 8.1

Пакет R - TM - Проблема с арабским - разница между Mac OS X и Windows OS

НА MACBOOK PRO с RSTUDIO

```{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 для интеллектуального анализа текста и анализа, при этом английский и арабский языки смешаны в наборах данных ставок.

Наборы данных собираются из Twitter API с помощью программы JAVA и помещаются в базу данных MongoDB.

В тестовых целях я использую небольшой набор данных из 36000 твитов.

Проблема в том, что для вычисления огромных наборов данных (> 1000000 строк) моего MacBookPro будет недостаточно. Мне нужно использовать ПК с ОС Windows 8.1 с улучшенными ПЗУ и ОЗУ.

При тестировании моего кода в ОС Windows 8.1, которая отлично работает с RStudio в MAC OS X с тем же набором тестовых данных, у меня есть несколько отличных от пакета TM результатов на уровне вычислений Corpus.

Вот начало кода 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
```

Когда я проверяю R в MAC OS, все символы, английский и арабский, хорошо представлены:

```{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"

Тем не менее, когда я выполняю ту же часть кода в RSTUDIO в ОС WINDOWS, весь арабский язык декодируется неправильно (здесь вас не обойти). Строка Корпуса показывает те же параметры. Не читается только отображение арабского языка. При проверке во фрейме данных text_df арабский язык отображается хорошо.

Когда я проверяю кодировку арабского слова в обеих ОС (ОС MAC и WINDOWS), кажется, что она хорошо закодирована:

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

[1] "UTF-8"

Я пытался передать много дополнительной информации при создании CorpusreaderControletc…), но ничего не изменилось: мой арабский язык плохо отображается в R или RStudio в ОС Windows с пакетом tm.

Кто-нибудь сталкивался с такими же проблемами разницы между MAC OS X и WINDOWS OS с нелатинским текстовым поиском?


person Cyrille    schedule 07.07.2014    source источник
comment
Я думаю, причина в том, что окна имеют другую кодировку, чем UTF-8. Если можете, попробуйте использовать Linux на этом ПК (например, через VirtualBox)   -  person bartektartanus    schedule 07.07.2014
comment
Да, я думаю, что проблема в ОС WINDOWS. Проблема виртуализации заключается в потере эффективности ПЗУ / ОЗУ при вычислениях R-текста и интеллектуального анализа данных. Я постараюсь пройти по этому пути несколько дней, а затем найду другое решение.   -  person Cyrille    schedule 08.07.2014
comment
Выдержка из сессии Corpus on Rstudio в ОС Windows 8.1 - посмотрите формат текста твита второго объекта): {r} inspect (myCorpus_df [1: 2] `` ‹< VCorpus (документы: 2, метаданные (корпус / проиндексировано): 0/0) ›› [[1]] ‹???????????? [[2]] ‹** PlainTextDocument (метаданные: 7) ›› RT @ ##### _1 جب٠‡ Ø © ا٠„Ù † ØµØ ± Ø © Ù… Ù ‡ Ø§Ø¬Ø ± ÙŠÙ † Ù ‡ ا ÙˆØ £ Ù † ØµØ§Ø ± Ù ‡ ا Ù… Ù‚Ø ± ات٠‡ ا Ù… كا٠† Ø ¢ Ù… Ù † Ù „كل Ù… Ù † يخش٠‰ ع٠„Ù ‰ Ù † Ùس٠‡ ال Ø ¢ Ø ° Ù ‰ ``   -  person Cyrille    schedule 08.07.2014
comment
Вы пытались изменить кодировку символов по умолчанию в Windows 8.1?   -  person    schedule 08.07.2014
comment
Я загрузил несколько пакетов с арабскими языками для Windows 8.1. Но это может быть отображение арабского языка в среде R, что является причиной: когда вы вызываете базу данных MongoDB через пакет rmongodb и отображаете список коллекций, арабские имена имеют неправильный формат в R Console и R Global Environment. Когда вы выполняете сбор базы данных из R во фрейм данных в R, результирующий объект R отображает арабский язык в хорошем формате. Но ограничения моего кода R с rmongodb не позволяют мне создавать большие фреймы данных для анализа.   -  person Cyrille    schedule 09.07.2014


Ответы (1)


Насколько я могу судить, мне кажется, что арабские символы кодируются в какой-то нативной (специфичной для Windows) кодировке, в то время как ваш R код неправильно декодирует их как UTF8. Вот почему вы получаете все эти раздражающие символы, такие как «Ø» **. Чтобы убедиться в этом, просто проверьте необработанные байты ваших строковых переменных с помощью charToRaw, а затем проверьте таблицу символов UTF8.

Я раньше не работал с пакетом mongodb, но мне интересно, есть ли способ заставить данные считываться из mongodb в формате UTF8, возможно, указав параметр кодирования какой-нибудь функции "чтения".

** На самом деле, причина, по которой я могу сразу распознать эти символы, заключается в том, что я столкнулся с такой проблемой при работе с арабскими твитами, которые я получил с помощью пакета twitteR.

person Chiraz BenAbdelkader    schedule 05.02.2015