У меня есть большой фреймворк, в котором я идентифицирую шаблоны в строках, а затем извлекаю их. Я привел небольшое подмножество, чтобы проиллюстрировать мою задачу. Я создаю свои шаблоны, создавая TermDocumentMatrix с несколькими словами. Я использую эти шаблоны с stri_extract и str_replace из пакетов stringi и stringr для поиска в кадре данных punct_prob.R Как сохранить знаки препинания с помощью TermDocumentMatrix()
Моя проблема в том, что мне нужно держать пунктуацию в такте в «punct_prob $ description», чтобы поддерживать буквальные значения внутри каждой строки. Например, я не могу иметь 2,35 мм, становясь 235 мм. Тем не менее, процедура TermDocumentMatrix, которую я использую, удаляет пунктуацию (или, по крайней мере, периоды), и поэтому мои функции поиска шаблона не могут их сопоставить.
Вкратце ... как я могу хранить знаки препинания при создании TDM? Я попытался включить removePunctuation = FALSE в аргумент управления TermDocumentMatrix, но без успеха.
library(tm)
punct_prob = data.frame(description = tolower(c("CONTRA ANGLE HEAD 2:1 FOR 2.35mm BUR",
"TITANIUM LINE MINI P.B F.O. TRIP SPRAY",
"TITANIUM LINE POWER P. B F.O. TRIP SPR",
"MEDESY SPECIAL ITEM")))
punct_prob$description = as.character(punct_prob$description)
# a control for the number of words in phrases
max_ngram = max(sapply(strsplit(punct_prob$description, " "), length))
#set up ngrams and tdm
BigramTokenizer <- function(x) {RWeka::NGramTokenizer(x, RWeka::Weka_control(min = max_ngram, max = max_ngram))}
punct_prob_corpus = Corpus(VectorSource(punct_prob$description))
punct_prob_tdm <- TermDocumentMatrix(punct_prob_corpus, control = list(tokenize = BigramTokenizer, removePunctuation=FALSE))
inspect(punct_prob_tdm)
проверять результаты - без пунктуации ....
Docs
Terms 1 2 3 4
angle head 2 1 for 2 35mm bur 1 0 0 0
contra angle head 2 1 for 2 35mm 1 0 0 0
line mini p b f o trip spray 0 1 0 0
line power p b f o trip spr 0 0 1 0
titanium line mini p b f o trip 0 1 0 0
titanium line power p b f o trip 0 0 1 0
Спасибо за любую помощь заранее :)
Спасибо @piver - отлично работает! – CallumH