У меня есть два взаимосвязанных вопроса относительно сопоставления с образцом в R с использованием пакета {quanteda}
и функции tokens_lookup()
со значением по умолчанию valuetype="glob"
(см. здесь и здесь ).
Скажем, я хотел сопоставить немецкое слово, которое можно писать немного по-разному в зависимости от того, единственное оно или множественное: «Apfel» (EN: яблоко), «Äpfel» (EN: яблоки). Таким образом, для множественного числа мы используем умляут «ä» вместо «а» в начале. Поэтому, если я ищу фишки, я хочу убедиться, что нахожу я фрукты в тексте или нет, не зависит от того, является ли слово, которое я ищу, единственным или множественным. Это очень простой пример, и я знаю, что с таким же успехом могу создать словарь, в котором есть «äpfel *» и «apfel *», но мой вопрос в более общем плане касается использования специальных символов, таких как квадратные скобки.
По сути, я подумал, что могу просто go с квадратными скобками аналогично сопоставлению с образцом регулярного выражения: [aä]
. В общем, я подумал, что могу использовать такие вещи, как [a-z]
, чтобы соответствовать любой отдельной букве от a до z или [0-9]
, чтобы соответствовать любому единственному числу от 0 до 9. Фактически, это то, что написано здесь . По какой-то причине ничего из этого не работает:
library(quanteda)
text <- c(d1 = "i like apples and apple pie",
d2 = "ich mag äpfel und apfelkuchen")
dict_1 <- dictionary(list(fruits = c("[aä]pfel*"))) # EITHER "a" OR "ä"
dict_2 <- dictionary(list(fruits = c("[a-z]pfel*"))) # ANY LETTER
tokens(text) %>%
tokens_lookup(dict_1, valuetype = "glob")
tokens(text) %>%
tokens_lookup(dict_2, valuetype = "glob")
1.) Есть ли способ вообще использовать квадратные скобки при сопоставлении с шаблоном глобуса?
2.) Если да, [az] также будет соответствовать умляутам (ä, ö, ü), а если нет, как мы можем сопоставить такие символы?