如果我有以下data.frame:
df <- data.frame(text = c("Ow now brown cow","Unique New York",
"The sassy salesmans agonized about a bigger sale"),
person = c("Jim", "John", "Jim"),
year = c(1994, 1995, 1996),
stringsAsFactors = FALSE)
x <- corpus(df)
xdfm <- tokens(x) %>%
tokens_remove(stopwords("english"), padding = TRUE) %>%
dfm(remove_numbers = TRUE, remove_punct = TRUE,
ngrams = 1:3, remove_symbols = TRUE, concatenator= " ")
xdfmr <- dfm_replace(x, pattern = lemmaFile$V2, replacement = lemmaFile$V1)
lemmaFile
只是一个词汇列表的列表。以2列的data.frame格式。
当我执行kwic
之类的
kwic(dfmr, "agonized", window = 100)
由于引理文件会以痛苦取代它,所以很痛苦不会出现。如何确保我在kwic中获得前词并显示原始文本?
答案 0 :(得分:0)
简短的回答是,你不能,至少不是你接近它的方式。
dfm_replace()
返回dfm,您无法将dfm输入kwic()
。此外,一旦你形成了ngrams,你的标记就是复合标记,并且不会以同样的方式出现引号。
然而,还有另一种方法:处理令牌而不是dfm。如果您提供未经说明的标记作为kwic()
匹配的模式参数,则可以按照您希望的方式返回其上下文,但随后将lemmatised标记提供给dfm以进行进一步处理。此方法使用tokens_replace()
而不是dfm_replace()
。
xtoks <-
tokens(x, remove_numbers = TRUE, remove_punct = TRUE, remove_symbols = TRUE) %>%
tokens_remove(stopwords("english"), padding = TRUE)
lemmaFile = list(V2 = "agonized", V1 = "agonize")
xtoklemma <- tokens_replace(xtoks, pattern = lemmaFile$V2, replacement = lemmaFile$V1)
kwic(xtoks, lemmaFile$V2)
## [text3, 4] sassy salesmans | agonized | bigger sale
此处,匹配使用前引理标记,但您可以使用xtoklemma
进行进一步处理(例如,构建dfm,有或没有ngrams)。