【问题标题】:How to use n-grams for multi-label classification?如何使用 n-gram 进行多标签分类?
【发布时间】:2017-11-09 02:04:57
【问题描述】:

我正在开展一个项目,根据他们用英语交流的方式来确定他们的国籍。我有 10 个国籍和 1000 个文件,每个国籍 100 个。我正在使用 n-gram 作为特征并希望验证我的方法。我的数据结构将具有不同的 n-gram(字符 n-gram、bi-gram,作为列)作为特征和国籍作为标签(作为行)我的步骤是:

  1. 提取给定国籍的所有文件 (FINE)。 1.1。将它们组合在一起形成一个文本语料库(例如将 100 个文件组合成一个大文件)。我最初考虑一次获取一个文件并根据它们的出现更新 n-gram 的计数。但是对于每个新的 n-gram,我必须查看它是否已经发生,然后针对给定的标签更新它的频率。这会是更好的方法吗?
  2. 提取二元/三元并获取每克的频率。 (NLTK 有 FreqDist 为每个计数)
  3. 存储此信息,以便我使用它来分类我的测试集。 (我如何存储这些信息。更多信息如下)

问题是我应该将 n-gram 和频率信息存储在一个矩阵中(一个具有所有 n-gram 和标签的单个矩阵或每个标签的单独矩阵)还是应该将它存储为一个映射(每个标签的映射,具有 n-gram 及其频率计数)。我想要一个数据结构(用于存储提取的信息),分类器很容易将其作为输入并处理它们。我无法预见,哪种数据结构会是更好的选择。

【问题讨论】:

    标签: nlp classification n-gram language-model


    【解决方案1】:

    1) 没关系。如果您有办法单独执行然后合并它,那么如果您将来想要扩展到分布式系统(通常称为 map-reduce 方法),这将有所帮助。

    2) 好的。

    3) n-gram 和频率计数通常不适用于特征分类。您可能希望为每个标签使用单独的矩阵/映射,然后使用 TF-IDF (https://en.wikipedia.org/wiki/Tf%E2%80%93idf) 之类的东西来识别具有特定标签特征的 n-gram。

    4) 在分类方面,您将构建一个固定长度的向量,您可以在其中选择在上一步中为每个标签识别的 ngram 子集,然后将其用于训练和分类。您可能还需要对计数进行某种标准化。

    【讨论】:

      猜你喜欢
      • 2021-02-09
      • 2020-06-26
      • 2021-04-12
      • 1970-01-01
      • 2019-09-24
      • 2016-05-09
      • 2017-06-03
      • 2016-01-18
      相关资源
      最近更新 更多