用户工具

站点工具


mnbvc:mysqlexportdata

为了方便各个中文论坛站长支持『MNBVC中文语料集』项目,这里使用最普遍的Discuz!论坛为例,简单介绍一下站长如何从论坛数据库中导出脱敏的论坛帖子数据。(只有主贴和回帖内容,完全不包含用户信息等内容的数据)

首先,我们以最普遍使用的论坛数据库MySQL,和使用最广泛的数据库图形化管理工具 PhpMyAdmin(以下简称PMA) 为例。

以上是PMA的界面,左侧为各个数据库,每一个数据库对应一个网站或者论坛,点击库名或者前面的“+”号即可展开数据库包含的所有数据表

我们都知道,我们希望收集整理的论坛信息,就是论坛的帖子。一般来说,论坛的帖子里对于语料集来说有意义的数据包括:

帖子标题,帖子内容,回帖内容,每一个帖子和回帖的发言ID,以及发帖子的时间(不是必要的)。其它的信息我们并不需要,也不想要任何可能泄露论坛用户隐私的信息。

因此,我么只需要把论坛数据库中的这些必要数据,复制到一个新的数据表中,再导出这个数据表,就可以了。

我们先以Discuz!论坛的数据库为例:

我们看到论坛的数据库里面有很多很多的数据表,这是因为现在的论坛都有很多很复杂的功能,因此这里面只有两个关键的数据表里面的数据,才是我们需要的帖子内容。

如上图所示,一个Discuz!论坛的页面里,我们只需要帖子标题,帖子内容,以及对应的发帖人ID,这个帖子对于大模型训练用的语料来说,就基本完整了。另外我们还需要每一个帖子内容(就是回帖)的发帖时间来对回帖内容进行排序。

因此,我们需要的数据表就是:

pre_forum_thread 主题信息,主题帖标题、内容、作者、发表时间等
pre_forum_post 帖子信息,包括帖子标题、内容、作者、发表时间等

(PS.“pre_”是安装Discuz时默认的数据表前缀,如果你设置了自定义前缀,请将其替换为自定义内容)

这两个数据表是必须的

其中, pre_forum_thread数据表中,我们仅需要tid,author,subject 三列的数据:

pre_forum_post数据表中,我们需要tid,first,author,subject,dateline,message

因此,我们点击PhoMyAdmin 的数据表上方的『SQL』菜单,

写入如下数据库代码:

以下是MySQL代码,用于满足你的需求:

-- 创建thread_bak数据表并复制数据
CREATE TABLE thread_bak (
  tid INT,
  author VARCHAR(255),
  subject VARCHAR(255)
);
 
INSERT INTO thread_bak (tid, author, subject)
SELECT tid, author, subject
FROM pre_forum_thread;
 
-- 创建post_bak数据表并复制数据(某些dateline可能是INT格式)
CREATE TABLE post_bak (
  tid INT,
  FIRST TINYINT,
  author VARCHAR(255),
  subject VARCHAR(255),
  dateline DATETIME,
  message TEXT
);
 
INSERT INTO post_bak (tid, FIRST, author, subject, dateline, message)
SELECT tid, FIRST, author, subject, dateline, message
FROM pre_forum_post;

请注意,上述代码中的数据表名和列名(如pre_forum_thread、pre_forum_post)需要根据你的实际数据库结构进行替换。同样,数据类型和列长度也可以根据需要进行调整。

执行以上代码后,将在数据库中创建一个名为thread_bak的新数据表,并将pre_forum_thread表中tid、author、subject这三列的数据复制到thread_bak表中。同时,也会创建一个名为post_bak的新数据表,并将pre_forum_post表中tid、first、author、subject、dateline和message这五列的数据复制到post_bak表中。

确保数据库连接和选择的数据库正确,并根据实际需求调整数据表名、列名、数据类型和列长度。

好,到目前为止,我们就能够看到左侧的数据表列表底部多了两个新的备份数据表 thread_bakpost_bak

选中这两个新数据表(分别选中),比如先选择post_bak,然后点击数据表顶部的“导出”菜单:

然后点击右下角的“执行”按钮,静待数据表导出,保存到本机即可。

重复以上步骤,导出thread_bak,这两两个备份的数据表全部导出,就可以把这两个文件打包。然后上传到网盘或者服务器,提交给MNBVC下载使用了。

mnbvc/mysqlexportdata.txt · 最后更改: 2024/03/30 10:21 由 MNBVC项目组