基于多重继承与信息内容的知网词语相似度计算 - 论文及代码讲解

论文:《基于多重继承与信息内容的知网词语相似度计算》-2017-张波,陈宏朝等 查看
代码:https://github.com/yaleimeng/Final_word_Similarity

总体感受:
太乱了,有可能是之前没怎么接触这块。
看论文,搞不懂怎么回事,义项、义原是啥,怎么这么多定义,到头来还是不懂两个词的相似度怎么计算,比哈工大词林那篇论文复杂多了。
看代码,函数调来调去,一会这个判断一会那个判断,不明白为啥要这么干,光读词表就看着很费劲。
(程序可能还有bug,调试时有时不能正确运行)

概念

义原:义原是描述义项的最基本单位,分为事件、实体、属性、属性值、数量、数量值、次要特征、语法、动态角色和动态属性等 10 大类,2000 版的知网共有 1618 个义原。 通过上下位关系,所有的知网义原组成一个树状义原层次体系,如图 1 所示。
义项:知网中所有的义项(又称“概念”)并不是组织为树状概念结构,而是采用“义原”对义项进行描述定义。
在这里插入图片描述
如图 2 所示,由于一个词语可能有多个义项,每一个义项可能有多个上位节点
(抽象概念或实概念),所以体现了义项网的多重继承特征, 但这种多重继承仅表现在叶子节点(义项) 上。
在这里插入图片描述
义项存储在glossary.txt文件中,如:
在这里插入图片描述
义原存储在WHOLE.DAT中,如:
在这里插入图片描述

example.py

for w1, w2 in zip(MC30_A, MC30_B):下面加上一些调试信息:

    for w1, w2 in zip(MC30_A, MC30_B):
        #debug
        if w1!='起重机':
            continue
        hybrid = HybridSim.get_Final_sim(w1, w2)
        print('使用混合方法计算,相似度为:', hybrid)

这样可以比较“起重机”和“器械”之间的相似度,进入get_Final_sim()函数,设置断点。

HybridSim.py

在这里插入图片描述
进入cls.how_net.calc(w1, w2)函数。

howNet.py

在这里插入图片描述
查看sw1和sw2:
通过单词找出更多相关信息
在这里插入图片描述
sw1只有一个值
sw2有两个值。

sw2,对应词表文件glossary.txt为:
在这里插入图片描述
变量结果为:
在这里插入图片描述

在sw1和sw2中计算所有组合的相似度,取最大值:
在这里插入图片描述
对应论文:
在这里插入图片描述
进入calcGlossarySim()函数:
在这里插入图片描述
对应论文:
在这里插入图片描述
进入calcSememeSimFirst(w1, w2)函数,实际上是calcSememeSim(self, w1, w2, )
在这里插入图片描述
对应论文:
在这里插入图片描述
进入calcSememeDistance(self, w1, w2):#计算义原之间的距离(义原树中两个节点之间的距离,具体算法要看刘群的论文)

getSememeByZh(w1),根据中文词汇找到义原信息。
在这里插入图片描述
根据该节点,找到父亲节点(从WHOLE.DAT文件算出来的),一直找上去:
//这样两个子节点就可以找到公共父亲节点,如果节点离根节点越远,说明两个词越相似。
在这里插入图片描述
WHOLE.DAT文件相关内容:

  872  machine|机器                         871
  871  implement|器具                       859
  859  artifact|人工物                      834
  834  inanimate|无生物                     815
  815  physical|物质                        814
  814  thing|万物                           813
  813  entity|实体                          813

最后一步步返回,计算出cls.how_net.calc(w1, w2),两个词的相似度。

完成。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值