首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何表示隐式关系?

如何表示隐式关系?
EN

Stack Overflow用户
提问于 2009-03-31 11:14:52
回答 4查看 244关注 0票数 2

我正在开发一个应用程序,其中我必须处理一个名为“技能”的实体。现在的问题是,“技能A”可以与“技能B”具有一定的相关性(这种相关性用于搜索目的)。类似地,“技能B”也可以与“技能C”相关。我们目前有以下数据模型来表示这个场景

技能{SkillId,SkillName}

RelevantSkill {SkillId,RelevantSkillId,RelevanceLevel}

现在,在上面的场景中,我们有了“技能A”和“技能C”之间的隐式关系。此场景的最佳数据模型是什么?在执行搜索时,我们还必须遍历此层次结构。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-04-10 12:13:21

您所要求的似乎基本上是一个从一组成对距离计算得出的图距离算法(斜杠数据结构)。一个合理的(并且可以很好地计算的)指标是commute time

可以这样认为:构建一个图,其中每个节点都是一项技能,每条边代表它彼此连接的节点的相关性。现在想象一下,您从图中的某个节点开始(一些技巧),然后沿着定义的边随机跳到其他节点。假设从技能A跳到技能B的概率与这些技能之间的相关性成正比(通过这些技能与其他技能的相关性来归一化...)。现在,通勤时间表示从技能A到技能C所需的平均步数。

这具有一个非常好的特性,即在两个节点之间添加更多路径会缩短通勤时间:如果技能A和B、B和C、C和D以及D和A相关,那么A和C之间的通勤时间将变得更短。此外,使用稀疏连接技能图的特征值分解可以非常容易地计算通勤时间(我认为我给你的参考资料说明了这一点,但如果不是这样的话,还有很多可用的)。

如果您希望实际存储任意技能对之间的通勤时间,则需要一个完全连接的图或NxN矩阵(N是技能的数量)。然而,一个更好的变体是,如上所述,丢弃所有弱于某个阈值的连接,然后将稀疏连接图作为行存储在数据库中。

祝你好运,我希望这对你有帮助!

票数 1
EN

Stack Overflow用户

发布于 2009-03-31 11:22:57

你最好的选择是:

  1. 为RelevantSkill增加了一个ImplicitRelevance布尔列:

RelevantSkill {SkillId, RelevantSkillId, RelevanceLevel, ImplicitRelevance}

  1. 插入(到RelevantSkill表中)对应于所有隐式(间接)相关关系的行(例如当且仅当计算的RelevanceLevel高于设定的阈值时,技能A“->”“技能C")与其相应的计算RelevanceLevel。这些行应将ImplicitRelevance设置为true

skill_a_id, skill_b_id, computed_level, 'T'

如果对显式相关性级别(指标)进行了任何更改,请使用ImplicitRelevance=true删除所有行,然后重新计算(重新插入)它们。

票数 1
EN

Stack Overflow用户

发布于 2009-03-31 13:30:14

你的解释留下了一些开放的东西,那就是在间接(“隐含”)关系的情况下,相关性级别是如何组合的。例如,如果技能A与级别3的技能B相关,而技能B与级别5的技能C相关,那么技能A与技能C的间接相关性的级别(以数字形式)是什么?

正确的数据模型取决于两件事:你有多少技能,以及它的关系结构有多密集(密集=许多技能与其他技能相关)。如果关系结构很密集,而你的技能又很少(< 1000),你最好把整个事情表示成一个矩阵。

但是,如果你有很多技能,但是关系结构很稀疏,你可以用三个表来表示:

代码语言:javascript
运行
AI代码解释
复制
Skill {SkillId, SkillName}

RelevantSkill {SkillId, RelevantSkillId, RelevanceLevel}

IndirectRelevance { SkillId, RelevantSkillId, RelevanceLevel}

第三个表( IndirectRelevance )是基于两个主表计算的;每当您更改Skill或RelevantSkill表时,都需要更新IndirectRelevance表。

我认为有三个表比两个表更好;这使得实现更清晰、更直接。RelevantSkill包含显式声明的关系;IndirectRelevance所有派生事实。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/702608

复制
相关文章
__dirname 在ES模块中的使用
ECMAScript模块是 JavaScript 的新标准格式。在Node.js中越来越多的库逐渐从从CommonJS转移到ES模块
ACK
2024/04/09
3050
__dirname 在ES模块中的使用
ansible模块定制开发
现以pids.py模块进行讲解,该文件位于ansible/modules/system/pids.py,一旦你理解模块的基本开发流程,就可以开发的模块,让自己的能力更上一层楼:
yxxhero
2022/05/31
1K0
我在使用 Go 过程中犯过的低级错误
循环迭代器变量是一个在每次循环迭代中采用不同值的单个变量。如果我们一直使用一个变量,可能会导致不可预知的行为。
用户5166556
2023/03/18
2.1K0
我在使用 Go 过程中犯过的低级错误
我应该使用 PyCharm 在 Python 中编程吗?
Python 是一种广泛使用的编程语言,以其简单、多功能和庞大的开发人员社区而闻名。这个社区不断创建新的库和工具,以提高Python编程的效率和便利性。选择正确的环境来编写和调试 Python 代码可能具有挑战性,但 PyCharm 是一个很好的选择,从其他选项中脱颖而出。
很酷的站长
2023/02/20
4.7K0
我应该使用 PyCharm 在 Python 中编程吗?
CSDN自定义模块的高度定制
在只允许使用html,不能使用js和css的情况下,也能把CSDN的自定义模块玩出花来
拿我格子衫来
2022/01/24
5780
CSDN自定义模块的高度定制
Python 中argparse模块的使用
如果脚本很简单或临时使用,没有多个复杂的参数选项,可以直接利用sys.argv将脚本后的参数依次读取(读进来的默认是字符串格式)。
用户1332428
2018/07/30
8120
Python中math模块的使用
这些函数大部分的返回结果是浮点数,在代码中,浮点数小数点后面的位数是有限的,而二进制表示小数时很有可能会出现无限循环的小数,因此浮点数会有精度损失,不过,大多数情况下这并不影响我们使用。
Python碎片公众号
2021/02/26
1.4K0
Python中math模块的使用
我在ThoughtWorks中的敏捷实践
E项目是一个在线的物资跟踪监控系统。由ThoughtWorks团队为客户提供的一套完善的软件交付服务。
袁慎建@ThoughtWorks
2018/09/29
2.1K0
我在ThoughtWorks中的敏捷实践
Python中math模块的使用
这些函数大部分的返回结果是浮点数,在代码中,浮点数小数点后面的位数是有限的,而二进制表示小数时很有可能会出现无限循环的小数,因此浮点数会有精度损失,不过,大多数情况下这并不影响我们使用。
用户7886150
2020/12/24
1.2K0
Python 中argparse模块的使用
如果脚本很简单或临时使用,没有多个复杂的参数选项,可以直接利用sys.argv将脚本后的参数依次读取(读进来的默认是字符串格式)。
致Great
2018/08/02
8730
Python中的itchat模块的使用
@CSDN:https://blog.csdn.net/weixin_44510615/article/details/105340263
润森
2020/04/08
8600
Python中的itchat模块的使用
工具的使用|MSF中mimikatz模块的使用
MSF中的mimikatz模块,可以列举出系统中的各种凭据,以及执行一些mimikatz相关的命令。目前,该模块已经更新为功能更全的kiwi模块,传送门:工具的使用 | MSF中kiwi模块的使用
谢公子
2022/01/19
1.8K0
工具的使用|MSF中mimikatz模块的使用
工具的使用 | MSF中kiwi模块的使用
使用kiwi模块需要system权限,所以我们在使用该模块之前需要将当前MSF中的shell提升为system。提到system有两个方法,一是当前的权限是administrator用户,二是利用其它手段先提权到administrator用户。然后administrator用户可以直接getsystem到system权限。
谢公子
2022/01/19
1.7K0
工具的使用 | MSF中kiwi模块的使用
git 子模块在项目中的使用
在公司的项目中, 经常会遇到一些公共的内容, 多个项目中间通用的, 不可能每次都将整个代码复制一遍, 遇到这种情况有很多不同的解决方案, 一般来说, 项目是通过 git 来管理的, 巧了, git 也同样支持子模块.
烟草的香味
2020/11/09
1.2K0
git 子模块在项目中的使用
在 SwiftUI 下定制手势
不同于众多的内置控件,SwiftUI 没有采用对 UIGestureRecognizer(或 NSGestureRecognizer)进行包装的形式,而是重构了自己的手势体系。SwiftUI 手势在某种程度上降低了使用门槛,但由于缺乏提供底层数据的 API,严重制约了开发者的深度定制能力。在 SwiftUI 下,我们无法拥有类似构建全新 UIGestureRecongnizer 的能力。所谓的自定义手势,其实只是对系统预置手势的重构而已。本文将通过几个示例,演示如何使用 SwiftUI 提供的原生手段定制所需手势。
东坡肘子
2022/07/28
2.8K0
在 SwiftUI 下定制手势
python中的 uuid 模块使用示例
此模块提供不可变的 UUID 对象 (类 uuid) 和函数uuid1()、uuid3()、uuid4()、uuid5(),
py3study
2020/01/19
9130
在store中的index.js中引入其他模块
在Vue.js的项目中,store是一个非常重要的模块,它用于管理应用程序的状态。在store的index.js文件中,我们可以引入其他模块来扩展和组织我们的应用程序的状态逻辑。
GeekLiHua
2025/01/21
570
在store中的index.js中引入其他模块
[译] 依赖注入在多模块工程中的应用
总的来说,这不是一篇关于依赖注入的文章,也不是关于我们为什么选择库 X 而不是库 Y 的文章。 相反的,本文从依赖注入的角度介绍了我们对 Plaid 进行模块化实践的主要成果。
Android 开发者
2022/09/20
1.8K0
[译] 依赖注入在多模块工程中的应用
python中logger日志模块的使用
        一般,我们做一些简单的状态输出都会用print,但是这是最简单的情况下使用的工具。当我们的程序比较复杂的时候,我们会使用日志文件,特别是程序运行的时间特别久,中间可能存在一些问题,需要后面来看的时候。
钱塘小甲子
2019/01/28
1K0
nutz 中 子模块 参数的使用。
1.支持HttpSession,HttpServletRequest,HttpServletResponse三个参数
forxtz
2020/10/10
6410

相似问题

为什么我的定制模块没有被识别?

30

drupal商业中定制产品的模块

20

在定制模块的控制器响应中在textarea上使用CKEditor

20

定制Drupal商业捆绑模块

10

定制模块的index.php文件

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文