最近在做文本分类,拿到的数据很乱。要做下一步,不管是分词还是tfidf都要先做数据的分类。
3万篇文章,在一个excel中,每行有每篇文章的id、内容(title_content)、分类(relative breeds),(共三列)。
按分类创建子目录,文章按分类放入子目录中,每篇文章写入一个txt文件,txt文件标题为文章id
excel的读入使用了pandas,pandas的逐行读取功能很好用。
网上有些教程使用了xlrd,感觉有点复杂,而且xlrd好像有文件大小的限制。相比较而言pandas没有大小限制,个人感觉速度也比较快。
路径的操作使用了python标准库os。
同样的方法,也可以读取txt写入excel,读取csv写入excel。只需要更改pandas的读取文件函数就好了。
pandas真好用啊
"""
@version:python3.6
@author:chenyaooo
@concact:[email protected]
"""
import pandas as pd
import os
def creatcatesdir(data, target):
"""
创建类别目录
"""
# 获取去重后的分类列表
cates = list(data['relative breeds'].unique())
print(cates)
for cate in cates:
# 拼接子目录路径
final_path = target + cate
try:
os.mkdir(final_path) # 创建目录
except Exception as e:
print(str(e))
def excel2txt(data, target):
# 创建类别目录
creatcatesdir(data, target)
# 逐条获取excel中的内容
for index, row in data.iterrows():
# 文章内容
content = row['title_content']
# 文件名 -> 文章id
filename = row['id']
# 子目录 -> 类别
cate = row['relative breeds']
# 拼接文件路径
txt_path = target + cate + os.sep
# 将文章内容写入txt
with open(txt_path + str(filename) + ".txt", 'wt') as f:
f.write(content)
def main():
# 使用pandas读取excel
data = pd.read_excel('../data/processed/article_breeds20k_tc.xls')
# 主目录 需要提前创建好
targetfile = "../article/"
excel2txt(data, targetfile)
if __name__ == '__main__':
main()
以上所有的编码都使用的python默认编码utf-8
如果还有更好的方法,请留言指教。
做数据整理都是为了接下来的文本分类,推荐一篇非常好的文本分类教程
python 中文文本分类