Обнаружение частей текста на иностранных языках (Rstudio) - PullRequest
0 голосов
/ 30 апреля 2020

Мой набор данных содержит много текстов. Тексты, написанные полностью на иностранных языках, отбрасываются. Теперь все тексты написаны на английском языке sh, но у некоторых есть переводы, например, кто-то говорит на двух языках, который, кроме текста на английском языке sh, перевел текст на английском языке sh под текстом на английском языке sh в неанглийском sh тексте. Я хочу отфильтровать эти части текстов.

Все тексты находятся в одной переменной. Я попытался удалить эти тексты (используя функцию unid_tokens в tidytext) и с помощью пакета textcat для определения языка неиспользованных слов, но это дает мне самые противоречивые языки, от французского до словенского, несмотря на то, что соответствующие слова - Engli sh.

Код, который я использовал для этого обнаружения и обнаружения, выглядит следующим образом (я создал образец для производительности):

text_unnesting_tokens <- MyDF %>% tidytext::unnest_tokens(word, text) 
sample <- text_unnesting_tokens[sample(nrow(text_unnesting_tokens), 5000), ]
sample$language <- textcat(sample$word, p = textcat::TC_char_profiles)

1 Ответ

0 голосов
/ 30 апреля 2020

Если вы хотите использовать textcat::textcat(), вы должны сделать это до токенизации, потому что оно основано на целых фрагментах текста, взятых вместе, а не на отдельных токенах. Сначала используйте textcat() для идентификации языков и , затем tokenize:

library(tidyverse)
library(tidytext)
library(textcat)
library(hcandersenr)

fir_tree <- hca_fairytales() %>%
  filter(book == "The fir tree") 

## how many lines per language?
fir_tree %>%
  count(language)
#> # A tibble: 5 x 2
#>   language     n
#>   <chr>    <int>
#> 1 Danish     227
#> 2 English    253
#> 3 French     227
#> 4 German     262
#> 5 Spanish    261

## how many lines per detected language?
fir_tree %>%
  mutate(detected_lang = textcat(text)) %>%
  count(detected_lang, sort = TRUE)
#> # A tibble: 30 x 2
#>    detected_lang      n
#>    <chr>          <int>
#>  1 german           257
#>  2 spanish          238
#>  3 french           215
#>  4 english          181
#>  5 danish           138
#>  6 norwegian         80
#>  7 scots             60
#>  8 portuguese         7
#>  9 swedish            6
#> 10 middle_frisian     5
#> # … with 20 more rows

## now detect language + tokenize
fir_tree %>%
  mutate(detected_lang = textcat(text)) %>%
  unnest_tokens(word, text)
#> # A tibble: 14,850 x 4
#>    book         language detected_lang word    
#>    <chr>        <chr>    <chr>         <chr>   
#>  1 The fir tree Danish   danish        ude     
#>  2 The fir tree Danish   danish        i       
#>  3 The fir tree Danish   danish        skoven  
#>  4 The fir tree Danish   danish        stod    
#>  5 The fir tree Danish   danish        der     
#>  6 The fir tree Danish   danish        sådant  
#>  7 The fir tree Danish   danish        et      
#>  8 The fir tree Danish   danish        nydeligt
#>  9 The fir tree Danish   danish        grantræ 
#> 10 The fir tree Danish   danish        det     
#> # … with 14,840 more rows

Создано в 2020-04-30 пакетом Представить (v0. 3,0)

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