使用python实现微博评论分词与关键词提取(从MySQL数据库中读取数据)

news2025/1/18 8:56:25

一、实验环境

(1)Windows 操作系统;
(2)PyCharm 2019.1。
(3)数据库用户名为 root,密码为 123456.
  (4)  学校机房电脑,带有mysql

二、获取数据库信息

(1)在电脑的搜索框中搜索mysql,打开MySQL 5.7Command Client(推荐)

如果没有MySQL 5.7Command Client,可以使用MySQL Shell(需要输入一些命令后使用,不推荐)

操作步骤:输入\connect root@localhost 连接mysql。 root是用户名,@后面接数据库ip地址,localhost等于127.0.0.1,为本机ip。回车后输入密码  123456

连接成功后输入"\sql" 进入sql命令模式,之后就能正常使用所有mysql 语法了。

\connect root@localhost:3306

(2)接下来继续介绍MySQL 5.7Command Client的使用方法。

第一次进入MySQL 5.7Command Client会提示输入密码Enter password,输入123456,即可进入数据库。

(3)然后就可以进行一系列操作,例如显示数据库MySQL命令。

show databases;

 

这些都是电脑中已有的数据库。

(4)创建数据库就是在数据库系统中划分一块空间存储数据,我们创建一个叫db1的新数据库,MySQL命令为:

create database db1;

可以看到新的数据库已加入到数据库列表中。

如果你不想要这个数据库,可以使用MySQL命令删除数据库db1。

drop database db1;

(5)进入某个数据库(例如db1,这是已经创建好的数据库)

use db1;

查看该数据库下的所有tables.

show tables;

 因为还没有添加数据,因此是空的。第三节介绍如何建表并写入数据

更多数据库操作方法可从以下链接中找到:http://t.csdn.cn/mL0aC

三、用python在MySQL中写入数据和添加数据

(1)打开pycharm,新建一个项目

(2)在该项目下新建一个python文件,命名为123.py:

(3)在该文件下写入代码,pymysql 安装包在终端处用命令 pip install pymysql  导入 , 运行后即可向数据库db1中插入数据

具体代码如下:

import pymysql
conn = pymysql.Connect(host = '127.0.0.1',
                       port = 3306,
                       user = 'root',
                       passwd = '123456',
                       db = 'db1',
                       charset='utf8')
cursor = conn.cursor()
#创建表   插入数据
sql = """CREATE TABLE ID1(
                 序号  int(20),
                 内容  CHAR(20),
                 字数  int(20))"""
cursor.execute(sql)
cursor.executemany(
    "insert into ID1 values(%s,%s,%s)",
    [
        (1,'越向往光明',5),
        (2,'越要默默地扎根于黑暗',10),
        (3,'不管活到什么岁数',8),
        (4, '总有太多的思索', 7),
        (5, '当你犹豫要不要去做一件事的时候', 15),
        (6, '其实你的内心已经有了选择', 12)
        ]
    )

sql = """CREATE TABLE ID2(
                 序号  int(20),
                 内容  CHAR(20),
                 字数  int(20))"""
cursor.execute(sql)
cursor.executemany(
    "insert into ID2 values(%s,%s,%s)",
    [
        (1, '一个幸运的前提', 7),
        (2, '其实是他有能力改变自己', 11),
        (3, '愿我们终将成为我们想要成为的人', 15),
        (4,'只要能嗅到彼岸的花香',10),
        (5,'当你专注自己',6),
        (6,'外界的机会才会来找你',10)
        ]
    )

sql = """CREATE TABLE ID3(
                 序号  int(20),
                 内容  CHAR(20),
                 字数  int(20))"""
cursor.execute(sql)
cursor.executemany(
    "insert into ID3 values(%s,%s,%s)",
    [
        (1, '每个人都有自己的坚持', 10),
        (2, '每个人都有一个觉醒期', 10),
        (3, '但觉醒期的早晚决定个人命运', 13),
        (4, '死亡不是失去了生命', 9),
        (5, '而是走出了时间', 7),
        (6, '一个人所需要的最重要的品质', 13)
        ]
    )

sql = """CREATE TABLE ID4(
                 序号  int(20),
                 内容  CHAR(20),
                 字数  int(20))"""
