我正在尝试构建一个Shiny App,该应用程序可以通过匹配文本框中的语料库来动态显示数据库列中的句子,即。 当用户开始在文本框中键入文本时,所有匹配的句子(键入的文本中的语料库(都需要按与语料库匹配的字数顺序显示 我尝试了kwic
功能,但这无助于动态匹配语料库,我尝试过的方法,
require(quanteda)
require(tm)
data(crude, package = "tm")
mycorpus <- corpus(crude)
kwic(mycorpus, "company") # Pass the words from the text box corpus
请求帮助...
我认为你要的是,
table(kwic(mycorpus, phrase, join = FALSE)$keyword)
随着输入更多术语,phrase
只会变长。(需要quanteda >= 0.99
,其中还包括在这里可能有用的phrase
函数。对于更一般的匹配,您可以将语料库和所有输入的术语(以不断延长的phrase
(转换为标记化的词干
mystems <- corpus(crude) %>% texts() %>% tokens() %>% tokens_wordstem()
phrase <- tokens(phrase, remove_punct = TRUE, remove_symbols = TRUE) %>%
tokens_wordstem(language = "greek") %>% # or whatever
as.character()
然后table(kwic(mystems, phrase, join = FALSE)$keyword)
应该做同样的事情,但只匹配词干,而不是确切的词干。如果你想要与每个文档匹配的单词数,那么*apply
类型的包装器(或purrr::map()
(也将提取它。