Кодирование с readtext - PullRequest
       11

Кодирование с readtext

0 голосов
/ 09 апреля 2019

Я хочу провести некоторый анализ текста на основе данных, хранящихся в виде файла .csv, но у меня возникли проблемы с кодировкой пакета readtext.

Чтобы проиллюстрировать мою проблему, я создал следующеефайл в Excel, сохраняя его как .csv (UTF-8):

|---------------------|------------------|
|      c_text         |       c_id       |
|---------------------|------------------|
|      München        |        aa        |
|---------------------|------------------|
|       Laïrie        |        bb        |
|---------------------|------------------|
|        Mános        |        cc        |
|---------------------|------------------|

Затем я загружаю данные в R следующим образом:

text_raw <- readtext::readtext("path/test_encoding.csv"),
                   encoding = "UTF-8",
                   text_field = "c_text")
text_raw

Вывод:

readtext object consisting of 3 documents and 1 docvar.
# Description: data.frame [3 x 3]
  doc_id              text              c_id 
  <chr>               <chr>             <chr>
1 test_encoding.csv.1 "\"München\"..." aa   
2 test_encoding.csv.2 "\"Laïrie\"..."  bb   
3 test_encoding.csv.3 "\"Mános\"..."   cc 

Если я затем запишу объект в файл .csv, результат снова будет другим.Команда write.csv(text_raw, file = "path", fileEncoding = "UTF-8") дает следующее:

München
Laïrie
Mános

Некоторая дополнительная информация:

  • Я использую компьютер с Windows, и мой sys.getLocale() равен English_United Kingdom.1252(очевидно, это нельзя изменить на UTF-8)

  • Даже если я укажу другие кодировки в функции readtext() (например, «utf8», «Windows-1252»,«ISO8859-1»), выход не изменяется.Однако, учитывая, что я явно сохраняю тестовый файл как utf-8, я не понимаю, что происходит.

Любая помощь будет принята с благодарностью.Спасибо.

1 Ответ

0 голосов
/ 02 мая 2019

Я создал запрос на извлечение, так как это была проблема в пакете readtext:

https://github.com/quanteda/readtext/pull/151

Пока этот PR не будет принят или проблема не будет решена иным образом, вы можете использоватьмоя вилка, чтобы решить эту проблему:

remotes::install_github("JBGruber/readtext")

Обновление

PR был одобрен, поэтому установите новую версию пакета через:

remotes::install_github("quanteda/readtext")

И тогда он должен работать:

df <- structure(list(c_text = structure(c(3L, 1L, 2L), .Label = c("Laïrie", 
                                                                  "Mános", "München"), class = "factor"), c_id = structure(1:3, .Label = c("aa", 
                                                                                                                                           "bb", "cc"), class = "factor")), class = "data.frame", row.names = c(NA, 
                                                                                                                                                                                                                -3L))
write.csv(df,
          "~/test.csv",
          row.names = FALSE,
          fileEncoding = "UTF-8")
text_raw <- readtext::readtext("~/test.csv",
                               encoding = "UTF-8",
                               text_field = "c_text")

text_raw
#> readtext object consisting of 3 documents and 1 docvar.
#> # Description: data.frame [3 x 3]
#>   doc_id     text             c_id 
#>   <chr>      <chr>            <chr>
#> 1 test.csv.1 "\"München\"..." aa   
#> 2 test.csv.2 "\"Laïrie\"..."  bb   
#> 3 test.csv.3 "\"Mános\"..."   cc

Создано в 2019-05-02 пакетом Представить (v0.2.1)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...