Извлечение текста между 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