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
)。那么步骤是这样的
项的相对比例可以通过dfm_weight(docfm, scheme = "prop")
来计算
获取正比文件频率为docfreq(docfm) / ndocs(docfm)
.
现在一些矩阵除法计算。 apply
或 sweep
都可以。 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 = "/")
我们正在使用突发性 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
)。那么步骤是这样的
项的相对比例可以通过
dfm_weight(docfm, scheme = "prop")
来计算
获取正比文件频率为
docfreq(docfm) / ndocs(docfm)
.
现在一些矩阵除法计算。 apply
或 sweep
都可以。 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 = "/")