转眼间又快到春节了,去年的春节由于疫情原因促生了云拜年,经过众多白衣天使的艰苦奋战,今年春节整体环境好了很多,但疫情防控仍然不能松懈。

春节期间免不了给七大姑八大姨拜年的传统习俗,在中国的亲戚的关系"错综复杂",有时候一些亲戚该怎么称呼可能都不太清楚。这时,机智的程序员创造出了亲戚关系计算器。

目前网上各种版本都已比较成熟,在此就不做过多介绍了,本文主要介绍亲戚计算器实现中的一些语法与其他小细节。并对以下的python版本进行一些细节上的优化。
参考版本:https://zhuanlan.zhihu.com/p/56144138

算法实现思路:
通过将输入的关系拆分为对应的关系链(关系链由最基本的原子称呼组成,表1),进而对关系链进行简化,从而得到最终的关系表示,最后直接查找"关系链-称呼"映射即可得到最终称呼。

具体的实现方式与思想可参考:
https://www.jianshu.com/p/74290f1ae838
https://zhuanlan.zhihu.com/p/56144138

算法定义了如下12中基本的原子称呼。
表1:原子称呼表

符号 全称 含义 符号 全称 含义
f father 父亲 xb x brother 兄弟
m mother 母亲 ob older brother 哥哥
h husband 丈夫 lb little brother 弟弟
w wife 妻子 xs x sister 姐妹
s son 儿子 os older sister 姐姐
d daughter 女儿 ls little sister 妹妹

同时为了减小性别、年龄带来的影响,还额外定义了一些修饰符。
表2:关系修饰符

符号 含义 符号 含义
1 男性 0 女性
&o 年长 &l 年幼
# 隔断 [a|b] 并列

通过观察"关系链-称呼"(_data变量),不难发现以w开头的关系,其性别sex都是男性(妻子的…),而以h开头的关系,其性别sex都是女性(丈夫的…)。

因此,在我们将关系拆分成所有可能的关系链后,我们可以对subject的性别做一个简单的推断,以此提高最终关系计算的准确率。
亲测有效~

selectors = self.get_selectors(gx.strip())
result = []  # 匹配结果
for s in selectors:  # 遍历所有可能性# 根据关系,简单推断当前人的性别if sex == -1:if re.search(r'[,]h', s):sex = 0elif re.search(r'[,]w', s):sex = 1

另外,还发现关系链简化过程中,正则匹配的顺序会影响最终的关系推断,需要注意。

目前修改后的亲戚关系计算器已集成到个人公众号【NLPer笔记簿】,欢迎关注体验~

输入格式如下,主要包括【找称呼】和【查关系】两大类。
其中,1表示我是男性,0表示我是女性

【找称呼1】老婆的妈妈
我可能称呼对方:岳母
对方可能称呼我:女婿【找称呼0】老公的妈妈
我可能称呼对方:婆婆
对方可能称呼我:儿媳妇【找称呼1】老公的妈妈
抱歉!未找到相关称呼~【查关系1】岳母
我与对方的关系:老婆的妈妈【查关系0】婆婆
我与对方的关系:老公的妈妈【查关系1】婆婆
抱歉!未找到相关关系~

【找称呼】的输出结果为我可能称呼对方对方可能称呼我,由于性别及年龄的不确定性,输出可能会存在多个称呼。
【查关系】的输出结果为我与对方的关系,同样输出结果可能存在多种关系。

对于抱歉!未找到相关称呼~抱歉!未找到相关关系~说明无结果输出。
以上面例子中【找称呼1】老公的妈妈来说,男性(1表示我是男性)是没有老公这一说的。同理,【查关系1】婆婆中,男性(1表示我是男性)也是没有婆婆这一说的。因此,无结果输出。

