当前位置:   article > 正文

毕业设计:Vue3+FastApi+Python+Neo4j实现主题知识图谱网页应用——数据处理:选择数据集_知识图谱neo4j毕业设计csdn

知识图谱neo4j毕业设计csdn

简介

完整项目资源链接:https://download.csdn.net/download/m0_46573428/87796553

项目详细信息请看:毕业设计:Vue3+FastApi+Python+Neo4j实现主题知识图谱网页应用——前言_人工智能技术小白修炼手册的博客-CSDN博客

在进入数据处理的模块先需要先选择数据集。

功能设计:选择数据集,进入对应的数据处理模块。

主要代码

前端

Html

这段代码是一个Vue.js模板(template),负责渲染一个网站的路由和链接导航栏页面视图。

具体而言,该模板包含以下内容:

  1. 一个带有样式的<div>元素,用于布局整个页面。在该<div>元素中还包含:

  • main1类的子<div>元素,用于显示选择数据集的页面块。

    • <img>元素,用于展示网站Logo。

    • <h1>元素,用于展示网站名称。

    • choose类的子<div>元素,包括:

      • 一个<select>元素,用户可从中选择不同的数据集。

      • 一个“确认”<button>元素,用于提交选项并触发transfer()函数。

  • main2类的子<div>元素,用于根据所选数据集显示对应的数据处理页面块。

    • leftBar类的子<div>元素,包括:

      • 一个展示“关系抽取”的文本元素。

      • 一个包含数据标注链接的<ul>元素,可以通过点击链接跳转到对应页面。

        • 每个链接都包含一个<li>元素,并使用符号箭头进行装饰。

        • 在模板中使用了v-if指令来控制切换箭头的可见性。

      • 一个展示“图谱更新”的文本元素。

      • 一个包含数据上传和实体融合链接的<ul>元素,同样可以通过点击链接跳转到对应页面。结构同前一个<ul>元素。

    • main类的子<div>元素,使用<router-view>元素显示当前路由页面内容。

  1. <template>
  2. <div style="padding-top: 8%; width: 70%; margin: auto">
  3. <div class="main1" v-if="!isShowMain">
  4. <div class="top">
  5. <img class="logo" src="../assets/logo.png" alt="" />
  6. <h1>IME</h1>
  7. </div>
  8. <div class="choose">
  9. <select name="" id="" v-model="id">
  10. <option value="">请选择数据集</option>
  11. <option
  12. class="test"
  13. v-for="(item, index) in database_info_list"
  14. :key="index"
  15. :value="item.database_id"
  16. >
  17. {{ item.name }}
  18. </option>
  19. </select>
  20. <button @click="transfer()">&nbsp;&nbsp;&nbsp;</button>
  21. </div>
  22. </div>
  23. <div class="main2" v-if="isShowMain">
  24. <div class="leftBar">
  25. <div style="margin-top: 40px">关系抽取</div>
  26. <ul>
  27. <li>
  28. <img src="../assets/右箭头.svg" v-if="isShow[0]" /><router-link
  29. :to="`/DataProcessing/Label/${id}`"
  30. active-class="_active"
  31. @click="changeisShow1"
  32. >数据标注</router-link
  33. >
  34. </li>
  35. </ul>
  36. <div>图谱更新</div>
  37. <ul>
  38. <li>
  39. <img src="../assets/右箭头.svg" v-if="isShow[1]" /><router-link
  40. :to="`/DataProcessing/DataUpload/${id}`"
  41. active-class="_active"
  42. @click="changeisShow2"
  43. >数据上传</router-link
  44. >
  45. </li>
  46. <li>
  47. <img src="../assets/右箭头.svg" v-if="isShow[2]" /><router-link
  48. :to="`/DataProcessing/Fusion/${id}`"
  49. active-class="_active"
  50. @click="changeisShow3"
  51. >实体融合</router-link
  52. >
  53. </li>
  54. </ul>
  55. </div>
  56. <div class="main">
  57. <router-view> </router-view>
  58. </div>
  59. </div>
  60. </div>
  61. </template>

Script

这段代码是一个Vue.js组件(默认导出),名称为DataProcessing。该组件主要负责获取数据集列表、展示数据集的数据,并根据用户选择展示不同的页面。

该组件中包含以下部分:

1. name属性,定义了组件的名称。

2. props属性为空对象,表示该组件未接收任何父组件的数据传递。

