R:是否可以使用 quanteda 或任何其他文本挖掘 R 包来计算单词突发性?

R: is it possible to calculate word burstiness with quanteda or any other text mining R package?

我们正在使用突发性 terminology/lexicon 从文本语料库进行归纳。

我们目前已经基于以下文章第 2.6 节中描述的突发相似度公式之一实现了 R 脚本: 安·欧文和克里斯·凯里森-伯奇 (2017)。双语词汇归纳综合分析。计算语言学 第 43 卷 |第 2 期 | 2017 年 6 月,第 273-310 页。 https://www.mitpressjournals.org/doi/full/10.1162/COLI_a_00284

据我所知,Katz 是最早将突发性概念用于语言建模的科学家之一(参见 Justeson, J. S. 和 Katz, S. M. (1995)。技术术语:一些语言特性和 一种文本识别算法。自然语言工程,1:9–27; Katz, S. (1996)。内容词和短语在文本和语言中的分布 modelling.Natural 语言工程,2(1):15–60.)

我们想使用现成的突发性实现来比较和评估我们的脚本。

我想知道是否存在识别文本语料库中突发单词的 R 包或 R 函数。我会对任何基于或利用 Quanteda 的解决方案特别感兴趣,因为 Quanteda 是一个非常通用的文本统计包。

到目前为止,我发现的唯一 R 包是包“bursts”(2015 年 2 月 19 日),它实现了 Kleinberg 的突发性。 Kleinberg 的突发检测算法“识别目标事件异常频繁或‘突发’的时间段。”这不是我需要的,因为这种方法是基于时间序列的。

感谢帮助、建议和参考。

干杯, 码头

我没有找到很多 public 与文本分析相关的突发性参考资料。我确实遇到了 Modeling Statistical Properties of Written Text

如果我正确阅读了您提供的文章第 2.6 节中的公式,那么它是单词的相对比例除以该单词出现的文档的百分比。

我曾希望使用 dfm_tfidf 函数能让我到达那里。但是函数的scheme_df部分没有比例文档频率选项。

但是我们可以利用quanteda现有功能的一部分,把所有东西放在一起。

假设我们有一个名为 "docfm" 的文档特征矩阵 (dfm)。那么步骤是这样的

  1. 项的相对比例可以通过dfm_weight(docfm, scheme = "prop")

  2. 来计算
  3. 获取正比文件频率为docfreq(docfm) / ndocs(docfm).

现在一些矩阵除法计算。 applysweep 都可以。 apply会return一个矩阵需要转置,sweep会return一个dgeMatrix。在这两种情况下,您都可以使用 as.dfm 将它们变回 dmf。不幸的是,两者都是密集矩阵,因此您可能需要考虑到这一点。将它们放在一起:

使用apply:

t(apply(X = dfm_weight(docfm, scheme = "prop"), 1, "/",  (docfreq(docfm) / ndoc(docfm))))

使用sweep:

sweep(dfm_weight(docfm, scheme = "prop"), MARGIN = 2, STATS = docfreq(docfm) / ndoc(docfm), FUN = "/")