美文网首页Machine Learning & Recommendation & NLP & DL
自然语言处理N天-Day0402文本可视化技巧

自然语言处理N天-Day0402文本可视化技巧

作者: 我的昵称违规了 | 来源:发表于2019-02-09 15:04 被阅读2次
    新建 Microsoft PowerPoint 演示文稿 (2).jpg

    说明:本文依据《中文自然语言处理入门实战》完成。目前网上有不少转载的课程,我是从GitChat上购买。

    第四课 文本可视化技巧

    关系图

    关系图法,是指用连线图来表示事物相互关系的一种方法。最常见的关系图是数据库里的 E-R 图,表示实体、关系、属性三者之间的关系。在文本可视化里面,关系图也经常被用来表示有相互关系、原因与结果和目的与手段等复杂关系,下面我们来看看如何用 Python 实现关系图制作。
    在这里使用了NetworkX

    classes = df['class'].values.tolist()
    classrooms = df['classroom'].values.tolist()
    nodes = list(set(classes + classrooms))
    weights = [(df.loc[index, 'class'], df.loc[index, 'classroom']) for index in df.index]
    weights = list(set(weights))
    # 设置matplotlib正常显示中文
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 用黑体显示中文
    plt.rcParams['axes.unicode_minus'] = False
    colors = ['red', 'green', 'blue', 'yellow']
    # 有向图
    DG = nx.DiGraph()
    # 一次性添加多节点,输入的格式为列表
    DG.add_nodes_from(nodes)
    # 添加边,数据格式为列表
    DG.add_edges_from(weights)
    # 作图,设置节点名显示,节点大小,节点颜色
    nx.draw(DG, with_labels=True, node_size=1000, node_color=colors)
    plt.show()
    

    热力图

    地理热力图,是以特殊高亮的形式显示用户的地理位置,借助热力图,可以直观地观察到用户的总体情况和偏好。

    其实就是将地理名词转为经纬度再与数据大小结合生成热力图,Citespace中调用的是Google接口,教程中调用的是百度接口。

    #经纬度转换
    def getlnglat(address):
        url = 'http://api.map.baidu.com/geocoder/v2/'
        output = 'json'
        ak = 'sqGDDvCDEZPSz24bt4b0BpKLnMk1dv6d'
        add = quote(address) #由于本文城市变量为中文,为防止乱码,先用quote进行编码
        uri = url + '?' + 'address=' + add  + '&output=' + output + '&ak=' + ak
        req = urlopen(uri)
        res = req.read().decode() #将其他编码的字符串解码成unicode
        temp = json.loads(res)  #对json数据进行解析
        return temp
    

    使用Folium库进行热力图绘制地图

    lat = np.array(cities["lat"][0:num])  # 获取维度之维度值
    lon = np.array(cities["lng"][0:num])  # 获取经度值
    pop = np.array(cities["count"][0:num], dtype=float)  # 获取人口数,转化为numpy浮点型
    data1 = [[lat[i], lon[i], pop[i]] for i in range(num)]  # 将数据制作成[lats,lons,weights]的形式
    map_osm = folium.Map(location=[35, 110], zoom_start=5)  # 绘制Map,开始缩放程度是5倍
    HeatMap(data1).add_to(map_osm)  # 将热力图添加到前面建立的map里
    file_path = dir + "heatmap.html"
    map_osm.save(file_path)
    

    有兴趣的可以看看这个链接:https://zhuanlan.zhihu.com/geoman-blog

    相关文章

      网友评论

        本文标题:自然语言处理N天-Day0402文本可视化技巧

        本文链接:https://www.haomeiwen.com/subject/knzasqtx.html