3. data()方法,定义了组件的局部数据对象,包括:

  • isShowMain:布尔类型的变量,用于控制页面显示和隐藏。

  • isShow:包含三个布尔类型元素值的数组,用于记录当前选中的页面块。

  • database_info_list:空数组,用于存储所有可选的数据集信息。

  • id:字符串类型的变量,默认为空,用于记录用户当前选择的数据集ID。

  • data:空数组,用于存储选中数据集的所有数据。

  • index:数字类型的变量,初始值为1,但并未在代码其他部分被使用。

4. methods对象,包含多个自定义函数。

  • databaseList():通过axios.get()方法获取数据集列表并将其存储到database_info_list变量中。

  • transfer():判断是否选择了数据集,如果选择则展示对应的页面块,并调用browse()函数获取选中数据集的全部数据。

  • browse(id):通过axios.get()方法获取指定ID数据集的所有数据,并将其存储到data变量中。

  • changeisShow1()changeisShow2()changeisShow3():切换当前选中的页面块,对isShow数组的值进行修改。

5. mounted生命周期函数,当组件被挂载时执行。在该函数中调用databaseList()函数,获取所有可选数据集列表。

  1. <script>
  2. export default {
  3. name: "DataProcessing",
  4. props: {},
  5. data() {
  6. return {
  7. isShowMain: false,
  8. isShow: [true, false, false],
  9. database_info_list: [],
  10. id: "",
  11. data: [],
  12. index: 1,
  13. };
  14. },
  15. methods: {
  16. // 获取数据集列表
  17. databaseList: function () {
  18. this.axios
  19. .get("http://localhost:8000/DatabaseList")
  20. .then((res) => {
  21. this.database_info_list = JSON.parse(JSON.stringify(res.data));
  22. console.log(this.database_info_list);
  23. })
  24. .catch((error) => {
  25. alert("databaseList失败");
  26. });
  27. },
  28. transfer: function () {
  29. if (this.id != "") {
  30. this.isShowMain = !this.isShowMain;
  31. this.browse(this.id);
  32. } else {
  33. alert("请选择数据集!");
  34. }
  35. },
  36. // 数据标注:展示数据集的数据
  37. browse: function (id) {
  38. this.axios
  39. .get("http://localhost:8000/Browse?database_id=" + id)
  40. .then((res) => {
  41. if (res.data == "数据为空") {
  42. alert("数据集为空");
  43. }
  44. console.log(res.data);
  45. this.data = res.data;
  46. })
  47. .catch((error) => {
  48. alert("Browse 失败");
  49. });
  50. },
  51. changeisShow1: function () {
  52. this.isShow = [true, false, false]; //取反
  53. },
  54. changeisShow2: function () {
  55. this.isShow = [false, true, false]; //取反
  56. },
  57. changeisShow3: function () {
  58. this.isShow = [false, false, true]; //取反
  59. },
  60. },
  61. mounted: function () {
  62. this.databaseList();
  63. // this.isShow = this.$route.query.isShow;
  64. },
  65. };
  66. </script>

Css

  1. <style scoped>
  2. * {
  3. color: #666;
  4. }
  5. .main1 {
  6. text-align: center;
  7. width: 75%;
  8. margin: auto;
  9. }
  10. .leftBar {
  11. float: left;
  12. height: 550px;
  13. background: rgba(240, 240, 240, 0.6);
  14. width: 20%;
  15. border-radius: 15px;
  16. box-shadow: rgb(0 0 0 / 20%) 0px 3px 10px;
  17. }
  18. .main {
  19. float: right;
  20. height: 550px;
  21. width: 76%;
  22. background: rgba(240, 240, 240, 0.6);
  23. border-radius: 15px;
  24. box-shadow: rgb(0 0 0 / 20%) 0px 3px 10px;
  25. }
  26. li {
  27. list-style: none;
  28. }
  29. .leftBar > div {
  30. text-align: center;
  31. line-height: 60px;
  32. font-weight: bold;
  33. }
  34. .leftBar > ul > li {
  35. text-align: center;
  36. line-height: 40px;
  37. width: 100%;
  38. }
  39. .leftBar > ul > li:hover {
  40. color: #486e53;
  41. border-left: #486e53 5px solid;
  42. }
  43. ._active {
  44. color: #486e53;
  45. font-weight: bold;
  46. width: 100%;
  47. }
  48. img {
  49. height: 20px;
  50. margin-right: 10px;
  51. margin-bottom: -5px;
  52. margin-left: -31px;
  53. }
  54. h1 {
  55. font-size: 100px;
  56. color: rgb(107, 146, 77);
  57. float: left;
  58. padding: 143px 220px 0px 0px;
  59. }
  60. .logo {
  61. float: left;
  62. padding: 142px 30px 0px 230px;
  63. height: 100px;
  64. }
  65. .top {
  66. width: 100%;
  67. }
  68. .choose {
  69. width: 100%;
  70. }
  71. button {
  72. float: left;
  73. border: none;
  74. background: rgb(107, 146, 77);
  75. color: white;
  76. padding: 10px 20px;
  77. font-weight: bold;
  78. border-radius: 15px;
  79. width: 150px;
  80. margin-top: 71px;
  81. margin-left: 31px;
  82. }
  83. button:hover {
  84. cursor: pointer;
  85. }
  86. select {
  87. float: left;
  88. margin: auto;
  89. margin-top: 70px;
  90. margin-left: 125px;
  91. padding: 10px 10px 10px 10px;
  92. width: 350px;
  93. border: #ccc solid 1px;
  94. border-radius: 15px;
  95. color: #444;
  96. background: #eee;
  97. }
  98. </style>

