叙利亚 Syria

Muxxs
Muxxs 2018年04月14日
  • 在其它设备中阅读本文章

基于 BosonNLP 的情感分析接口

爬取知乎的某个问题

# 由于知乎使用了 ajax 加载,不能直接用 request(可能是我技术不够)

利用 selenium 模拟用户点击展开按钮,模拟滑轮到最下面,就能加载出来

最后画个饼图,棒棒的,结尾有源码

 

根据叙利亚的问题画出来的图(情绪态度)

# 其实这个情感分析对于大段文字还是不大准确

世界各国之间的矛盾,主要体现在中东、朝鲜、台湾、乌克兰这几个点上

而这一次,不是冲突,而是战争

美国开战的理由我们似曾相识,2003 年,美国以同样的理由发动伊拉克战争

十五年过去了,美国政府仍然不能交出任何能够证明其有化学武器的证据

现在,轮到了叙利亚

 

在这片 185180 平方公里的土地上,上演着新两极的斗争

无论如何,叙利亚都不会是一个国家对抗美国

 

首先,俄罗斯在叙利亚驻有空天部队,也有部分陆军。最新的 T50 也入驻叙利亚,最新式的装备在此,已经证明俄罗斯的决心,再者,俄罗斯已经接连失去了阿富汗,伊拉克等地缘盟友,不论是对于俄罗斯这个国家,还是执政者普京,都是至关重要的一战

 

其次,伊朗将成为其第二大盟友

http://news.cctv.com/2018/04/13/ARTIzGOilWtDVgzbLzc57oWh180413.shtml

据央视新闻报道,巴沙尔会见伊朗领导人,其谈判如何不得而知,但是唇亡齿寒,美国正在逐个击破阿拉伯国家,伊朗虽然不属于阿拉伯国家,但是作为中东中美国最大的眼中钉,在失去盟友后,将很快被以类似的理由发动战争并更换政府,伊朗与美国素来不和,在伊核谈判后,美国于 2017 年又发布旅游禁令,其意图较为明显,伊朗领导人若有勇气,且信任中俄,必然会参与到 战争当中。

 

中国,我们的国家。几十年没有参加过战争,很多人质疑中国军队的战斗力,我们谁也说不好。中国近年来的军改成效卓著,但没有实战,对于军队战斗力的保持来说是不利的,很多人都希望中国跟这个开战,和那个开战,你们真的了解中国的情况吗?

先说大国打架往往比的东西

中国共下水两艘航母,其中一艘还未入役

美国在亚太地区就有三个航母战斗群,有八个基地群,实力悬殊

中国拥有的核弹头连美俄的零头都没有

# 但是这个没啥用,谁用了这个,谁就是人类,这个种族的罪人

反导系统 --- 不相上下

再说经济,目前世界仍以布雷顿森林体系为基础,中国一旦开战,经济必然收到重创,有人说,中国是世界上第二大经济体,怕啥?

美国 GDP:$193621.3 亿

中国 GDP:$122427.76 亿

中美相差 7 万亿美元,差出来了一个德国(第三)+ 法国(第四)的 GDP

这就是世界上第一大经济体的恐怖

那么,又有人要说了,美国也需要中国商品

没错,他们需要,非常需要,他们以贸易战作为开端,等同于打了疫苗,等到真的打起来了,你懂的。。。你有的我有,你没有的我还有。美国作为世界市场最大的中心,战争对于百姓的影响也会有,物价会迅速上涨,但是他们仍然可以买到来自世界各地的产品,能拥有目前最先进的产品。

中国的实力已经得到了实质性的提升,我们可以自给自足,我们能够自主生产大量诸如歼 -20 这样的先进武器,但是我们高科技类型的民用产品仍是短板。我们是有天河 2 号,但是我们并不能生产出足够好的消费级产品。目前我们熟知的电脑 CPU 生产商有因特尔,AMD,手机处理器有联发科,高通骁龙,这些国外巨头才是拥有着高科技、高工业水准的民用 CPU 生产商,但是我们也不能否认,中国一旦调整发展方向,再加以制度优势,以及对于外国专利保护的无视,中国很快将拥有自己的 CPU 生产线。

中国凭借改革开放政策,发展成如今的世界第二大经济体,如今正是高速发展的黄金期,这也是美国一次又一次挑衅中国,试探中国底线的原因。按照美国霸权主义的思想,世界市场如同一块蛋糕,蛋糕就这么多,若有某个国家快速发展,就让美国利益受损。而中国则提倡人类命运共同体,提倡共同发展。

    国际上的问题林林总总,归结起来就是要解决好治理体系和治理能力的问题。我们需要不断推进和完善全球治理,应对好这一挑战。中国正在统筹推进经济、政治、文化、社会、生态文明建设“五位一体”总体布局,这五方面也是构建人类命运共同体的主要内容。

——2018 年 4 月 8 日,会见联合国秘书长古特雷斯

人们总说,没有绝对的正义。但是我真的想说,中国的态度对于人类来说是正确的。

 

中美敢打不敢打我们谁也说不好,谁也不是最了解中美情况的人,谁也没有决定其走势的权利。

补充以下两点:

1、关于我对国外国内舆论的认识

我的确通过某些手段了解了一些国外 Twitter、Facebook 上的舆论情况,有些人说我被国外人蛊惑了,打仗之前自己先怂了。

