Кажется, я не могу получить желаемый результат, используя qwic
quanteda. Вот что я пробовал:
library(quanteda)
library(tidyverse)
Учитывая этот текст
text <- "This is a phone number: 222-222-2222. Here's another phone number...(111)111 1111. This -- 333-3333 -- aint a complete phone number."
Вот регулярное выражение, которое соответствует большинству телефонных номеров в США вместе с любыми символами с каждой стороны номера.
regex.phone1 <- "\\D\\(?\\d{3}\\)?[.\\s-]?\\s*\\d{3}[.\\s-]?\\s*[.\\s-]*\\d{4}\\D"
Здесь он соответствует первому числу, что означает, что регулярное выражение работает должным образом.
regmatches(text,regexpr(regex.phone1,text))
" 222-222-2222."
Но kwic ни к чему не подходит. Этот:
kwic(
x = text,
pattern = regex.phone1,
window = 5,
valuetype = "regex",
case_insensitive = TRUE
) %>%
as_tibble
возвращает:
A tibble: 0 x 7
… with 7 variables: docname <chr>, from <int>, to <int>, pre <chr>, keyword <chr>,
post <chr>, pattern <fct>
Я хочу, чтобы он совпадал со всеми телефонными номерами, а именно:
222-222-2222.
. (111) 111 1111.
(и поместите их в обычную форму вывода kwic, которая отображает до, после и многое другое).
kwic
работает, но вы можете использовать шаблон вstr_extract_all
для извлечения всех слов, которые соответствуют шаблону.stringr::str_extract_all(text, regex.phone1)[[1]]
- person Ronak Shah   schedule 02.09.2020