聚类或分类基于 n-gram 的文本类别

数据挖掘 分类 聚类 文本挖掘 ngram
2021-10-14 23:48:24

我有大量的数据记录,如下所示:

"text", "category"

我从文本(2-、3-和 4-gram)中提取 n-gram 并存储每个类别的每个 n-gram 的计数,如下所示:

"ngram1", "category1", 1000
"ngram1", "category2", 20
"ngram1", "category3", 15
"ngram2", "category1", 25
"ngram2", "category2", 550
"ngram2", "category3", 600

是否有聚类或分类算法可以帮助根据类别内相同 n-gram 的计数在类别内查找组?

在上面的示例中,该算法应该能够显示“category2”和“category3”是同一组的一部分。

2个回答

如果您的最终目标是对相似的类别进行聚类,并假设您将每个文本的标签从 1 到 N 为 category1、category2、...、categoryN,那么词袋方法就足以创建特征,以便您可以运行多个所需的聚类算法。

K-means 可以作为获取相似文本文档类别组的良好起点,您可以尝试不同的 k 以获得更合理的结果。

我将在这里采用的方法,如果理解您的问题错误,请原谅我,将连接给定类别的所有文本数据并创建 1,2,3,..n 克向量。这些向量的值可以是给定 n-gram 的 TF-IDF,等等。仍然可以形成不同的特征矩阵来比较类别向量,但 TF-IDF 是一种非常常见的方法。

在为每个文本类别获取 n-gram 特征向量后,您可以应用具有多个距离度量的 k-means 算法来查找相似类别。

假设我们有 5 类文本:

  1. 足球比赛
  2. 篮球比赛
  3. 政治
  4. 电影

所提出的方法可以捕捉足球和篮球比赛之间的相似性,因为它们都是运动。

希望这可以帮助

查看问题陈述,您似乎只想应用层次聚类算法将子类别与其类别(子父关系)映射。

聚类算法为您提供每个聚类的距离、聚类附近的距离和聚类内的距离。这可能无法解决您的问题。使用层次聚类来映射具有类别的子类别。