r - R:是否可以使用 quanteda 或任何其他文本挖掘 R 包计算单词突发性?
问题描述
我们使用突发性从文本语料库中进行术语/词典归纳。
我们目前基于以下文章 2.6 节中描述的突发性相似度公式之一实现了 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, JS 和 Katz, SM (1995)。技术术语:一些语言特性和文本识别算法。自然语言工程,1:9–27;Katz, S. (1996)。文本和语言建模中内容词和短语的分布。自然语言工程,2(1):15–60.)
我们想使用现成的突发性实现进行比较和评估我们的脚本。
我想知道是否存在识别文本语料库中突发单词的 R 包或 R 函数。我会对任何基于或利用 Quanteda 的解决方案特别感兴趣,因为 Quanteda 是一个极其通用的文本统计包。
到目前为止,我发现的唯一 R 包是 Package 'bursts'(2015 年 2 月 19 日),它实现了 Kleinberg 的突发性。Kleinberg 的突发检测算法“识别目标事件异常频繁或“突发”的时间段。这不是我需要的,因为这种方法是基于时间序列的。
帮助,建议,参考表示赞赏。
干杯,玛丽娜
解决方案
我还没有找到很多关于与文本分析相关的突发性的公开参考资料。我确实遇到过Modeling Statistical Properties of Written Text。
如果我从您提供的文章中正确阅读了第 2.6 节中的公式,那么它是单词的相对比例除以出现单词的文档的百分比。
我曾希望使用该dfm_tfidf
功能能让我到达那里。但scheme_df
部分功能没有按比例的文件频率选项。
但我们可以使用 quanteda 现有的部分功能将所有内容组合在一起。
dfm
假设我们有一个名为“docfm”的文档特征矩阵 ( )。然后步骤是这样的
项的相对比例可以通过下式计算
dfm_weight(docfm, scheme = "prop")
得到成比例的文档频率是
docfreq(docfm) / ndocs(docfm)
。
现在进行一些矩阵除法计算。要么apply
或sweep
将工作。apply
将返回一个矩阵并且需要转置,sweep 将返回一个 dgeMatrix。在这两种情况下,您都可以将它们转回dmf
with 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 = "/")
推荐阅读
- cloud-foundry - 在动态存储服务键中自定义 accessHost 值
- python-3.x - TypeError:from_buffer() 无法返回 unicode 对象的地址
- kotlin - as之间的区别?类型和作为类型?
- react-native - useMutation 不改变本地状态
- c# - 在数据库中记录 Hangfire RecurringJob 的执行?
- python - TypeError:float() 参数必须是字符串或数字,而不是“Day”
- asp.net-web-api - 是否可以有两个具有相同路由的控制器?
- flutter - 与 mobx 一起颤动的可观察列表
- android - 无法在 Android 中创建模块上下文
- r - 如何将位置分配为聚类质心并运行聚类以找到离每个质心最近的点?