cursor.execute(sql)
cursor.executemany(
    "insert into ID4 values(%s,%s,%s)",
    [
        (1,'越向往光明',5),
        (2,'越要默默地扎根于黑暗',10),
        (3,'不管活到什么岁数',8),
        (4, '总有太多的思索', 7),
        (5, '当你犹豫要不要去做一件事的时候', 15),
        (6, '其实你的内心已经有了选择', 12)
        ]
    )

sql = """CREATE TABLE ID5(
                 序号  int(20),
                 内容  CHAR(20),
                 字数  int(20))"""
cursor.execute(sql)
cursor.executemany(
    "insert into ID5 values(%s,%s,%s)",
    [
        (1,'越向往光明就回归结果',10),
        (2,'越要默默地扎根于黑暗东方闪电',14),
        (3,'不管活到什么岁数都不问我',12),
        (4, '总有太多的思索都发给对方', 12),
        (5, '当你犹豫要不要去做一件事的时候就回归结果', 20),
        (6, '其实你的内心已经有了选择还挺大方', 16)
        ]
    )

conn.commit()
conn.close()

(4)向数据库db1中添加数据后的表如下所示:

select * from id1;

 

更多写入数据方法可从以下链接中找到:http://t.csdn.cn/3VJEihttp://t.csdn.cn/mL0aC

四、用python实现语句分词和关键词提取

(1)在同一项目下新建一个python文件,命名为cut_words.py

(2)在该文件下写入代码,jieba 安装包可在终端处用命令  pip install pymysql  导入 ,如果速度很慢,可以多试几次,或者用镜像下载。

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple jieba

具体代码如下,其中可以加载自定义词库和停止词,本代码已经注释掉,如果有,可以添加:

import pymysql
import jieba.analyse
# 连接数据库
conn = pymysql.connect(
    host="localhost",
    user="root",
    password="123456",
    database="db1",
    charset="utf8mb4"
)
cursor = conn.cursor()

# jieba 分词加载自定义词库
# jieba.load_userdict("SogouLabDic.txt")
# jieba.load_userdict("dict_baidu_utf8.txt")
# jieba.load_userdict("dict_pangu.txt")
# jieba.load_userdict("dict_sougou_utf8.txt")
# jieba.load_userdict("dict_tencent_utf8.txt")
# jieba.load_userdict("my_dict.txt")

# 载入停止词
# stopwords = {}.fromkeys(
#      [line.rstrip() for line in open('Stopword.txt')])

# 从数据库中分别读取 ID1-ID9 的评论信息
for index_news in range(1, 6):
    # 读取评论数量信息
    cursor.execute(
          f"select 序号 from ID{index_news} where 序号=(select max(序号) from ID{index_news})")
    index = cursor.fetchone()[0]
    # 读取每条评论
    for n in range(1, index):
        cursor.execute(
            f"select  内容  from ID{index_news} where 序号={n}")
        result_middle = cursor.fetchone()[0]
        # 分词并过滤停止词
        result = []
        seg = jieba.cut(result_middle)
        for i in seg:
            #if i not in stopwords:
                result.append(i)
        # 将分好词的评论写入文件data_full.dat
        with open("data_full.dat", "a+", encoding='utf-8') as fo:
            fo.write(' '.join(result) + '\n')
        # 提取关键词并写入文件data_keywords.dat
        keywords = jieba.analyse.extract_tags(
            result_middle, topK=30, withWeight=False,
            allowPOS=('ns', 'nr', 'nt', 'nz', 'nl', 'n', 'vn', 'vd', 'vg', 'v', 'vf', 'a', 'an', 'i'))
        with open("data_keywords.dat", "a+", encoding='utf-8') as fo:
            fo.write(' '.join(keywords) + '\n')
# 关闭连接
cursor.close()
conn.close()

(3)运行代码,结果生成两个文件data_full.dat、data_keywords.dat

(4)两个文件data_full.dat、data_keywords.dat 的具体内容如下,分别是分词结果和关键词提取结果,每个文件中有25行数据,分别对应五个表中的五个id。

 

py文件和dat文件可从以下连接中找到:

https://download.csdn.net/download/qq_40379132/87789449

 最后,如果电脑中没有数据库,我们需要下载,当然,学校机房的电脑不存在这种情况。

1、MySql安装详细教程若电脑未安装MySql

下载安装包:下载网址:MySQL :: MySQL Community Downloads

进入后选择MySQL community Server,直接下载第一个

解压安装包,编写MySQL配置文件,在解压目录下新建my.ini文件,将下面文本拷贝进my.ini文件中,注意更改路径。

