我正在做一个文本分类/标记任务,我想问一下哪种数据结构最适合我。我拥有的训练数据集大约是 4 gigs(经过一些清理,但如果我丢弃稀有词应该会更小),包含 600 万个文档。每个文档有 4 个字段:
- 文件编号
- 标题
- 身体
- 标签(作为字符串,例如“apple sql-server linux”。这表示三个标签,用空格分隔。文档可以有 1-5 个标签)
我刚刚完成了清理阶段(词干、停用词等),我即将使用 scikit 将它们转换为 TF-IDF 词向量,因此输出是一个 scipy 稀疏矩阵。我想将标题和正文保留为两个向量,并在稍后决定赋予标题的权重时将它们组合起来。Title 和 Body 是稀疏向量,但它们是使用相同的字典构建的,因此具有相同的编号。的列。
表示此信息的最佳方式是什么?我来自 R,所以我只是习惯于在 data.tables / data frames 中存储东西,但这似乎不太适用于文本分类和稀疏矩阵。我想做的一件事是创建我自己的“文档”类,并且只有一个这些对象的列表来表示语料库。我认为这不是很有效,因为我可能想做类似return all docs with the Tag apple
.
我计划运行的 ML 算法是 k-means 聚类、kNN、朴素贝叶斯和可能的 SVM。可能还有其他我还没有想到的。
我是 Python 和文本分类的新手——非常感谢任何帮助,我对以前做过的人特别感兴趣。
谢谢!