目录

  • 系列文章
  • 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问答标签技能树(一) —— 基本框架的构建相关推荐

  1. CSDN问答标签技能树(二) —— 效果优化

    目录 系列文章 1. 问题背景 2. 技能树优化 2.1 技能树结构优化 2.1.1 知识覆盖率 2.1.2 等级体系 2.2 匹配算法效果优化 2.2.1 匹配算法的优化 2.2.2 预处理优化 2 ...

  2. 【有问必答】CSDN问答功能测评

    目录 一.前言 二.使用流程(Web端) 1.进入首页 2.问答界面 3.解答问题 4.提问 5.问题编辑 6.等待解答 三.使用流程(App端) 四.功能反馈 1.回答问题 2.提交问题 五.产品对 ...

  3. CSDN问答频道“华章杯”7月排行榜活动开始,丰厚奖品等你拿

    CSDN问答频道月度排行榜,是CSDN问答频道从3月开始举办的活动,旨在鼓励更多用户参与提问和解答,创造一个良好的互帮互助氛围,使参与者在问和答的过程中得到技术水平的提升,也希望大家能在技术交流中结交 ...

  4. 我应该如何在CSDN问答提问?

    这里可以提什么类型的问题?提问应该注意哪些问题? CSDN问答(ask.csdn.net)的服务对象主要是专业.有活力.热爱编程的人. 第一步:搜索 提问前请先全面搜索您要提的问题是否已经存在. • ...

  5. CSDN问答——测评

    根据实际使用情况,本文将在核心功能.细节.用户体验.辅助功能.差异化功能.软件效能.软件适应性.成长性.用户的控制权九个方面对CSDN问答平台作出评价.评分按照满分 10 分, 良好 6 分,  及格 ...

  6. 软件调研:CSDN 问答 VS StackOverFlow

    文章目录 敏捷软工第二次博客作业 第一部分:调研与评测 StackOverFlow 搜索功能试用 提问功能试用 评价 CSDN 问答 搜索功能试用 问答功能试用 评价 bug CSDN 输入框不限制长 ...

  7. CSDN问答频道“华章杯”10月排行榜活动开始,丰厚奖品等你拿

    CSDN问答频道月度排行榜,是CSDN问答频道从3月开始举办的活动,旨在鼓励更多用户参与提问和解答,创造一个良好的互帮互助氛围,使参与者在问和答的过程中得到技术水平的提升,也希望大家能在技术交流中结交 ...

  8. 提问的智慧—如何更好地提问题和回答问题 CSDN开发者互助问答平台测评「CSDN问答」测评

    目录 前言 CSDN问答使用体验 整体评价 产品功能 内容质量 产品bug 其他的一些建议 前言 CSDN问答是CSDN官方推出的一款子平台.其致力于帮助IT技术人解决问题,旨在为IT技术人提供一个可 ...

  9. CSDN问答——精选问答Vol.7

    <精选问答>挑选CSDN问答频道每周最新最热的优质回答,为大家提供可信赖的优质解答,点击查看更多已解决问题 目录 1.想把javaScript变量传递asp页面 存入数据库获取值 不是空 ...

最新文章

  1. Java基础与实践题库_Java程序设计基础与实践(题库版)
  2. 洪小文: 今天的AI只是一个黑盒,仍需与HI密切配合
  3. Winform中设置ZedGraph的曲线符号Symbol以及对应关系
  4. [十六]JavaIO之InputStreamReader 与 OutputStreamWriter
  5. qregexp限制数字范围_数字系统实现电压电流控制的必经之路数模转换器
  6. jp在java中无法编译_JPanal上加图片的问题!
  7. JavaScript代码片段
  8. 走好达叔!每年“癌症”新增400万例,数据分析揭示“癌症”到底有多可怕
  9. FJUT 借教室 (线段树区间查询+区间修改)
  10. 软工课后作业01 15100152
  11. css3中的box-shadow的用法与text-shadow的用法
  12. castle典范英语 storm_典范英语
  13. R语言数据接口(下载、读取、写入)
  14. 如何将两个PDF合并成一个?PDF合并方法
  15. 不用任何软件!PDF转Word用微信这个功能,简单又方便!
  16. IDL学习——调用enviTask对高分2号影像进行预处理
  17. 实时时钟芯片DS1302
  18. css linux 等宽字体,css 等宽字体有哪些
  19. 免费且快速搭建个人www服务器的教程
  20. 战神引擎各类修改地址中文注释汇总

热门文章

  1. labview如何加载库_LabVIEW如何方便地调用DLL文件
  2. sql如何进行脱敏操作_股市入门基本知识丨大阳线出现后如何进行短线操作
  3. 拼多多微信页面h5 html,拼多多(7pdd)微信跳转h5页面打开app跳转任意url关注技术weixin://dl/business/?ticket...
  4. 开源硕士毕业论文算法
  5. Diffusion Models和GANs结合
  6. 2022年前端面试题整理,持续更新中
  7. 罗大佑的童年用计算机咋弹,罗大佑《童年》吉他弹奏教学-520吉他网
  8. 电脑编程从哪里开始学习_我想学习编程,但我不知道从哪里开始
  9. 如何下载在线课程网站的视频
  10. php文件对应的模板,wordpress模板文件对应说明关系(wp模板文件说明)