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

一、实验环境

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

二、获取数据库信息

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

d8d99102031e4d88a235dab371555061.png

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

68d569e80dbe473eb1110510cdeb1cfc.png

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

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

\connect root@localhost:3306

b9592062cb4b4256b2dc56692d8ab4cd.png

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

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

f3d8317a736d4c4c9b45afc6de870125.png

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

show databases;

 fe91997b91954d51a8fba50b145fd58a.png

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

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

create database db1;

3d90468c06c248d3856525ebd62b21d0.png

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

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

drop database db1;

05f0514dac1b4214be6247619b1f2153.png

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

use db1;

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

show tables;

2b793503daeb4917a2f5f85bebb2f94b.png

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

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

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

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

799ebd410ab44229b9ac1de21e77851e.png

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

f1390bed713f410b8f972712d013ee07.png

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

1aa8ca66b3aa4616847d6f0d5b5d0853.png

具体代码如下:

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;

 4de1479e243e478a98b59bcf4ccb0027.png

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

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

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

37543396c24a4bdfac55955bb70de36e.png

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

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

d296b6f6889041e8803b208cc98c2a9c.png

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

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

cebae85421c74fa7bfea8a712762e1b7.png

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

df4746b449724657b1f7f90b8d860111.png

 15d6b62f48a14c698a89b5f1b6bc2dca.png

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

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

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

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

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

b548fbaa0b1c45d59ee378f87f7d2b20.png

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

c20d76b62e8849299973ca32dcfaefba.png

解压安装包,编写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目录下

6976212463e8475a9e8ff23e68949f39.png

在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

3cd0134f48ff4c62aa92f30e50471904.png

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

猜你喜欢

转载自blog.csdn.net/qq_40379132/article/details/130704595