新闻资讯

    ——@编程派

    在本文中,我们将学习如何分析PDF文档,并且利用来进行实体抽取分析,看看本·拉登在这些信件中最常提到的10个实体是什么。

    01什么是?

    是IBM旗下的一家公司,具有深度学习的自然语言处理和图片识别技术,可利用人工智能分析理解网页、文档、电子邮件、微博等形式的内容。它还将同 一样的神经网络分析技术应用其中。

    目前共提供了12个文本分析功能:实体抽取( ),情感分析,关键字抓取,概念标识,关系提取,分类识别,作者提取怎么用文本文档做网页,语言识别,文本提取,微格式分析,订阅内容识别,数据连接等。

    接下来,我们开始进行准备工作。

    本文中的代码大部分来自,我对源代码进行更新。目前的脚本支持 3。

    2安装依赖包

    由于美国ODNI公开的本·拉登信件都是PDF格式的,因此我们首先必须要安装能够处理PDF文档的包。这里,我使用的是。我们通过pip包管理器进行安装:

    pip install pypdf2

    另外,你肯定不想一封一封地手动103封书信吧?!省时省力的办法就是写个脚本把这些文档都爬取下来。由于要访问网页和解析网页,我们选择使用两个常用的第三方库:和 4:

    pip install requests beautifulsoup4

    3获取免费 Key

    有一个免费的基础服务包,每天的事务处理上限为1000次。在本文中,我们将使用他们的实体抽取服务来执行文本分析。

    获取免费 Key非常简单,只需要填写一个表单即可,输入自己的邮箱地址。

    申请处理完成之后,你就可以在邮箱中看到发送给你的API Key了。

    4安装 SDK

    获得API Key之后,我们可以通过提供的 SDK和HTTP REST接口调用其提供的文本分析服务。在本文中,我们选择安装SDK的方式。

    PyPI上之前有包,但是后来移除了下载包,因此我们不能使用pip来安装,只能通过Git克隆 SDK的代码库或是直接下载代码库:

    git clone https://github.com/AlchemyAPI/alchemyapi_python.git

    接下来,我们要把申请到的API Key与SDK关联起来。打开终端,进入SDK文件夹,然后按下面的示例执行.py文件:

    cd alchemyapi_python
    python alchemyapi.py YOUR_API_KEY 
    # 将YOUR_API_KEY替换成你收到的Key

    为确保SDK正常安装,可以按照提示运行.py查看演示程序:

    python example.py

    如果最后出现了下图的文字,就证明SDK安装正确,API Key也可以使用。

    5下载文档

    然后就到了怎么自动将103份PDF文档下载到本地了。

    我们可以写一个简单的脚本来完成这项工作,但是我选择把它封装在ts这个函数里,因为我想把所有的代码都放在一个脚本里,这样大家就可以直接运行这个脚本,等待一段时间,就可以看到最后的结果了。

    这个函数写的比较简单,但是已经能够满足我们的需求了。

    def download_bld_documents():    """Download Bin Laden's Declassified documents from ODNI."""    import os
       import time
       import requests    
       from bs4 import BeautifulSoup
       
       # 创建一个名为“pdfs”的文件夹,用于保存所有下载的PDF文档。    try:        os.mkdir("pdfs")    except:        pass

       # 获取ODNI网站上有关本·拉登书架的网页,
       # 将其交给Beautiful Soup,以进行HTML解析。
       response = requests.get(        "http://www.dni.gov/index.php/resources/bin-laden-bookshelf?start=1")    if response.status_code == 200:        html = BeautifulSoup(response.content)    link_list = []
       # 从网页中第54个超链接开始,我们遍历所有的文档链接,
       # 仅保留那些我们所需要的链接:即含有“pdf”但不包含“Arabic”
       # 字样的链接。我们将满足要求的链接保存到列表`link_list`中。
       for i in html.findAll("a")[54:]:        if "pdf" in i['href'] and "Arabic" not in i.text:            link_list.append("http://www.odni.gov%s" % i['href'])
       # 接下来,我们遍历列表中所有的元素,
       # 从原链接中获取PDF的文件名,
       #然后从ODNI网站下载相应的文档。
       for i in link_list:        response = requests.get(i)        file_name = i.split("/")[::-1][0]        fd = open("pdfs/%s" % file_name, "wb")        fd.write(response.content)        fd.close()        time.sleep(1)

    由于文件数量比较多,因此在最终执行脚本时怎么用文本文档做网页,耗费在文件下载的时间可能会比较长。如果你从ODNI网站下载的速度非常慢,那么可以前往我的百度网盘下载,但是在最终执行时要对脚本做修改。只需要执行下文中的函数即可。

网站首页   |    关于我们   |    公司新闻   |    产品方案   |    用户案例   |    售后服务   |    合作伙伴   |    人才招聘   |   

地址:北京市海淀区    电话:010-     邮箱:@126.com

备案号:冀ICP备2024067069号-3 北京科技有限公司版权所有