我正在尝试构建一个可以通过匹配文本框中的语料库来动态显示数据库列中的句子的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
请求帮助......
答案 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()
)也将提取该文档。