识别大型数据集中常见的关键短语频率

数据挖掘 数据集 聚类
2022-02-13 20:37:36

我有一个配置文件数据集,其中包含描述许多个人工作历史的自由格式文本。

我想尝试在一组配置文件中识别常用词或词组,以便我可以建立与配置文件相关的分类(技能)。

例如,如果“转化率优化”一词在所有配置文件中一起出现 300 次,我会在我的列表中将其视为高频关键词。我希望能够根据单个关键字、2 个单词和 3 个单词字符串过滤列表。

然后,我将能够手动挑选出与技能相关的常用关键词,这些关键词可以添加到主分类列表中。

我还需要一些过滤掉无效词的方法,比如('I','and'等)

完成这样的事情的最佳方法是什么?

2个回答

我想尝试识别常用词或词组

这里的困难在于捕捉多词词,而不是单个词。这意味着对不同的值使用 n-gramn,并且在比较两个不同长度(字数)的术语的频率时可能会导致偏差。

我还需要一些过滤掉无效词的方法,比如('I','and'等)

这些被称为停用词(有时是功能词或语法词)。它们的特点是它们出现得非常频繁,即使它们只包含在词汇表的一个很小的子集中(仅供参考,这与自然语言的 Zipf 定律有关)。这两个属性使它们很容易在预定义的列表中列出,以便可以排除它们,有许多可用的列表(例如herethere)。

由于您没有任何预定义的术语列表,因此可以采用基线方法:

  1. 对于每个值n考虑,收集所有n-克
  2. 删除任何n-gram 仅包含停用词(或主要包含停用词)(注意:最好先执行此步骤,但前提是可以安全地假设多字词不包含停用词)
  3. 计算每个候选词的文档频率(与TF-IDF 权重相同的 DF
  4. 过滤掉文档频率非常低的术语(用不同的阈值进行实验)。这一步应该消除很多噪音,但可能不是全部。
  5. 如果您的目标是获得一个干净的实际术语列表,您可能仍需要在此处进行一些手动过滤。通常应该只剩下很少的长 n-gram,剩下的大部分应该是好的,但是可能仍然有很多误报的一元和二元。

这种方法非常基本,但很容易调整,您可以根据您的数据调整它,可能添加步骤等。否则可能有专门的术语提取工具,但我不熟悉任何工具。

集群是用于此目的的错误工具。

如果要识别频繁模式,请使用频繁模式挖掘

在这里,您将需要考虑顺序和局部性,因此某种形式的频繁序列挖掘肯定是要走的路。

但是由于您可能只有几百个 CV,您可能可以简单地计算所有单词、2-gram、3-gram、4-gram(在输入的大小上仍然是线性的)并打印最常见的组合每个。

如果您有能力将数据的多个副本加载到主内存中,我建议您简单地使用 adict并计算所有出现的次数。