【其他工具】亲戚关系计算器相关推荐

  1. js计算器代码加减乘除_理不清亲戚关系,程序员直接写了一个亲戚关系计算器,来试试?...

    Java识堂,一个高原创,高收藏,有干货的微信公众号,欢迎关注 春节到了,免不了要去七大姑八大姨家拜年,顺便接受长辈们的关怀.有时偶然遇到许久没见过的远房亲戚,叫不出合适的称谓就尴尬了:或者即便被家人 ...

  2. JavaScript,js的亲戚计算器,中国亲戚关系计算器

    JavaScript,js的亲戚计算器,中国亲戚关系计算器 工具简介 由于工作生活节奏不同,如今很多关系稍疏远的亲戚之间来往并不多.因此放假回家过年时,往往会搞不清楚哪位亲戚应该喊什么称呼,很是尴尬. ...

  3. python版亲戚关系计算器

    2019独角兽企业重金招聘Python工程师标准>>> 春节到了,免不了要去七大姑八大姨家拜年,顺便接受长辈们的关怀.有时偶然遇到许久没见过的远房亲戚,叫不出合适的称谓就尴尬了:或者 ...

  4. 最新家庭亲戚关系计算器微信小程序源码

    正文: 亲戚关系计算器微信小程序源码是一款为避免遇到亲戚却不知道该怎么称呼时遇到的尴尬情况而开发的 由于社会节奏的快速发展,现在的关系不像以前一样经常联系和维护,导致了有些自己家的一些亲戚也疏远了很多 ...

  5. 【Python项目】Python实现一个亲戚关系计算器,过年回家再也不要怕叫错人了 | 附带源码

    前言 halo,包子们上午好 一个简单的中国亲戚关系计算器 python实现版本 每年的春节,都会有一些自己几乎没印象但父母就是很熟的亲戚,关系凌乱到你自己都说不清. 今年趁着春节在家没事情干,正好之 ...

  6. Java实战之亲戚关系计算器(swing版)(1)——项目简述

    项目简述: 该项目是一个通过Java实现的计算亲戚关系的小程序,该小程序具有通过亲戚关系链计算称呼的功能.将介绍如何如何通过Java来实现该项目的全部过程. 使用软件: IntelliJ IDEA 2 ...

  7. java亲戚称呼计算器_python版亲戚关系计算器

    春节到了,免不了要去七大姑八大姨家拜年,顺便接受长辈们的关怀.有时偶然遇到许久没见过的远房亲戚,叫不出合适的称谓就尴尬了:或者即便被家人提示了叫法,但依然不知道和自己是什么关系. 于是就有机智的程序员 ...

  8. python生日计算器_python版亲戚关系计算器

    春节到了,免不了要去七大姑八大姨家拜年,顺便接受长辈们的关怀.有时偶然遇到许久没见过的远房亲戚,叫不出合适的称谓就尴尬了:或者即便被家人提示了叫法,但依然不知道和自己是什么关系. 于是就有机智的程序员 ...

  9. 一个简单的中国亲戚关系计算器 实现思路整理

    每年的春节,都会有一些自己几乎没印象但父母就是很熟的亲戚,关系凌乱到你自己都说不清. 今年趁着春节在家没事情干,正好之前知道有中国亲戚关系计算器,想着自己实现一下,特此记录. 算法实现与介绍 由于本人 ...

  10. Python实现一个简单的中国亲戚关系计算器,可能自己多少都有点混乱吧

    相关文件 对了大家可以关注小编的公众号哟~~ 公众号 Python日志 会不定时的更新一些好玩的资源的哟 导语 每年的春节,都会有一些自己几乎没印象但父母就是很熟的亲戚,关系凌乱到你自己都说不清. 今 ...

最新文章

  1. main方法的格式讲解
  2. explain 之 table || explain 之 type
  3. 行为型模式:状态模式
  4. iphone数据迁移到新iphone_Mac专业iPhone数据恢复软件----Omni Recover
  5. Spring cloud eureka 入门使用及指导说明(单机篇)
  6. C/C++混编“未定义的引用”的解决一例
  7. hdu 4128 Running relay (线性规划转半平面交)
  8. STM32L051低功耗STOP模式下RTC唤醒
  9. html解压zip文件怎么打开方式,zip文件是什么文件,如何打开zip格式的文件?
  10. django.db.utils.DataError: (1366, “Incorrect string value: ‘\\xE5\\x85\\xAD\\xE5\\x8D\\x83‘ for colu
  11. 框架学习(1)——service层,dao层和service实现类进行数据库操作
  12. LeetCode-179-最大数
  13. HITNet: Hierarchical Iterative Tile Refinement Network for Real-time Stereo Matching--Google
  14. java不能安装_java环境安装之不能安装exe文件
  15. 计算机四级——网络工程 易错点总结
  16. 关于自动驾驶高精定位的几大问题
  17. 一次java.lang.ClassNotFoundException: org.apache.ibatis.session.SqlSession异常解决
  18. 力扣416 二维数组解法
  19. 两条线段相切弧_怎样绘制一个与两条直线相切的圆弧
  20. ESP32-C3 LVGL(未完成)

热门文章

  1. prolog寻找三角形个数
  2. 【面经】Thoughtworks软件开发
  3. 为你的域名添加子域名(二级域名)并绑定网站
  4. fms 集群方法测试
  5. Jenkins 初体验
  6. 电脑重装系统找不到计算机了,戴尔电脑重装系统后找不到硬盘或找不到引导设备怎么办?...
  7. cattee翻译_钻机词汇中英翻译
  8. 全日制大专计算机专业一天几节课,大学一节课多长时间 一天上几节
  9. pmp采购管理--合同类型
  10. Re-ranking Person Re-identification with k-reciprocal Encoding