如何使用 n-gram 进行多标签分类?
Posted
技术标签:
【中文标题】如何使用 n-gram 进行多标签分类?【英文标题】:How to use n-grams for multi-label classification? 【发布时间】:2017-11-09 02:04:57 【问题描述】:我正在开展一个项目,根据他们用英语交流的方式来确定他们的国籍。我有 10 个国籍和 1000 个文件,每个国籍 100 个。我正在使用 n-gram 作为特征并希望验证我的方法。我的数据结构将具有不同的 n-gram(字符 n-gram、bi-gram,作为列)作为特征和国籍作为标签(作为行)我的步骤是:
-
提取给定国籍的所有文件 (FINE)。
1.1。将它们组合在一起形成一个文本语料库(例如将 100 个文件组合成一个大文件)。我最初考虑一次获取一个文件并根据它们的出现更新 n-gram 的计数。但是对于每个新的 n-gram,我必须查看它是否已经发生,然后针对给定的标签更新它的频率。这会是更好的方法吗?
提取二元/三元并获取每克的频率。 (NLTK 有 FreqDist 为每个计数)
存储此信息,以便我使用它来分类我的测试集。 (我如何存储这些信息。更多信息如下)
问题是我应该将 n-gram 和频率信息存储在一个矩阵中(一个具有所有 n-gram 和标签的单个矩阵或每个标签的单独矩阵)还是应该将它存储为一个映射(每个标签的映射,具有 n-gram 及其频率计数)。我想要一个数据结构(用于存储提取的信息),分类器很容易将其作为输入并处理它们。我无法预见,哪种数据结构会是更好的选择。
【问题讨论】:
【参考方案1】:1) 没关系。如果您有办法单独执行然后合并它,那么如果您将来想要扩展到分布式系统(通常称为 map-reduce 方法),这将有所帮助。
2) 好的。
3) n-gram 和频率计数通常不适用于特征分类。您可能希望为每个标签使用单独的矩阵/映射,然后使用 TF-IDF (https://en.wikipedia.org/wiki/Tf%E2%80%93idf) 之类的东西来识别具有特定标签特征的 n-gram。
4) 在分类方面,您将构建一个固定长度的向量,您可以在其中选择在上一步中为每个标签识别的 ngram 子集,然后将其用于训练和分类。您可能还需要对计数进行某种标准化。
【讨论】:
以上是关于如何使用 n-gram 进行多标签分类?的主要内容,如果未能解决你的问题,请参考以下文章