В настоящее время я работаю с пакетом quanteda, и я хотел бы сегментировать мой корпус в соответствии с шаблоном, состоящим по крайней мере из двух символов регулярного выражения в строке. Однако я не уверен, как на самом деле работает функция corpus_segment (). Я построил следующий небольшой пример, чтобы проиллюстрировать мои вопросы:
test <- "start middle end"
test <- corpus(test)
test
Corpus consisting of 1 document and 0 docvars.
texts(test)
text1
"start middle end"
Теперь я хотел бы сегментировать документ в соответствии с шаблоном по крайней мере из двух символов регулярного выражения:
texts(corpus_segment(test, pattern="\\s{2,}", valuetype = "regex"))
text1.1 text1.2
"middle" "end"
Теперь слово перед первым совпадением с образцом было удалено. Посмотрев документацию, я увидел, что по умолчанию remove_pattern равен TRUE. Тем не менее, я не понимаю, почему он также удаляет слово перед первым сопоставлением с образцом. Моим первоначальным предположением было то, что это как-то связано с аргументом pattern_position, и действительно, если я установлю его на «after», произойдет следующее:
texts(corpus_segment(test, pattern="\\s{2,}", valuetype = "regex", pattern_position="after"))
text1.1 text1.2
"start" "middle"
Таким образом, слово после последнего паттерна будет вырезано. Я выяснил, что установка параметра remove_pattern в значение «FALSE» сохраняет все три слова и выполняет то, что я намеревался сделать:
texts(corpus_segment(test, pattern="\\s{2,}", valuetype = "regex", extract_pattern=FALSE))
text1.1 text1.2 text1.3
"start" "middle" "end"
Документация функции гласит следующее:
"extract_pattern: извлекает сопоставленные шаблоны из текстов и сохраняет в документах, если ИСТИНА "
" pattern_position: либо "до", либо "после", в зависимости от того, предшествует ли шаблон тексту (как с предоставленным пользователем тегом, таким как ## INTRO в приведенных ниже примерах) или следует за текстом (как с разделителями знаков препинания) "
, и я не вижу, как в этой документации объясняется, почему" начало "или" конец "вырезаны в зависимости от параметра pattern_position .