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

时间:2018-06-03 13:20:23

标签: r text-mining quanteda

我们正在使用文本语料库中术语/词典归纳的突发性。

我们目前已经根据以下文章第2.6节中描述的Burstiness Similarity公式之一实现了一个R脚本: Ann Irvine和Chris Callison-Burch(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)。在文本和语言模型中分发内容单词和短语。自然语言工程,2(1):15-60。)

我们希望使用现成的突发性实现进行比较和评估我们的脚本。

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

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

感谢帮助,建议和参考。

干杯, 码头

1 个答案:

答案 0 :(得分:1)

我还没有找到很多关于与文本分析相关的突发性的公开引用。我确实遇到过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)

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

    使用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 = "/")