如何用python提取指定内容?

具体操作步骤:1.指定txt文本内容提取 2.文本相似度分析 1.需要提取大量年报(pdf/txt)文件里“1.公司主营业务、产品及经营模式”类目下的…
关注者
15
被浏览
36,106

5 个回答

这件事情既简单,又不简单。

说它简单,是因为这里面并没有涉及到太深入、太复杂的知识,都比较基础。

说它不简单,是因为这是一个系统化的问题,并不是像往常读一个表格、画一幅图这种单点的事情,对于没有太多实践经验的同学就比较有挑战。

想要解决这个问题,需要首先把这个事情拆解一些,其实就包括几个步骤:

  • 读取文件
  • 处理文本
  • 统计分析

具体来介绍一下。

首先是 读取文件 ,这一点是不言而喻的,想要统计不同文件的相似性,首先就要把 非结构化的文本转化成结构化的数据 。这就需要把涉及到的不同文件类型罗列一下,例如,PDF、Word、Excel等等,针对不同文件类型Python都有不同的工具包和调用方式,具体的下面会详细展开介绍。

其次是 处理文本 ,通过不同的工具包把各种各样的非结构化数据读到了内存里,接下来就需要对这个粗糙的数据进行更加细致的处理,这种目前比较成熟了,可以选择一款即可,例如,jieba、SnowNLP、PkuSeg、HanLP等等。这些工具包可以把文本内容进行分词处理,处理成更加规范可理解的数据,用起来很简单,一般情况下三五行代码就可以解决,本文不多赘述。

最后是 统计分析 ,相似性问题其实非常简单,例如常用的欧式距离就是衡量相似性的一个关键指标,用通俗语言描述就是计算两个向量之间的平方差,回到文本相似性这个问题上,可以有两种方式:

第一种 :通过前面步骤分词得到的词汇,统计高频出现的TopN,然后比对不同文本之间高频词是否具有相似性,相同的有多少,不同的有多少,这种比较简单。

第二种 :自然语言向量化,把处理后的文本内容进行向量化,这样就很方便数学运算了,可以把文本相似性问题转化成计算两个向量之间欧式距离的问题。

这一种方法网络上也有很多介绍,感兴趣的可以选择合适自己的。

下面对于第一步读取文件部分详细展开阐述一下。

读取PDF

Python中用于读取PDF的工具包很多,例如, pdfminer、PyPDF2 ,以PyPDF2为例,它能够对PDF文件进行 分割 合并 裁剪 转换页面

另外,它还可以对PDF文件添加自定义数据、水印、密码,也可以从PDF文件中检索出文本和元数据。

安装

使用pip直接安装:

$ pip install PyPDF2

提取PDF内容

使用非常简单,几行代码即可完成:

from PyPDF2 import PdfReader
reader = PdfReader("example.pdf")
page = reader.pages[0]
print(page.extract_text())

读取Word

这里需要用到docx工具包,直接上代码:

import docx
doc = docx.Document("zen_of_python.docx")
# 逐段读取
text = [p.text for p in doc.paragraphs]
print(text)
# 逐表读取
for table in doc.tables:
    for row in table




    
.rows:
        for cell in row.cells:
            print(cell.text)

读取Excel

读取Excel需要用到xlrd,看一下代码:

import xlrd
wb = xlrd.open_workbook('test.xlsx')
worksheet = wb.sheet_by_index(0)
# 根据行、列读取数据
print(worksheet.cell_value(0, 0))
# 读取整行数据
print(worksheet.row_values(0))

上面以PDF、Word、Excel这三种比较常用的文件介绍一下读取方式,其他的基本一样,通过调工具包几行代码即可实现,读取之后剩余的就是前面提到的剩余两步,文本处理、统计分析,前面也提供了方法和工具包,感兴趣的可以摸索一下。


推荐阅读



hello,大家好,我是Jackpop,重点大学本科毕业后保送到哈工大 计算数学 专业读研,有多年国内头部互联网、IT公司工作经验,先后从事过计算机视觉、 推荐系统 、后端、数据等相关工作。如果同学们在 升学考研、职业规划、高考志愿、简历优化、技术学习 等方面有困惑,欢迎大家前来咨询!