Извлечение текста между HTML-тегами и маркировка его тегом в R

Я пытаюсь научиться классифицировать предложения в R.

У меня есть текстовый файл, содержащий предложения в следующем формате:

<happy>
  This did the trick : the boys now have a more distant friendship and David is much happier . 
<\happy>
<happy>
  When Anna left Inspector Aziz , she was much happier . 
<\happy>

Я намерен пометить предложения следующим образом:

dataset$text = When Anna left Inspector Aziz , she was much happier
dataset$label = happy

Я хочу извлечь предложение и обозначить их эмоциями. Как мне подойти к этому? Я знаю, что я должен использовать группировки в регулярных выражениях, но я не знаю, как это сделать в R. Я новичок в этом и учусь.

rl <- readLines('sentences.txt')

1 ответ

В настоящее время это плохо отформатированный XML, как

  • XML использует косые черты в закрывающих тегах вместо обратных. На самом деле, вы даже не можете прочитать это в R как есть, так как он попытается разобрать \h как экранированный персонаж, если вы не добавите дополнительные обратные слэши, чтобы избежать их.
  • XML должен быть заключен в один тег. Проблема гораздо проще решить (paste на некоторых тегах), хотя.

Если, как это не исключено, ваши фактические данные имеют правильный формат XML, вы можете использовать пакеты xml2 или XML для анализа. мне нравится purrr::map_df перебирать узлы и приводить результаты к data.frame, но вы можете сделать то же самое в base R, если хотите.

library(xml2)
library(purrr)

'<happy>
    This did the trick : the boys now have a more distant friendship and David is much happier . 
</happy>
<happy>
    When Anna left Inspector Aziz , she was much happier . 
</happy>' %>% 
    paste('<sent>', ., '</sent>') %>%    # add enclosing tags
    read_xml() %>% 
    xml_find_all('//text()/parent::*') %>%    # select nodes that are parents of text
    map_df(~list(text = xml_text(.x, trim = TRUE), 
                 emotion = xml_name(.x)))

## # A tibble: 2 × 2
##                                                                                           text emotion
##                                                                                          <chr>   <chr>
## 1 This did the trick : the boys now have a more distant friendship and David is much happier .   happy
## 2                                       When Anna left Inspector Aziz , she was much happier .   happy
Другие вопросы по тегам