如果我执行 dfm_replace() 以用引理替换单词,并想使用 KWIC 进行搜索,我如何才能将引理映射回原始单词?
If I do dfm_replace() to replace words with lemmas, and want to search with KWIC, how can I map back the lemma to the original word?
如果我有以下 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
只是对单词进行词形还原的列表。格式为 data.frame,有 2 列。
当我执行 kwic
赞时
kwic(dfmr, "agonized", window = 100)
agonized 不会出现,因为引理文件会将其替换为 agonize。如何确保我得到 kwic 中的前引理词并显示原文?
简短的回答是你不能,至少不能以你接近它的方式。
dfm_replace()
return是一个 dfm,您不能将 dfm 输入到 kwic()
。此外,一旦你形成了 ngrams,你的标记就是复合标记,并且不会以相同的方式具有引理。
然而,还有另一种方法:处理令牌而不是 dfm。如果您提供未词形化的标记作为 kwic()
匹配的模式参数,那么您可以按照您想要的方式 return 它们的上下文,然后将词形化的标记提供给 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)。
如果我有以下 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
只是对单词进行词形还原的列表。格式为 data.frame,有 2 列。
当我执行 kwic
赞时
kwic(dfmr, "agonized", window = 100)
agonized 不会出现,因为引理文件会将其替换为 agonize。如何确保我得到 kwic 中的前引理词并显示原文?
简短的回答是你不能,至少不能以你接近它的方式。
dfm_replace()
return是一个 dfm,您不能将 dfm 输入到 kwic()
。此外,一旦你形成了 ngrams,你的标记就是复合标记,并且不会以相同的方式具有引理。
然而,还有另一种方法:处理令牌而不是 dfm。如果您提供未词形化的标记作为 kwic()
匹配的模式参数,那么您可以按照您想要的方式 return 它们的上下文,然后将词形化的标记提供给 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)。