通过在闪亮的应用程序文本框中键入的文本显示匹配的句子

Display matching sentences by text typed in a Shiny app text box

我正在尝试构建一个闪亮的应用程序,它可以通过匹配文本框中的语料库来动态显示数据库列中的句子,即。当用户开始在文本框中键入文本时,所有匹配的句子(来自输入文本的语料库)需要按照与语料库匹配的单词数的顺序显示 我试过 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())也会提取它。