NLP速读人民日报

简介: 由于我工作中用NLP功能比较多,因此我试用的方向是通过NLP来梳理报纸中的内容,我首先分析了一下权威报刊的链接构成,

由于我工作中用NLP功能比较多,因此我试用的方向是通过NLP来梳理报纸中的内容,我首先分析了一下权威报刊的链接构成,比如:

http://paper.people.com.cn/rmrb/html/2021-06/01/nw.D110000renmrb_20210601_2-07.htm

image.gif

是由以下元素构成:

1.url前缀:http://paper.people.com.cn/rmrb/html/是固定的前缀:

2.月:/2021-06/

3.日:01/

4.content前缀:nw.D110000renmrb_

5.Content日期:20210601

6.Content序号:2

7.细分序号:-07

8.后缀:.htm

再分析一下返回的html文本中正文的关键字都带“enpcontent”,那么我们想读一段时间的报纸内容就完全可以枚举一段时间内的所有日期,然后通过url拼接的方式来获得所有报道正文的链接。具体代码如下:

#coding=utf-8
import datetime
import re
import http.client, urllib.parse
import http.client, urllib.parse
import random
USER_AGENTS = [
    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; AcooBrowser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",
    "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)",
    "Mozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.35; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",
    "Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)",
]
def get_demo(endfix):
    print(endfix)
    params = urllib.parse.urlencode({})
    headers = {'Referer': 'http://paper.people.com.cn',
               'User-Agent': random.choice(USER_AGENTS ),
               'Accept-Language': 'zh-CN,zh;q=0.9',
               }
    conn = http.client.HTTPConnection("paper.people.com.cn", timeout=10)
    conn.request("GET",endfix , params, headers)
    r1 = conn.getresponse()
    html = r1.read()
    data = html.decode('utf-8')
    result = re.findall("enpcontent" + '.*', data)
    if len(result)>1:
      print(result[1])
      return result[1]
    else:
        return  ""
def get_date_list(start,end):
    date_list= []
    date = datetime.datetime.strptime(start,'%Y-%m-%d')
    end = datetime.datetime.strptime(end,'%Y-%m-%d')
    while date <= end:
        date_list.append(date.strftime('%Y-%m-%d'))
        date = date + datetime.timedelta(1)
    return date_list
datelist=get_date_list("2021-06-01","2021-06-5")
for dateitem in datelist:
    datestr="".join(dateitem.split('-'))
    datesplit=dateitem.split('-')
    datePrefix=datesplit[0]+'-'+datesplit[1]+"/"+datesplit[2]
    for i in range(1,10):
        for j in range(1,20):
            content=get_demo("/rmrb/html/"+datePrefix+"/nw.D110000renmrb_"+datestr+'_'+str(i)+"-"+str(j).zfill(2)+".htm")

image.gif

五大关键词-数字货币、普惠金融、便捷、服务、金融科技

获得正文文本之后,就可以通过文本关键词提取功能来提取关键词,具体代码如下:

首先安装SDK

pip install azure-ai-textanalytics==5.1.0
image.gif

注:以下代码均需要填写自己的key和endpoint

key = "paste-your-key-here"
endpoint = "paste-your-endpoint-here"
from azure.ai.textanalytics import TextAnalyticsClient
from azure.core.credentials import AzureKeyCredential
# Authenticate the client using your key and endpoint
def authenticate_client():
    ta_credential = AzureKeyCredential(key)
    text_analytics_client = TextAnalyticsClient(
            endpoint=endpoint,
            credential=ta_credential)
    return text_analytics_client
client = authenticate_client()
def key_phrase_extraction_example(client):
    try:
        documents = ["我爱你中国"]
        response = client.extract_key_phrases(documents = documents)[0]
        if not response.is_error:
            print("\t关键词:")
            for phrase in response.key_phrases:
                print("\t\t", phrase)
        else:
            print(response.id, response.error)
    except Exception as err:
        print("Encountered exception. {}".format(err))
