准备相似性分析需要的语料数据
3766字,阅读需时13分钟

语料是文本相似性分析程序的工作数据,它可以是多个文本文件,也可以是存储在数据库的多条文本记录。

语料的整理是既耗时又费力地工作,好在我们已经准备好了语料,同学们可以免费使用这些语料。项目训练的宗旨是贴近商业需求,在商业应用中语料一般都存储在数据库中,例如论文的查重、相似性新闻推荐等程序,都会从数据库中提取论文和新闻,然后与待比对的论文或新闻进行相似性分析。

把语料存储到数据库,需要您掌握MySQL数据库知识,能够将MySQL数据库安装到本机电脑或服务器,将语料存储到数据库,从数据库查询和读取语料等知识。在后面的训练中,我们假设您已经掌握了这些知识。

项目使用的语料是若干个文本文件,每个文本文件是一条新闻内容。

01.png

新闻内容由标题和正文构成。

02.png

需要将这些文本文件导入到MySQL数据库,数据库名称是newsdb,表名称是news。

03.png

导入语料到数据库的Python代码如下:

#导入pymysql模块
import pymysql as mysql
#导入正则模块
import re
#导入OS模块
import os
 
# 定义数据库连接函数
def connect_database():
    try:
        conn = mysql.connect(
            host='127.0.0.1',
            user='root',
            password='123456',
            database='newsdb'
        )
        return conn  #获取配置数据
    except Exception as e:
        print(e)
        return "error"
# 新闻稿件测试数据写入数据库表
def  file_to_datatable():
    content = []
    # 连接数据库
    conn = connect_database()
    if conn == "error":
        print("数据库连接错误")
    else:
        data = get_data_from_file()
        # 获取Curso对象
        cursor = conn.cursor()
        #cursor.execute('SET NAMES utf8mb4')
        count = 0
        try:
            for item in data:
                sql = "INSERT INTO news(guid,title,content) VALUES('%s','%s','%s')"
                text = item[2]
                text = text.replace("'","")
                cursor.execute(sql % (item[0],item[1],text))
                print("写入 %d 条记录" % (count+1))
                count += 1
            conn.commit()
        except  Exception as e:
                conn.rollback()
                print(e)
        # 关闭数据库连接
        finally:
            cursor.close()  
            conn.close()
# 去除文本控制符
def remove_control_chars(text):
    text = re.sub(r'[\x00-\x1F\xc2\x20\xa0\u3000]+','',text)
    return text
# 从文件读取数据
def get_data_from_file():
    newlist = []
    #待遍历的目录路径
    path = "e:/data"
    #调用listdir方法遍历path目录
    dirs = os.listdir(path)
    # 读取文本内容
    for file in dirs:
        filename = os.path.join(path,file)
        basename, ext = os.path.splitext(file)
        with open (filename,"r",encoding='utf-8') as fp:
            lines = fp.readlines()
            # 读取标题
            title = remove_control_chars(lines[0])
            content = remove_control_chars("".join(lines))
            newlist.append((basename,title,content))
    return newlist
if __name__ == '__main__':
    file_to_datatable()

导入语料数据到MySQL数据库之前,需要做下面的几项工作:

(1)在计算机上安装MySQL8.0数据库;

(2)建立newsdb数据库;

(3)在newsdb数据库下建立news表,表结构参见表1。

 数据库建好后,将语料压缩包解压到任意磁盘目录下,修改上述代码对应的语料文件所在磁盘目录,修改数据库连接地址、账号和登录密码,然后执行程序,将语料数据导入到MySQL数据库。

现在我们已经构建好了语料库,下一步的工作就是构建文本相似性分析开发项目,编写项目代码。

我要评论
全部评论