[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录   ----------是你的文件路径-------------
basedir=D:\LenovoQMDownload\mysql-8.0.33-winx64\mysql-8.0.33-winx64
# 设置mysql数据库的数据的存放目录  ---------是你的文件路径data文件夹自行创建
#datadir=D:\LenovoQMDownload\mysql-8.0.33-winx64\mysql-8.0.33-winx64
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。
max_connect_errors=10
# 服务端使用的字符集默认为utf8mb4
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
#mysql_native_password
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8mb4

初始化MySQL数据库,以管理员身份打开命令提示符,切换到bin目录下

在MySQL目录下的bin目录下执行命令:mysqld --initialize --console

记下随机密码,安装mysql服务并启动:mysqld --install mysql

输入命令   mysql -uroot -p       输入密码:输入随机密码

修改密码:ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

配置环境变量:

依次打开此电脑->属性->高级系统设置->环境变量

在系统变量中新建

变量名:MYSQL_HOME

变量值:MySQL的目录

2、进入数据库:mysql -u root -p   输入密码123456

接下来的操作和之前一样。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/532683.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux从入门到精通】进程的基本概念

我们通过对上篇文章冯诺依曼体系结构对硬件进行讲解后, 本篇文章会对进程进行深入讲解。同时会讲解PCB(进程控制块)。希望本篇文章内容会对你有所帮助。 文章目录 一、再次理解操作系统 1、1 操作系统的作用 1、2 操作系统的管理 二、进程基本…

【Linux】12. 模拟实现shell

回顾 在之前的学习过程中,我们掌握了进程的相关概念,冯诺依曼体系结构,进程地址空间概念,进程状态,进程控制,进程退出,进程替换…等等一系列的基础知识,这些基础知识让我们清楚的知…

Qt6之字符串类内存分配新变化——16的次方增加

qt提供了比标准c string更强大,更丰富,更实用的字符串类QString,它的主要功能22个已经在之前逐一分析过,感兴趣的可前往以下链接查看,本文主要重点分析下qt在字符串类上面做的优化,主要是两个方面&#xff…

当产品进化遇见亿元福利,华帝携手人民日报为消费复苏添了一把火

这个五一黄金周,消费复苏的热火彻底被点燃。统计数据显示,2023年“五一”假期累计超过2.74亿人次出游,消费市场恢复到2019年同期水平。久违的“人间烟火气”再度回归。 除了旅游市场的火爆,同样助燃消费市场的还有全民“厨房焕新…

使用Vue+Python基于卷积神经网络前后端分离实现蔬菜种类预测系统

使用VuePython基于卷积神经网络前后端分离实现蔬菜种类预测系统 一、实现效果 1、种类预测界面 2、数据处理分析界面 3、网络模型界面 4、结果分析界面 二、需求分析 用户通过上传待预测图片到系统,系统预测出该图片对应的蔬菜种类,并且提示用户预测信…

基于Web的智慧储能电站3D可视化管理平台

电能作为现代社会的运转和发展的基础,是民生最基本的保障,其稳定性对国家经济发展至关重要。 建设背景 电力系统是一个稳态平衡系统,发电站的总发电功率需要等于用户端的总发电功率。如果两者不一致,就会导致整个电力系统的不稳…

[PyTorch][chapter 34][池化层与采样]

前言: 这里主要讲解一下卷积神经网络中的池化层与采样 目录 DownSampleMax poolingavg poolingupsampleReLu 1: DownSample 下采样,间隔一定行或者列进行采样,达到降维效果 早期LeNet-5 就采样该采样方式。 LeNet-5 2 Max pooling 最大值采样…

【28岁了,没有职业规划,没有目标,朋友推荐学云计算技术,能成吗?】

一般来说,当然可以的。云计算是一个不断发展的行业,不考虑年龄的因素,任何人都可以学习和掌握云计算的技能。28岁的年龄入行云计算是可行的,年龄方面还是符合企业的要求,而且云计算领域的发展趋势也显示出越来越多的企…

RIDGID里奇金属管线检测仪故障定位仪维修SR-20KIT

里奇RIDGID管线定位仪/检测仪/探测仪维修SR-20 SR-24 SR-60 美国里奇SeekTech SR-20管线定位仪对于初次使用定位仪的用户或经验丰富的用户,都同样可以轻易上手使用SR-20。SR-20提供许多设置和参数,使得大多数复杂的定位工作变得很容易。此外&#xff0c…

国内ChatGPT使用教程

猿说AI助手系统基于中国开源项目进行开发,由神诺网络科技工作室提供技术支持,后面我们会跟随官方持续更新。对话默认运行的是3.5-turbo模型,绘画采用Midjourney接口,待更新百度文心、通义千问、微信WeLM等。本系统仅用于技术研究&…

【k8s】【ELK】基于节点DaemonSet运行日志Agent实践【待写】

1.日志收集场景分析与说明 部署架构说明 对于那些将日志输出到&#xff0c;stdout与stderr的Pod&#xff0c; 可以直接使用DaemonSet控制器在每个Node节点上运行一个 <font colorred>filebeat、logstash、fluentd </font>容器进行统一的收集&#xff0c;而后写入…

论文阅读-DGM4-Detecting and Grounding Multi-Modal Media Manipulation

一、论文信息 论文名称&#xff1a;Detecting and Grounding Multi-Modal Media Manipulation 作者团队&#xff1a;南洋理工哈工大 Github:https://github.com/rshaojimmy/MultiModal-DeepFake 项目主页&#xff1a;https://rshaojimmy.github.io/Projects/MultiModal-DeepF…

在EasyCVR平台中添加设备提示成功但不显示是什么原因?

EasyCVR视频融合平台基于云边端智能协同架构&#xff0c;具有强大的数据接入、处理及分发能力&#xff0c;平台支持海量视频汇聚管理&#xff0c;可支持多协议接入&#xff0c;包括市场主流标准协议与厂家私有协议及SDK&#xff0c;如&#xff1a;国标GB28181、RTMP、RTSP/Onvi…

JECloud 运行前端模块所遇到的问题 汇总

1.依赖安装问题 官网 JECLoud 前端打包部署 1.1 部署前 注意 可以先下载 jecloud-libs 项目 尝试 部署安装 node版本不能过高&#xff01;选择node v14.17.5 版本 在部署前 如果当前node版本过高可以使用 nvm工具 切换到低版本&#xff0c; 但是需要注意的是 切换版本时 …

内网渗透(七十五)之域权限维持之DCShadow

DCShadow 2018年1月24日,在BlueHat安全会议上,安全研究员Benjamin Delpy 和 Vincent Le Toux 公布了针对微软活动目录域的一种新型攻击技术------DCShaow。利用该攻击技术,具有域管理员权限或企业管理员权限的恶意攻击者可以创建恶意域控,然后利用域控间正常同步数据的功能…

接口自动化测试-Requests之Session鉴权关联接口实战

目录 前言&#xff1a; 一、 简介 二、 实战操作 1. 登录接口 2. 查询订单接口 3. 新增订单接口 4. 修改订单接口 5. 删除订单接口 三、 结束语 前言&#xff1a; 接口自动化测试是软件测试过程中的重要一环&#xff0c;现在越来越多的公司开始使用自动化测试来提高测…

某社交平台 x-s所有可用

本文以教学为基准、本文提供的可操作性不得用于任何商业用途和违法违规场景。 本人对任何原因在使用本人中提供的代码和策略时可能对用户自己或他人造成的任何形式的损失和伤害不承担责任。 最新版 x-s 没露任何版权请审核员认真对待谢谢。 【2023.05.16】 更新全站接口通用 …

webpack食用指北

目录 何为webpackwebpack前置知识webpack项目初始化webpack配置文件运行webpack loadercss引入对loader的配置的几种写法 图片引入url的options自动清除上次打包遗留的资源 资源模块类型图片的webpack5引入方式字体的webpack5引入方式 webpack插件html-webpack-plugincopy-webp…

CSS 常用属性

padding (内边距):钻戒到盒子内边框的距离 margin (外边距):钻戒盒子距离桌子边缘的距离 border:钻戒盒子边框宽度 1) 内边距和外边距 内边距 外边距 使用方式: .a {padding: 10px 5px 15px 20px; /*上右下左*/padding: 10px 5px 15px; /*上右下*/padding: 10px 5px; /*上右…

EMC常见术语-dB、dBm、dBw以及如何计算

1. 手把手教&#xff1a;如何计算dB、dBm、dBw…… dB应该是无线通信中最基本、最习以为常的一个概念了。我们常说“传播损耗是xx dB”、“发射功率是xx dBm”、“天线增益是xx dBi”…… 有时&#xff0c;这些长得很像的dBx们可能被弄混&#xff0c;甚至造成计算失误。它们究…