在机器学习和数据科学领域,处理文本数据是一个常见的任务。文本数据通常存储在文件中,需要被加载到内存中以便进行进一步的处理。本文将介绍一个函数,该函数能够加载文件夹中的文本文件,并根据文件夹结构自动为数据分配标签。这种结构通常如下所示:
container_folder/
category_1_folder/
file_1.txt
file_2.txt
…
file_42.txt
category_2_folder/
file_43.txt
file_44.txt
…
在这个结构中,每个子文件夹代表一个类别,文件夹名称将被用作监督信号的标签名称。文件名本身并不重要。这个函数不会尝试将特征提取到NumPy数组或SciPy稀疏矩阵中。此外,如果设置load_content=False
,它也不会尝试将文件加载到内存中。
要使用文本文件进行scikit-learn的分类或聚类算法,需要使用text
模块来构建一个适合问题的文本特征提取转换器。如果设置load_content=True
,还应该使用encoding
参数指定文本的编码。对于许多现代文本文件,'utf-8'
将是正确的编码。如果将encoding
设置为None
,则内容将由字节而不是Unicode组成,将无法使用text
中的大多数函数。
对于其他类型的非结构化数据输入,如图像、音频、视频等,也应该构建类似的特征提取器。如果想加载具有特定文件扩展名(例如.txt
)的文件,那么可以传递这些文件扩展名的列表到allowed_extensions
。
参数说明:
container_path
:持有每个类别一个子文件夹的主文件夹的路径。description
:描述数据集特征的段落:其来源、参考等。categories
:类别名称列表,默认为None
,即加载所有类别。如果指定,将只加载列表中的类别。load_content
:布尔值,默认为True
,决定是否加载不同文件的内容。shuffle
:布尔值,默认为True
,决定是否对数据进行随机打乱。encoding
:字符串,默认为None
,指定用于解码文本文件的编码。decode_error
:字符串,默认为'strict'
,指定如何处理解码错误。random_state
:整数、RandomState实例或None
,默认为0,决定数据集随机打乱时的随机数生成。allowed_extensions
:字符串列表,默认为None
,指定要加载的文件的期望扩展名列表。返回值:
data
:字典类对象,包含以下属性:
data
:当load_content=True
时,包含原始文本数据的列表。target
:目标标签(整数索引)。target_names
:目标类别的名称列表。DESCR
:数据集的完整描述。filenames
:包含数据集的文件名的数组。示例代码:
from sklearn.datasets import load_files
container_path = "./"
data = load_files(container_path)