如何在R中查找和绘制n-gram的频率?

如何在R中查找和绘制n-gram的频率?,r,nlp,quanteda,frequency-analysis,R,Nlp,Quanteda,Frequency Analysis,我想做的是找出多个单词/短语的频率,并按年份将它们绘制成图表 我已经能够做到这一点,像“美国”,但我有麻烦的一个以上的单词表达,如“美国” My df有一列用于实际文本,然后还有其他列用于元数据,如作者、年份和组织 这是我用来写“american”这样的单字的代码: a_corpus要识别复合标记,或者在quanteda术语、短语中,您需要使用固定复合词列表来复合标记。(还有其他方法,例如使用textstat\u collabons()进行过滤,但由于这里有一个固定的列表供选择,因此这是最简单的

我想做的是找出多个单词/短语的频率,并按年份将它们绘制成图表

我已经能够做到这一点,像“美国”,但我有麻烦的一个以上的单词表达,如“美国”

My df有一列用于实际文本,然后还有其他列用于元数据,如作者、年份和组织

这是我用来写“american”这样的单字的代码:


a_corpus要识别复合标记,或者在quanteda术语、短语中,您需要使用固定复合词列表来复合标记。(还有其他方法,例如使用
textstat\u collabons()
进行过滤,但由于这里有一个固定的列表供选择,因此这是最简单的方法。)

库(“quanteda”)
##软件包版本:3.0
##Unicode版本:10.0
##ICU版本:61.1
##并行计算:使用12个线程中的12个。
##看https://quanteda.io 有关教程和示例。
库(“quanteda.textstats”)

欢迎来到Stackoverflow。这里一种有用的搜索方法是将
[r]bigram
放在搜索框中。这将指定您在此处将搜索限制为R和与bigram相关的问题,其中出现298个结果。这是一种方便的导航和研究方法。这可能会引导您使用其他方法,或者包。哈马辛,这成功了!非常感谢。我可以问一个后续问题吗?有没有办法寻找多个单词的频率?例如,我将寻找“美国”、“加拿大”组合的总频率。我认为字典之类的东西可能有用,但我不确定如何在上面的代码中实现它。有没有办法找到词根及其缩写的频率?例如,我想找到“经济”的频率,但也要找到“经济”、“经济”的频率,我知道使用kwic函数,你可以做“经济*”,但有没有办法用频率来做?最好使用基于内置数据集的可复制示例来定义一个问题和你想要的输出。把这当作一个新问题来问。我会的,谢谢!
a_corpus <- corpus(df, text = "text")

freq_grouped_year <- textstat_frequency(dfm(tokens(a_corpus)), 
                               groups = a_corpus$Year)


# COLLECTION NAME - Filter the term "american", use lower case words 
freq_word_year <- subset(freq_grouped_year, freq_grouped_year$feature 
%in% "american")  


ggplot(freq_word_year, aes(x = group, y = frequency)) +
    geom_point() + 
    scale_y_continuous(limits = c(0, 300), breaks = c(seq(0, 300, 
    30))) +
    xlab(NULL) + 
    ylab("Frequency") +
    theme(axis.text.x = element_text(angle = 90, hjust = 1))