后端

这段代码是一个Python函数,DatabaseList(),用于返回指定目录下的所有数据集目录(在本段代码中database_root变量所指向的位置)及其基本信息。

该函数包含以下部分:

  1. 一个for循环,使用os.walk()方法遍历指定目录下的所有子目录及文件。

  2. 在循环体内,获取当前遍历到的子目录列表,并依次对每个子目录中的基本信息.json文件进行读取和解析操作,将解析结果存储到一个字典对象data中。其中包括当前数据集的名称、类型、大小、样本数等基本信息。

  3. data字典对象中加入一项location,用于存储每个数据集在前端网页中展示时的位置坐标。具体而言,在该字符串中,top属性表示距顶部的距离,像素值通过简单的计算得出,并与当前索引值相乘来实现分散布局的效果。

  4. data字典对象作为一个元素添加到database_info_list列表中,并在整个循环结束后返回database_info_list作为函数的输出结果。

  1. # 返回数据集列表及其基本信息
  2. def DatabaseList():
  3. """
  4. 作用:返回数据集列表及其基本信息
  5. 输入:
  6. 输出:数据集列表及其基本信息
  7. """
  8. database_info_list = []
  9. for root, dirs, files in os.walk(database_root):
  10. database_list = dirs
  11. print(database_list)
  12. for i in range(len(database_list)):
  13. with open(database_root + database_list[i] + '/基本信息.json', 'r', encoding='utf-8') as f:
  14. data = json.load(f)
  15. data['location'] = 'top:' + str(111 + i * 179) + 'px;'
  16. database_info_list.append(data)
  17. print('DatabaseList', '成功')
  18. break
  19. return database_info_list

函数Browse(database_id),用于读取指定编号的数据集下所有文件中的数据并返回。

该函数包含以下部分:

  1. 调用DataExport()函数获取指定数据集下的所有数据文件路径列表,并存储到files_list变量中。

  2. 遍历files_list列表中的每个数据文件,使用open()方法打开文件,并将其读取到变量c中。在读取过程中,逐行读取文件内容,并使用字符串拼接的方式将各行内容合并到一起。

  3. 调用changeJsonFormat()函数,将读取到的文本JSON格式化。

  4. 将处理后的数据添加到data_list列表中。

  5. 判断data_list列表是否为空。如果为空,则返回字符串'数据为空';否则返回完整的data_list列表作为函数的输出结果。

  1. # 读取数据库下DataFiles的所有文件数据
  2. def Browse(database_id):
  3. """
  4. 作用:读取数据库下DataFiles的所有文件数据
  5. 输入:database_id
  6. 输出:数据库下DataFiles的所有文件数据
  7. """
  8. data_list = []
  9. data = ''
  10. files_list = DataExport(database_id)
  11. name = FindDatabase(database_id)
  12. for f_path in files_list:
  13. c = ''
  14. for f in open(f_path, 'r', encoding='utf-8'):
  15. c += f
  16. # print(c)
  17. data_list.append(changeJsonFormat(c))
  18. if len(data_list) == 0:
  19. return '数据为空'
  20. print('Browse', '成功')
  21. return data_list
  22. # print(Browse(database_id = '1003172907'))
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/161288
推荐阅读
相关标签
  

闽ICP备14008679号