但是国外的社交网络并不像你们想象的那样,充满了自由和温暖,反之,在关键话题上充满了政治暴力。以中国人对国外最恶意的态度,也不过是开开玩笑,吐槽吐槽罢了。Twitter 上却针对他国领袖进行人身攻击、谩骂、侮辱,那些语言令人作呕。

我只是想更全面的了解中国,了解世界。

 

2、关于战争

1941 年 12 月 7 日,日本联合舰队偷袭珍珠港

在今天来看,我们都认为这个决定过于愚昧。但是在当时,有这样想法的日本人都被认为是懦夫。但是真正的懦夫是那些为了逞一时之快,而无视其强大工业能力、金融基础等能力的人,他们死不足惜,但是身后的家人,谁来保护?谁都能说出“打日本、打美国”这样的话,但是当你走上战场,当你爱的人走向战场,当你面对残肢断臂,饱和炮火的时候,你就会后悔,会崩溃,会痛恨战争。

推荐几部影视作品:《珍珠港》《太平洋战争》《敦刻尔克》《兄弟连》战争中,你身边的任何一个人以及你自己都可能在下一秒倒下

战争永远应该是其他方法都无效后,最后的解决方式

 

 

 

源码:

GitHub: https://github.com/Muxxs/zhihu_answer-s-feel




#coding=utf-8

from selenium import webdriver
import time,re

import urllib

from bs4 import BeautifulSoup

import html.parser
from bosonnlp import BosonNLP
def main():
    driver = webdriver.Chrome('/Users/wangjiao/Desktop/video/video_web/chromedriver')  # Optional argument, if not specified will search path.
    #driver = webdriver.Chrome()  # 打开浏览器
    driver.get("https://www.zhihu.com/question/272263239") # 打开想要爬取的知乎页面

    # 模拟用户操作
    def execute_times(times):

        for i in range(0,times):
            driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
            time.sleep(5)
            try:
                driver.find_element_by_css_selector('button.QuestionMainAction').click()
                print("page" + str(i))
                time.sleep(2)

            except:
                pass
    feeling=""
    def remove_tag(content):
        f=content.split("<")
        if f[-1].replace(";","").replace(" ","")=="":
            return "",0
        if f[0].find(">")==-1:
            all=f[0]
        all=""
        for x in f:
            try:
                content=x.split(">")[1]
                all=all+content
            except:pass

        from bosonnlp import BosonNLP
        # 注意:在测试时请更换为您的API Token
        nlp = BosonNLP('API Token')
        result = nlp.sentiment(all)
        print(result)
        return all+"------积极度:"+str(result[0][0]),result[0][0]

    def draw(mem):

        low=0
        mid=0
        high=0
        very_high=0
        for i in mem:
            if i<=0.4:
                low=low+1
            elif i<=0.65:
                mid=mid+1
            elif i<=0.9:
                high=high+1
            else:
                very_high=very_high+1

        import numpy as np
        import matplotlib.pyplot as plt

        labels = 'low', 'mid', 'high', 'very_high'
        fracs = [low, mid, high, very_high]
        explode = [0.1, 0.1, 0.1, 0.1]  # 0.1 凸出这部分,
        plt.axes(aspect=1)  # set this , Figure is round, otherwise it is an ellipse
        # autopct ,show percet
        plt.pie(x=fracs, labels=labels, explode=explode, autopct='%3.1f %%',
                shadow=True, labeldistance=1.1, startangle=90, pctdistance=0.6

                )
        '''
        labeldistance,文本的位置离远点有多远,1.1指1.1倍半径的位置
        autopct,圆里面的文本格式,%3.1f%%表示小数有三位,整数有一位的浮点数
        shadow,饼是否有阴影
        startangle,起始角度,0,表示从0开始逆时针转,为第一块。一般选择从90度开始比较好看
        pctdistance,百分比的text离圆心的距离
        patches, l_texts, p_texts,为了得到饼图的返回值,p_texts饼图内部文本的,l_texts饼图外label的文本
        '''

        plt.show()

    from functools import reduce

    def str2float(s):
        return reduce(lambda x, y: x + int2dec(y), map(str2int, s.split('.')))

    def char2num(s):
        return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[s]

    def str2int(s):
        return reduce(lambda x, y: x * 10 + y, map(char2num, s))

    def intLen(i):
        return len('%d' % i)

    def int2dec(i):
        return i / (10 ** intLen(i))









    execute_times(15)

    result_raw = str(driver.page_source)  # 这是原网页 HTML 信息
    res=result_raw.split('<span class="RichText CopyrightRichText-richText" itemprop="text">')
    num=0
    for i in res:
        i=i.split("<!-- react-empty")[0].replace('&gt;',">").replace("&lt","<").replace("&amp;gt",">").replace("&amp;lt","<")
        if num is not 0:
            content=remove_tag(i)[0]
            feeling = feeling + "|" +str( remove_tag(i)[1])
            print(str(num)+":"+content+"\n")
        num=num+1
    all_feel = []
    for i in feeling.split("|"):
        if not i=="0":
            if not i=="":
                all_feel.append(round(str2float(i), 4))
    draw(all_feel)
if __name__ == '__main__':
    main()

 

    Muxxs
    Muxxs  2018-04-14, 22:14

    给点建议呗?