key_phrase_extraction_example(client)

image.gif

输出如下:

关键词:

 中国

由于笔者在银行工作因此选取有关银行方面的报道,将关键词提取出来做成词云如下:


image.gif

从3月至今的报道9805篇的报道来看,与“银行”直接相关的报道共489篇,占比约为5%,标题与“银行”直接相关的报道20篇,占比0.2%,从这些报道中来看,出现频率最高的关键词是:双循环、数字货币、普惠金融、便捷、服务、金融科技,和银行直接相关的五大关键词为数字货币、普惠金融、便捷、服务、金融科技。

从关键词的情况来看,今年与之前相比最大的变化就是 “普惠金融”、“绿色金融”、以及“高质量服务”等方面渐渐成为新的热点。

报道脉落-年初数字货币,年中绿色金融,全年贯穿普惠

还可以根据时间与关键词数量的对应关系,利用Python生成动态条形图如下,

image.png

image.gif

从中可以看到有关银行的总体发展趋势如下:

一、数字货币渐行渐近

5月26日的《数字人民币渐行渐近》是今年首次以银行服务为主角的报道。在5月的中国国际消费品博览会上多家商业银行推出数字人民币体验区,让参观者使用银行手机应用或数字人民币卡式钱包,正如标题所说,这也标志着数字人民币距离全面推广越来越近了。

6月16日的《雄安新区完成首笔“链上”数字人民币工资代发》,与7月18日的《数字人民币试点场景超一百三十二万个》正式宣告数字货币的应用场景已经基本发展成熟。而9月6日《数字人民币进一步助力普惠金融服务》更是与贯穿全年的普惠主题结合了起来。

二、“碳达峰”、“碳中和”目标使绿色金融渐成重点

从7月6日《绿色金融助力高质量发展》的报道开始,绿色金融逐渐登上银行业报道的C位。截至2020年末,中国本外币绿色贷款余额约12万亿元,存量规模居世界第一;绿色债券存量约8000亿元,居世界第二。绿色金融的快速发展,提升了金融业的适应性、竞争力和普惠性。为支持绿色低碳转型、推动经济高质量发展发挥了积极作用,也成为我国参与全球经济金融治理的重要领域和亮点之一。

