如何在训练源是分类文件夹中的txt文件的情况下使用文本分类?

数据挖掘 机器学习 Python 文本分类
2022-02-27 18:31:42

每个文件夹都有 200 个 *.txt 唯一文件:

在此处输入图像描述

每个文件都是由公共宣传的法律领域(文件夹)分隔的诉讼初始文本。

我想创建训练数据来预测他们的法律领域的新诉讼。

去年我尝试过使用PHP-ML,但是它消耗太多内存,所以我想迁移到Python。

我启动了代码,将每个文本文件加载到一个json-alike结构中,但我不知道接下来的步骤:

import pandas as pd
from sklearn.feature_extraction.text import CountVectorizer,TfidfVectorizer
from sklearn.base import TransformerMixin
from sklearn.pipeline import Pipeline
import os

path = 'C:\wamp64\www\machine_learning\webroot\iniciais\\'

files = {}

for directory in os.listdir(path):
    if os.path.isdir(path+directory):
        files[directory] = [];
        full_path = path+directory
        for filename in os.listdir(full_path):
                full_filename = path+directory+"\\"+filename
                if full_filename.endswith(".txt"):
                    with open(full_filename, 'r', encoding='cp437') as f:
                        files[directory].append(f.readlines())

提前致谢

2个回答

假设您的文件夹是您的类,您可以将任何文档与对应的标签进行匹配。
然后,对于每个文档:
1.- 规范化文本,即删除停用词(除非它们有意义)、词干和/或词形还原(除非它没有意义)。
2.- 向量化文档,您可以选择 TFIDF、BOW、词嵌入等
3.- 根据您的文档使用 MLP(如果是 BOW)或 LSTM(如果是词嵌入)进行训练。

当您有一个新文档时,您需要使用为训练集创建的词汇表重复该过程。

我有一个类似的用例,足以将 BOW 与多层感知器一起使用,准确率在 95% 以上,但是,每个类别的文档都不同,我删除了最常用的词,因为那里常见。

另一种解决方案是对将这些主题绑定到类别的文档执行主题建模,然后训练一个简单的分类器(MLP 或 SVM 可以工作)

Scikit-learn 的sklearn.datasets.load_files是一个“加载具有类别作为子文件夹名称的文本文件”的功能。