通过在Shiny app文本框中键入的文本显示匹配的句子

时间:2017-08-14 11:04:46

标签: r shiny tm quanteda

我正在尝试构建一个可以通过匹配文本框中的语料库来动态显示数据库列中的句子的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

请求帮助......

1 个答案:

答案 0 :(得分:0)

我认为你所要求的是,

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())也将提取该文档。