9月7日的《深耕绿色金融发展沃土》报道,就把发展工行、农行、中行、建行的四大国有银行在绿色贷款方面发展的良好态势进行了全面的报道,通过上半年年报显示,四大国有银行绿色贷款余额突破万亿元,其中工行绿色贷款余额已突破2万亿元,这都是非常了不起的成就。

    • 全年贯穿的普惠金融主线

     普惠金融也是今年的一条主线,其中第一篇以银行业为主角的报道是6月28日的《微众银行发挥数字科技优势 践行普惠金融使命》,微众银行利用自身的科技优势,将信贷资源全面向小微企业倾斜,截至2020年末,小微企业管理贷款规模超过1200亿元,约为2020年初的3倍,高于各项贷款平均增速,为支持小微企业复工复产作出了贡献。

    哪家行银行获得的曝光度最高?

    通过将文本进行摘要后的分析,示例代码如下:

    key = "paste-your-key-here"
    endpoint = "paste-your-endpoint-here"
    from azure.ai.textanalytics import TextAnalyticsClient
    from azure.core.credentials import AzureKeyCredential
    # Authenticate the client using your key and endpoint
    def authenticate_client():
        ta_credential = AzureKeyCredential(key)
        text_analytics_client = TextAnalyticsClient(
                endpoint=endpoint,
                credential=ta_credential)
        return text_analytics_client
    client = authenticate_client()
    # Example method for summarizing text
    def sample_extractive_summarization(client):
        from azure.core.credentials import AzureKeyCredential
        from azure.ai.textanalytics import (
            TextAnalyticsClient,
            ExtractSummaryAction
        )
        document = [
            "The extractive summarization feature uses natural language processing techniques to locate key sentences in an unstructured text document. "
            "These sentences collectively convey the main idea of the document. This feature is provided as an API for developers. "
            "They can use it to build intelligent solutions based on the relevant information extracted to support various use cases. "
            "In the public preview, extractive summarization supports several languages. It is based on pretrained multilingual transformer models, part of our quest for holistic representations. "
            "It draws its strength from transfer learning across monolingual and harness the shared nature of languages to produce models of improved quality and efficiency. "
        ]
        poller = client.begin_analyze_actions(
            document,
            actions=[
                ExtractSummaryAction(MaxSentenceCount=4)
            ],
        )
        document_results = poller.result()
        for result in document_results:
            extract_summary_result = result[0]  # first document, first result
            if extract_summary_result.is_error:
                print("...Is an error with code '{}' and message '{}'".format(
                    extract_summary_result.code, extract_summary_result.message
                ))
            else:
                print("Summary extracted: \n{}".format(
                    " ".join([sentence.text for sentence in extract_summary_result.sentences]))
                )
    sample_extractive_summarization(client)

    image.gif

    从报道出现次数来看,工、农、中、建四大国有银行无疑是第一梯队,他们四家行出现的次数比第5名国开行的34次要多出一倍,而国开行、农发行与交行是第二梯队,他们在今年被报道的次数基本都在30次左右;邮储与招行则属于第三梯队被报道的次数介于10次与20次之间;其余各家银行被报道的次数均没有超过10次,具体统计表及统计饼状图如下:

    银行

    报道中出现次数

    中行/中国银行

    84

    建行/建设银行

    82

    农行/农业银行

    80

    工行/工商银行

    76

    国开行/国家开发银行

    34

    农发行/农业发展银行

    30

    交行/交通银行

    28

    邮储银行/邮政储蓄银行

    18

    招行/招商银行

    12

    光大银行

    8

    浦发银行

    8

    进出口银行

    6

    微众银行

    4

    网商银行

    2

    中信银行

    2

    浙商银行

    2

    北京银行

    2

    而在下面评价程度方面,则又有另一番有意思的景像。

    哪家行获得的评价最好?

    通过微软的AZURE提供的情感分析结果来看,示例代码如下:

    key = "paste-your-key-here"
    endpoint = "paste-your-endpoint-here"
    from azure.ai.textanalytics import TextAnalyticsClient
    from azure.core.credentials import AzureKeyCredential
    # Authenticate the client using your key and endpoint
    def authenticate_client():
        ta_credential = AzureKeyCredential(key)
        text_analytics_client = TextAnalyticsClient(
                endpoint=endpoint,
                credential=ta_credential)
        return text_analytics_client
    client = authenticate_client()
    # Example function for detecting sentiment in text
    def sentiment_analysis_example(client):
        documents = ["I had the best day of my life. I wish you were there with me."]
        response = client.analyze_sentiment(documents=documents)[0]
        print("Document Sentiment: {}".format(response.sentiment))
        print("Overall scores: positive={0:.2f}; neutral={1:.2f}; negative={2:.2f} \n".format(
            response.confidence_scores.positive,
            response.confidence_scores.neutral,
            response.confidence_scores.negative,
        ))
        for idx, sentence in enumerate(response.sentences):
            print("Sentence: {}".format(sentence.text))
            print("Sentence {} sentiment: {}".format(idx+1, sentence.sentiment))
            print("Sentence score:\nPositive={0:.2f}\nNeutral={1:.2f}\nNegative={2:.2f}\n".format(
                sentence.confidence_scores.positive,
                sentence.confidence_scores.neutral,
                sentence.confidence_scores.negative,
            ))
    sentiment_analysis_example(client)
    # Example method for detecting opinions in text
    def sentiment_analysis_with_opinion_mining_example(client):
        documents = [
            "The food and service were unacceptable, but the concierge were nice"
        ]
        result = client.analyze_sentiment(documents, show_opinion_mining=True)
        doc_result = [doc for doc in result if not doc.is_error]
        positive_reviews = [doc for doc in doc_result if doc.sentiment == "positive"]
        negative_reviews = [doc for doc in doc_result if doc.sentiment == "negative"]
        positive_mined_opinions = []
        mixed_mined_opinions = []
        negative_mined_opinions = []
        for document in doc_result:
            print("Document Sentiment: {}".format(document.sentiment))
            print("Overall scores: positive={0:.2f}; neutral={1:.2f}; negative={2:.2f} \n".format(
                document.confidence_scores.positive,
                document.confidence_scores.neutral,
                document.confidence_scores.negative,
            ))
            for sentence in document.sentences:
                print("Sentence: {}".format(sentence.text))
                print("Sentence sentiment: {}".format(sentence.sentiment))
                print("Sentence score:\nPositive={0:.2f}\nNeutral={1:.2f}\nNegative={2:.2f}\n".format(
                    sentence.confidence_scores.positive,
                    sentence.confidence_scores.neutral,
                    sentence.confidence_scores.negative,
                ))
                for mined_opinion in sentence.mined_opinions:
                    target = mined_opinion.target
                    print("......'{}' target '{}'".format(target.sentiment, target.text))
                    print("......Target score:\n......Positive={0:.2f}\n......Negative={1:.2f}\n".format(
                        target.confidence_scores.positive,
                        target.confidence_scores.negative,
                    ))
                    for assessment in mined_opinion.assessments:
                        print("......'{}' assessment '{}'".format(assessment.sentiment, assessment.text))
                        print("......Assessment score:\n......Positive={0:.2f}\n......Negative={1:.2f}\n".format(
                            assessment.confidence_scores.positive,
                            assessment.confidence_scores.negative,
                        ))
                print("\n")
            print("\n")
    sentiment_analysis_with_opinion_mining_example(client)

    image.gif

    银行业整体的形象非常正面。其中正面评价程度最高的几篇报道梳理如下:

    一、邮储银行为残障人士打造有温度的金融服务,评价最高的报道

    《邮储银行牢记初心使命 服务国计民生》是一篇针对邮储北京香山支行为残障人士提供定制化金融服务的报道,也是截止目前所有有关银行业报道中,情感分析结果正面性结果得分最高的,笔者认为这也很可能是《人民日报》上对某一家银行评价最高的年度报道了。

    每一位来到中国邮政储蓄银行北京香山支行的新员工,都要接受手语服务“六部曲”培训,以帮助残障群体无差别地享受基础金融服务,香山支行创新性地推出特色手语服务,用温暖服务让金融更有温度。这一服务,香山支行坚持了10年,这样的做法摘得年度最高评价应该没有悬念了。

    二、建设银行的适老化改造,迎得掌声最多

    《建设银行,适老服务交出温》报道了建行有关适老服务建设网点的情况,今年6月,建设银行在北京倾力打造安华支行营业部、长安支行营业部、齐园路支行、朝阳北路支行、菜市口南街支行、架松支行6家“适老服务示范网点”,并全部通过北京国家金融科技认证中心标准认证,成为全国首批“适老服务示范网点”。

    这篇报道获得的评价也很高,同时网友讨论的热度较高,评价也很积极,堪称是迎得掌声最多的报道。
    三、国开行助学贷款、邮储银行新农贷直通车、中国银行养老金融等报道也获得较高评价。

    《助学贷款,助力学子成长成才》以国家开发银行为例报道了目前我国大学生助学贷款的政策情况;《邮储银行湖北省分行:金融赋能润“三农” 全面助力乡村振兴》介绍了邮储银行“新农贷款直通车”的运行情况;《中国银行苏州分行  推动“养老+金融”深度融合》报道了中行苏州分行尊老卡项目的进展。这些报道在情感分析的结果中也都获得比较高的正面得分。

    相关文章
    |
    存储 算法 索引
    LZW(Lempel-Ziv-Welch)
    LZW(Lempel-Ziv-Welch)压缩算法是一种无损数据压缩算法,主要用于压缩文本文件和图像文件。它是由 Abraham Lempel、Jacob Ziv 和 Welch 共同发明的,基于哈夫曼编码和算术编码的思想,通过建立一个字典表对数据进行压缩。
    812 2
    |
    存储 文件存储 对象存储
    块存储、文件存储和对象存储特点对比
    块存储、文件存储和对象存储特点对比
    1939 2
    |
    7月前
    |
    人工智能 监控 算法
    AI 技能树怎么搭?90%的人第一步就走错了
    AI热潮下,别只学工具!真正的竞争力在于构建“AI能力树”:认知层(问题拆解、目标定义)、工程思维(风险评估、方案权衡)、工具协作(高效提问、结果验证)。工具是杠杆,能力才是支点。
    |
    10月前
    |
    供应链 JavaScript 安全
    B/S云门诊系统源码,java云诊所源码,基于Spring Boot、Vue.js构建
    云端SaaS架构云门诊系统,基于Spring Boot+Vue开发,支持医保结算,集成预约挂号、诊疗、收费、库存、会员管理等功能,适用于各类基层医疗机构,可打包为C/S桌面应用,支持外接设备免安装配置。
    379 10
    |
    存储 人工智能 Cloud Native
    科研+ AI :深势科技,全新科研范式引领者
    深势科技作为AI for Science的引领者,专注于微观粒子行为研究,推动材料科学和生命科学领域的创新。通过AI技术,深势科技加速了药物研发、纳米药物微流控等技术的发展,显著提升了计算性能和实验效率。与阿里云合作,利用其云原生计算和存储服务,深势科技实现了资源弹性调度和高效管理,大幅提升了研发效率,服务于超过50万科研用户,并计划建设AI for Science超级实验室,推动更多科技创新。
    886 0
    |
    网络协议 物联网 网络安全
    |
    机器学习/深度学习 编解码 人工智能
    rebuttal真的有用!这篇ICLR论文,所有审稿人都加了2分,直接跃升排名第9
    SANA是一项基于线性扩散变换器的高效高分辨率图像合成框架,采用深度压缩自编码器和线性DiT模型,大幅提高图像合成效率与质量。引入解码器专用文本编码器提升图像与文本对齐能力,结合Flow-DPM-Solver优化训练和采样步骤。研究成果发表于ICLR会议,审稿评分显著提升。SANA生成速度快、模型小,适用于资源有限设备,但在某些方面仍有改进空间。论文地址:https://arxiv.org/abs/2410.10629
    420 10
    |
    人工智能 搜索推荐 测试技术
    通义灵码 2.0 智能编码功能评测:Deepseek 加持下的 Python 开发体验
    通义灵码 2.0 智能编码功能评测:Deepseek 加持下的 Python 开发体验
    869 11
    |
    存储 编译器 C语言
    【C语言】16 位的值,通过几种不同的方式将其拆分为高 8 位和低 8 位
    在实际应用中,通常使用方法 1(位移和位掩码)是最常见的选择,因为它简单、直观,并且不依赖于特定的硬件或编译器特性。方法 3(联合体)适用于需要处理复杂数据结构或需要同时访问多个字段的情况。方法 4(内联函数或宏)适用于需要提高代码重用性和可读性的场景。方法 2(指针和强制类型转换)虽然有效,但不推荐,因为它可能会引入平台依赖性和对齐问题。
    986 2
    |
    机器学习/深度学习 编解码 负载均衡
    MoH:融合混合专家机制的高效多头注意力模型及其在视觉语言任务中的应用
    本文提出了一种名为混合头注意力(MoH)的新架构,旨在提高Transformer模型中注意力机制的效率。MoH通过动态注意力头路由机制,使每个token能够自适应选择合适的注意力头,从而在减少激活头数量的同时保持或提升模型性能。实验结果显示,MoH在图像分类、类条件图像生成和大语言模型等多个任务中均表现出色,尤其在减少计算资源消耗方面有显著优势。
    738 1

    热门文章

    最新文章