贝叶斯算法对PDF文档归类

本文介绍了如何使用Python的机器学习库,尤其是朴素贝叶斯算法,来处理PDF文档的文本内容,进行自动分类。通过PDFminer提取PDF文字,jieba进行分词,再利用sklearn.naive_bayes训练模型。脚本中包含了异常处理以应对不规范的PDF格式。最终,模型在测试集上取得了良好的准确率。
摘要由CSDN通过智能技术生成

前段时间看到有个群在招文档分类志愿者,主要工作是把各个渠道收集到的分析报告(PDF格式)进行分类整理,就想起来机器学习中有个朴素贝叶斯算法正好是处理这种语言文字分类的利器,于是决定写一个分类的脚本来玩玩儿。

整个处理思路大致如下:

1、获取PDF文档中文字内容另存在TXT文件(pdfminer)

2、对TXT文件分词并获取特征向量(jieba)

3、划分测试集与训练集并训练模型(sklearn.naive_bayes)

4、使用模型进行预测

需要注意的是,在获取PDF文档中信息时发现部分文档格式不是很规范(比如图片形式或者带有密码),这种情况下脚步会报错终止的,为了让脚本顺利执行到底,中间加入了异常忽略处理。

脚本如下:

import importlib

import sys

from pdfminer.pdfparser import  PDFParser,PDFDocument

from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter

from pdfminer.converter import PDFPageAggregator

from pdfminer.layout import LTTextBoxHorizontal,LAParams

from pdfminer.pdfinterp import PDFTextExtractionNotAllowed

import shutil

import os

import jieba

import numpy as np

from sklearn.naive_bayes import MultinomialNB

import pandas as pd

import matplotlib.pyplot as plt

%matplotlib inline

def parse(path):

    '''解析PDF文本,并保存到TXT文件中'''

    path_2=path.strip()

    with open(path_2,'rb') as fp:

    #用文件对象创建一个PDF文档分析器

        parser = PDFParser(fp)

        #创建一个PDF文档

        doc = PDFDocument()

        #连接分析器,与文档对象

        parser.set_document(doc)

        doc.set_parser(parser)

    #提供初始化密码,如果没有密码,就创建一个空的字符串

    try:

        doc.initialize()

    except Exception as e:

        print("Unexpection error:%s" % e)

    #创建PDF,资源管理器,来共享资源

    rsrcmgr = PDFResourceManager()

    #创建一个PDF设备对象

    laparams = LAParams()

    device = PDFPageAggregator(rsrcmgr,laparams=laparams)

    #创建一个PDF解释其对象

    interpreter = PDFPageInterpreter(rsrcmgr,device)

    #循环遍历列表,每次处理一个page内容

    # doc.get_pages() 获取page列表

    for page in doc.get_pages():

        interpreter.process_page(page)

        #接受该页面的LTPage对象

        layout = device.get_result()

        # 这里layout是一个LTPage对象 里面存放着 这个page解析出的各种对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值