CSDN问答标签技能树(一) —— 基本框架的构建
目录
- 系列文章
- 1 问题定义
- 1.1 背景
- 2 解决方案
- 2.1 知识搜集
- 2.2 技能树的构建
- 2.3 技能树的合并
- 2.4 问题与技能树的匹配
- 3 总结与下一步计划
- 总结
- 下一步计划
系列文章
- CSDN问答标签技能树(一) —— 基本框架的构建
- CSDN问答标签技能树(二) —— 效果优化
- CSDN问答标签技能树(三) —— Python技能树
- CSDN问答标签技能树(四) —— Java技能树
- CSDN问答标签技能树(五) —— 云原生技能树
团队博客: CSDN AI小组
1 问题定义
1.1 背景
当前CSDN问答模块中的提问只进行了简单的归类,例如:Python、Java、C语言等大类,而未将提问映射到大类中的具体知识点,例如在下图的例子中,该问题属于Python语言中的数据可视化问题。
将问题进行细粒度的归类和划分,可以让提问者更清楚的了解自己所提的问题在知识体系中的位置,也便于系统更精准地推荐相关的资料给提问者进行学习和参考。
为了解决上述问题,本文首先针对每个大类构建编程语言技能树,然后再将以往已采纳的提问映射到技能树中具体的结点中,最后对于一个新来的提问,基于构建好的技能树,匹配到最相似的结点,并推荐该结点上的已采纳提问。
2 解决方案
2.1 知识搜集
要想构建编程技能树,首先需要搜集相关的知识,本文先以Python编程语言为例,进行具体的实现。
通过在网上的搜索和调研,总结出以下两个渠道:
从某东上爬去目录
- 按关键字"python"从某东上搜索,并按销量筛选出Top N的书籍
- 从详情页面中抽取目录字段的内容,获得未经处理的目录
网站论坛上的学习路径:
- 例如:廖雪峰的官方网站、菜鸟教程、极客学院
- 使用网络爬虫爬取网站上的目录,以廖雪峰的官方网站为例,如下图所示:
2.2 技能树的构建
在获得相应的知识资源之后,需要将资源存储到树结构中,本文采用treelib包进行实现。
为了方便下一节中树的合并,本文将目录限制为4层结构:
- 大章标题。例如:第一部分
- 小章标题。例如:第1章
- 大节标题。例如:1.1
- 小节标题。例如:1.1.1
结构化之后的树结构如下图所示:
2.3 技能树的合并
基于不同来源的目录和知识体系资源构建好技能树之后,需要将多棵不同的技能树进行合并,形成一棵同一的Python技能树。
对于树的合并,本文主要考虑了以下几个方面:
- 从根节点开始按层进行合并
- 使用递归的方法将多棵树进行合并
- 同一层中相似的节点需要进行合并
- 使用启发式的聚类方法(不需要预先确定簇的个数),将节点划分到多个簇中
- 聚类时的相似度计算方法使用 最长公共子序列比+莱文斯坦比(编辑距离比) 的方法进行计算
- 合并后新的节点,使用多个句子的最长公共子序列代替,例如:3个结点 if语句使用、if语句处理列表设置、if语句的格式 的最长公共子序列为 if语句 ,最后使用 if语句 作为合并节点的值。
- 去掉无用的节点
- 使用树剪枝+词典的方法,去掉技能树中的无用节点,例如:本章小结、延伸阅读、项目等章节节点。
合并后的技能树如下图所示:
2.4 问题与技能树的匹配
技能树构建好之后,需要将Python领域所有已采纳的问题映射到相应的结点上,并且对于一个新来的提问,基于构建好的技能树,匹配到最相似的结点,并推荐该结点上的已采纳提问。
本文采用的匹配算法为莱文斯坦比(编辑距离比),通过计算提问与结点的莱文斯坦比值,确定提问最匹配的结点。
3 总结与下一步计划
总结
本文主要实现了编程语言技能树的构建与合并,以及提问与技能树中结点的匹配。现在只是实现了初步功能,效果还需要进一步优化。当前存在的问题主要包括:
- 无关节点的去除不够干净
- 聚类时的相似度计算方法,以及多个节点合并后的新结点使用最长公共子序列代替不合理,例如: Python版本运行 和 Python代码片段 被划分到同一个簇,并且合并后为 Python
- 提问和技能树中结点的描述风格相差较大,一个是提问,一个是知识点,在提问和结点匹配时使用 莱文斯坦比(编辑距离比) 的方法计算相似度不合理
- ……
下一步计划
针对当前存在的问题,下一步考虑:
- 进一步改进合成的技能树的质量
- 改进问题和树的匹配效果
CSDN问答标签技能树(一) —— 基本框架的构建相关推荐
- CSDN问答标签技能树(二) —— 效果优化
目录 系列文章 1. 问题背景 2. 技能树优化 2.1 技能树结构优化 2.1.1 知识覆盖率 2.1.2 等级体系 2.2 匹配算法效果优化 2.2.1 匹配算法的优化 2.2.2 预处理优化 2 ...
- 【有问必答】CSDN问答功能测评
目录 一.前言 二.使用流程(Web端) 1.进入首页 2.问答界面 3.解答问题 4.提问 5.问题编辑 6.等待解答 三.使用流程(App端) 四.功能反馈 1.回答问题 2.提交问题 五.产品对 ...
- CSDN问答频道“华章杯”7月排行榜活动开始,丰厚奖品等你拿
CSDN问答频道月度排行榜,是CSDN问答频道从3月开始举办的活动,旨在鼓励更多用户参与提问和解答,创造一个良好的互帮互助氛围,使参与者在问和答的过程中得到技术水平的提升,也希望大家能在技术交流中结交 ...
- 我应该如何在CSDN问答提问?
这里可以提什么类型的问题?提问应该注意哪些问题? CSDN问答(ask.csdn.net)的服务对象主要是专业.有活力.热爱编程的人. 第一步:搜索 提问前请先全面搜索您要提的问题是否已经存在. • ...
- CSDN问答——测评
根据实际使用情况,本文将在核心功能.细节.用户体验.辅助功能.差异化功能.软件效能.软件适应性.成长性.用户的控制权九个方面对CSDN问答平台作出评价.评分按照满分 10 分, 良好 6 分, 及格 ...
- 软件调研:CSDN 问答 VS StackOverFlow
文章目录 敏捷软工第二次博客作业 第一部分:调研与评测 StackOverFlow 搜索功能试用 提问功能试用 评价 CSDN 问答 搜索功能试用 问答功能试用 评价 bug CSDN 输入框不限制长 ...
- CSDN问答频道“华章杯”10月排行榜活动开始,丰厚奖品等你拿
CSDN问答频道月度排行榜,是CSDN问答频道从3月开始举办的活动,旨在鼓励更多用户参与提问和解答,创造一个良好的互帮互助氛围,使参与者在问和答的过程中得到技术水平的提升,也希望大家能在技术交流中结交 ...
- 提问的智慧—如何更好地提问题和回答问题 CSDN开发者互助问答平台测评「CSDN问答」测评
目录 前言 CSDN问答使用体验 整体评价 产品功能 内容质量 产品bug 其他的一些建议 前言 CSDN问答是CSDN官方推出的一款子平台.其致力于帮助IT技术人解决问题,旨在为IT技术人提供一个可 ...
- CSDN问答——精选问答Vol.7
<精选问答>挑选CSDN问答频道每周最新最热的优质回答,为大家提供可信赖的优质解答,点击查看更多已解决问题 目录 1.想把javaScript变量传递asp页面 存入数据库获取值 不是空 ...
最新文章
- Java基础与实践题库_Java程序设计基础与实践(题库版)
- 洪小文: 今天的AI只是一个黑盒,仍需与HI密切配合
- Winform中设置ZedGraph的曲线符号Symbol以及对应关系
- [十六]JavaIO之InputStreamReader 与 OutputStreamWriter
- qregexp限制数字范围_数字系统实现电压电流控制的必经之路数模转换器
- jp在java中无法编译_JPanal上加图片的问题!
- JavaScript代码片段
- 走好达叔!每年“癌症”新增400万例,数据分析揭示“癌症”到底有多可怕
- FJUT 借教室 (线段树区间查询+区间修改)
- 软工课后作业01 15100152
- css3中的box-shadow的用法与text-shadow的用法
- castle典范英语 storm_典范英语
- R语言数据接口(下载、读取、写入)
- 如何将两个PDF合并成一个?PDF合并方法
- 不用任何软件!PDF转Word用微信这个功能,简单又方便!
- IDL学习——调用enviTask对高分2号影像进行预处理
- 实时时钟芯片DS1302
- css linux 等宽字体,css 等宽字体有哪些
- 免费且快速搭建个人www服务器的教程
- 战神引擎各类修改地址中文注释汇总
热门文章
- labview如何加载库_LabVIEW如何方便地调用DLL文件
- sql如何进行脱敏操作_股市入门基本知识丨大阳线出现后如何进行短线操作
- 拼多多微信页面h5 html,拼多多(7pdd)微信跳转h5页面打开app跳转任意url关注技术weixin://dl/business/?ticket...
- 开源硕士毕业论文算法
- Diffusion Models和GANs结合
- 2022年前端面试题整理,持续更新中
- 罗大佑的童年用计算机咋弹,罗大佑《童年》吉他弹奏教学-520吉他网
- 电脑编程从哪里开始学习_我想学习编程,但我不知道从哪里开始
- 如何下载在线课程网站的视频
- php文件对应的模板,wordpress模板文件对应说明关系(wp模板文件说明)