自然语言处理系列三十三》 语义相似度》同义词词林》算法原理

注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书 《自然语言处理原理与实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】

文章目录

自然语言处理系列三十三

同义词词林算法原理

同义词词林主要用来衡量词和词之间的语义相似度,是人工整理的一个词典。《同义词词林》(亦称《义类词典》,以下简称《词林》)是由梅家驹等学者编纂的一部对汉语词汇按语义全面分类的词典,收录词语近7万条。《词林》根据汉语的特点和使用原则,确定了词的语义分类原:以词义为主,兼顾词类,并充分注意题材的集中。它将词义分为大类、中类、小类三级,共分12个大类(A类为人,B类为物,C类为时间与空间,D类为抽象事物,E类为特征,F类为动作,G类为心理活动,H类为活动,I类为现象与状态,J类为关联,K类为助语,L类为敬语),94个中类,1 428个小类,小类下再以同义词原则划分词群,每个词群以一标题词立目,共3 925个标题词。《词林》语义结构可用树型结构来表示,如图8.1所示。

图8.1 《词林》语义空间

编纂《词林》的初衷是提供从词义查词的工具,以便从中挑选适当的词语。作为一个语义分类体系,它也存在一些局限,如词典收词数量有限、复合词收录很少、词典更新滞后等等。若直接采用它作为同义词词典,显然不能满足实际需要。本书进行同义词的挖掘,是利用《词林》语义体系,并且将《词林》作为同义词底表来实现的。这样不仅可以依据《词林》作为底表的功能,直接识别出大量的、以词素形式出现的同义词,还可以依据其作为语义体系的功能,挖掘出大量的复合词形式的同义词。

同义词词林扩展版的词典比较大,这里给大家截取前面一部分展示:

Aa01A01= 人 士 人物 人士 人氏 人选

Aa01A02= 人类 生人 全人类 新人

Aa01A03= 人手 人员 人口 人丁 口 食指 生齿 职员

Aa01A04= 劳力 劳动力 工作者 血汗

Aa01A05= 匹夫 个人 个体 局部 片面 私人 一面 个别 小我 小我私家 部分 一边 一壁 私家 单方

Aa01A06= 家伙 东西 货色 厮 崽子 兔崽子 狗崽子 小子 杂种 畜生 混蛋 王八蛋 竖子 鼠辈 小崽子 用具 器材 器械 对象 牲畜 货品 货物 物品 忘八 工具 牲口 器具 方向 目标 宗旨

Aa01A07= 者 手 匠 客 主 子 家 夫 翁 汉 员 分子 鬼 货 棍 徒 份子

Aa01A08= 每人 各人 每位 大家 人人 众人 大众

Aa01A09= 该人 此人 这人

Aa01B01= 人民 民 国民 公民 平民 黎民 庶 庶民 老百姓 苍生 生灵 生人 布衣 白丁 赤子 氓 群氓 黔首 黎民百姓 庶人 百姓 全民 全员 萌 黔黎 子民 匹夫 平易近 新人 选民

Aa01B02= 群众 大众 公众 民众 万众 众生 千夫 公家 全体 大家 人人 众人 专家 公共 大伙 团体 人民 集体 全数 所有 大师 全部 一概 悉数 满堂 一切 黎民 整体 合座 完全 十足 全豹 百姓 美满 总共 举座 理想 齐备 扫数 世人 内行 统统 通盘 公民 全面 具体 一共 整个 全盘 行家 各人 国民

Aa01B03# 良民 顺民

Aa01B04# 遗民 贱民 流民 游民 顽民 刁民 愚民 不法分子 孑遗 余存 难民 灾民

Aa01C01= 众人 人人 人们 专家 世人 大家 大师 行家 大众 各人 内行

Aa01C02= 人丛 人群 人海 人流 人潮

Aa01C03= 大家 大伙儿 大家伙儿 大伙 一班人 众家 各户 人人 大师 专家 行家 众人 民众 大众 各人 群众 公共 老手 内行 世人 巨匠 熟稔

Aa01C04= 们 辈 曹 等

Aa01C05@ 众学生

Aa01C06# 妇孺 父老兄弟 男女老少 男女老幼

Aa01C07# 党群 干群 军民 工农兵 劳资 主仆 宾主 僧俗 师徒 师生 师生员工 教职员工 群体 爱国志士 党外人士 民主人士 爱国人士 政群 党政群 非党人士 业内人士 工农分子 军警民 党政军民

Aa01D01@ 角色

Aa02A01= 我 咱 俺 余 吾 予 侬 咱家 本人 身 个人 人家 斯人 个体 局部 片面 私人 一面 个别 小我 小我私家 部分 一边 一壁 私家 单方

Aa02A02= 区区 仆 鄙 愚 鄙人 小人 小子 在下 不才 不肖 戋戋

Aa02A03@ 老子

Aa02A04= 老朽 老汉 老夫 老拙

Aa02A05@ 老娘

Aa02A06@ 愚兄

Aa02A07= 小弟 兄弟 昆仲 昆季 手足 伯仲 昆玉

Aa02A08= 奴 妾 妾身 民女

Aa02A09= 朕 孤 寡人

Aa02A10= 职 卑职 下官 奴婢 奴才 仆从 仆众 奴仆 奴隶 跟班 跟随 奴役 跟从

Aa02A11= 贫道 小道

Aa02A12@ 贫僧

Aa02A13@ 下臣

Aa02B01= 我们 咱 咱们 吾侪 吾辈 俺们 我辈 咱俩

Aa03A01= 你 您 恁 而 尔 汝 若 乃 卿 君 公

Aa03A02= 老兄 仁兄 世兄 兄长 大哥 年老 老大 垂老 老迈 年迈

Aa03A03= 老弟 贤弟 仁弟 兄弟 昆仲 昆季 手足 伯仲 昆玉

Aa03A04= 大嫂 大姐 老大姐

Aa03A05= 阁下 足下 驾 同志 老同志 旁边 左右 安排 控制 操纵 傍边 同道 驾御 摆布 当中 台端 掌握 把握 大驾 驾驭 尊驾 独揽

Aa03A06= 陛下 主公 大王 万岁

Aa03A07= 您老 你咯

Aa03B01= 你们 尔等

Aa03B02= 诸位 各位 诸君 列位

Aa04A01= 他 她 彼 其 渠 伊 人家

Aa04B01= 他们 她们 他俩 她俩

Aa05A01= 自己 自家 自个儿 自各儿 自身 本身 自我 本人 小我 我 自 己 己方 我方 私人 个人

Aa05B01= 别人 旁人 他人 人家

Aa05B02= 谁 哪个 哪位 张三李四 哪一个 张王赵李

Aa05B03@ 其他人

Aa05C01= 某人 某 或人

Aa05D01@ 任何人

Aa05E01@ 克隆人

Aa06A01= 谁 孰 谁人 谁个 何人 哪个 哪位 何许人也 那个 哪一个 阿谁

Aa06B01@ 有人

Ab01A01= 男人 男子 男子汉 男儿 汉子 汉 士 丈夫 官人 男人家 光身汉 须眉 壮汉 男士 夫君 外子 良人

Ab01A02= 爷儿 爷们 爷儿们

Ab01A03= 先生 子 君 郎 哥 小先生 教师 教员 老师 师长教师 师长 教授 教练 西宾 西席

Ab01B01= 女人 女子 女性 女士 女儿 女 娘 妇 妇女 妇道 妇人 女人家 小娘子 女郎 巾帼 半边天 娘子军 石女 红装 家庭妇女 农妇 才女 密斯 小姐 姑娘 少女

Ab01B02= 女流 女人家 妇道人家 娘儿们 妞儿

Ab01B03= 少妇 婆娘 婆姨 娘子 小娘子

Ab01B04= 姑娘 少女 丫头 千金 小姐 闺女 室女 姑子 黄花闺女 大姑娘 小姑娘 童女 老姑娘 春姑娘 密斯 蜜斯 女士 令嫒 掌珠 令媛 女郎 仙女 女仆 梅香 婢女 使女 丫鬟

同义词词林扩展版详细说明如下:

《同义词词林》的第一版和第二版的词表完全一样,收词 53,859 条。其中有很多的词已经很不常用,成为所谓的罕用词。参照多部电子词典资源,并按照人民日报语料库中词语的出现频度,只保留频度不低于 3(小规模语料的统计结果)部分词语,可剔除 14,706 个罕用词和非常用词。经过这样的处理,《同义词词林》还剩下 39,099 个词条。为了满足自然语言处理的需要,这样规模的词典显然是少了一些,可以说远远不够。为了扩充《同义词词林》,本实验室利用很多词语相关资源,并投入了大量的人力和物力,完成了一部具有汉语大词表的《哈工大信息检索研究室同义词词林扩展版》。最终的词表包含 77,343 条词语。《同义词词林》按照树状的层次结构把所有收录的词条组织到一起,把词汇分成大、中、小三类,大类有 12 个,中类有 97 个,小类有 1,400 个。每个小类里都有很多的词,这些词有根据词义的远近和相关性分成了若干个词群(段落)。每个段落中的词语有进一步分成了若干个行,同一行的词语要么词义相同(有的词义十分接近),要么词义有很强的相关性。例如,"大豆"、"毛豆"和 "黄豆"在同一行;"西红柿"和"番茄"在同一行;"大家"、"大伙儿"、"大家伙儿"在同一行。另外,"将官"、"校官"、"尉官"在同一行,"雇农"、"贫农"、"下中农"、"中农"、"上中农"、"富农"在同一行, "外商"、"官商"、"坐商"、"私商"也在同一行,这些词不同义,但很相关。为了将词义相关的行和同义的行区分开,词典《同义词词林》在行的左端加上"* *"作为标记。小类中的段落可以看作第四级的分类,段落中的行可以看作第五级的分类。这样,词典《同义词词林》就具备了 5 层结构。随着级别的递增,词义刻画越来越细,到了第五层,每个分类里词语数量已经不大,很多只有一个词语,已经不可再分,可以称为原子词群 、原子类或原子节点。不同级别的分类结果可以为自然语言处理提供不同的服务,例如第四层的分类和第五层的分类在信息检索 、文本分类 、自动问答等研究领域得到应用。有研究证明,对词义进行有效扩展,或者对关键词做同义词替换可以明显改善信息检索、文本分类和自动问答系统的性能。词典《同义词词林》中保留下来的 39,099 条词语也保留了原有的分层结构,而新增的 36,267 条词语没有这样的结构。对于这些词,按照《同义词词林》的结构体系进行分类,工作量十分巨大。分类的某些环节可以使用机器自动完成,但是自动完成的结果不是很理想,各个环节主要还是依靠人工来完成。

《同义词词林》只提供了三层编码,即大类用大写英文字母表示,中类用小写英文字母表示,小类用二位十进制整数表示。例如:"Ae 07 农民 牧民 渔民","Ae 07"是编码,"农民 牧民 渔民"是该类的标题。标题是由一个或者多个第四层的"段首(即每个段的第一个词)"组成。根据标题词可以知道小类有分成多少个第四级类,如图8.2所示。

图8.2 词典结构

为了使用上的方便,对于第四级和第五级的分类也需要编码。新增的第四级

和第五级的编码与原有的三级编码和并构成一个完整的编码,唯一的代表词典中

的出现的词语。如:

Ba01A02= 物质 质 素

Cb02A01= 东南西北 四方

Ba01A03@ 万物

Cb06E09@ 民间

Ba01B08# 固体 液体 气体 流体 半流体

Ba01B10# 导体 半导体 超导体

编码的方法说明如下:

第四级用大写英文字母表示,第五级用二位十进制整数表示。由于第五级的

分类结果需要特别说明,例如,有的行是同义词,有的行是相关词,有的行只有

一个词,可以分出具体的三种情况。在使用上,有时需要对这三种情况进行区别

对待,所以有必要再增加标记来分别代表着几种情形。具体的标记如表8.3所示。

表8.3词语编码表

图中的编码位是按照从左到右的顺序排列。第八位的标记有 3 种,分别是

"="、"#"、"@","="代表"相等"、"同义"。末尾的"#"代表"不等"、"同

类",属于相关词语。末尾的"@"代表"自我封闭"、"独立",它在词典中既没

有同义词,也没有相关词。

代码实战

HanLP本身就提供了语义相似度的方法,下一篇文章给大家演示代码。

总结

此文章有对应的配套新书教材和视频:

【配套新书教材】
《自然语言处理原理与实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】

新书特色:本书从自然语言处理基础开始,逐步深入各种NLP热点前沿技术,使用了Java和Python两门语言精心编排了大量代码实例,契合公司实际工作场景技能,侧重实战。

全书共分为19章,详细讲解中文分词、词性标注、命名实体识别、依存句法分析、语义角色标注、文本相似度算法、语义相似度计算、词频-逆文档频率(TF-IDF)、条件随机场、新词发现与短语提取、搜索引擎Solr Cloud和Elasticsearch、Word2vec词向量模型、文本分类、文本聚类、关键词提取和文本摘要、自然语言模型(Language Model)、分布式深度学习实战等内容,同时配套完整实战项目,例如对话机器人实战、搜索引擎项目实战、推荐算法系统实战。

本书理论联系实践,深入浅出,知识点全面,通过阅读本书,读者不仅可以理解自然语言处理的知识,还能通过实战项目案例更好地将理论融入实际工作中。

【配套视频】
自然语言处理NLP原理与实战 视频教程【陈敬雷】

视频特色:《自然语言处理NLP原理与实战》包含了互联网公司前沿的热门算法的核心原理,以及源码级别的应用操作实战,直接讲解自然语言处理的核心精髓部分,自然语言处理从业者或者转行自然语言处理者必听视频!

上一篇:自然语言处理系列三十二》 语义相似度》语义相似度概念及入门
下一篇:自然语言处理系列三十》文本相似度算法》余弦相似度》Java代码实现

相关推荐
陈苏同学5 分钟前
4. 将pycharm本地项目同步到(Linux)服务器上——深度学习·科研实践·从0到1
linux·服务器·ide·人工智能·python·深度学习·pycharm
唐家小妹8 分钟前
介绍一款开源的 Modern GUI PySide6 / PyQt6的使用
python·pyqt
吾名招财23 分钟前
yolov5-7.0模型DNN加载函数及参数详解(重要)
c++·人工智能·yolo·dnn
羊小猪~~40 分钟前
深度学习项目----用LSTM模型预测股价(包含LSTM网络简介,代码数据均可下载)
pytorch·python·rnn·深度学习·机器学习·数据分析·lstm
鼠鼠龙年发大财1 小时前
【鼠鼠学AI代码合集#7】概率
人工智能
Marst Code1 小时前
(Django)初步使用
后端·python·django
龙的爹23331 小时前
论文 | Model-tuning Via Prompts Makes NLP Models Adversarially Robust
人工智能·gpt·深度学习·语言模型·自然语言处理·prompt
工业机器视觉设计和实现1 小时前
cnn突破四(生成卷积核与固定核对比)
人工智能·深度学习·cnn
985小水博一枚呀1 小时前
【对于Python爬虫的理解】数据挖掘、信息聚合、价格监控、新闻爬取等,附代码。
爬虫·python·深度学习·数据挖掘
立秋67891 小时前
Python的defaultdict详解
服务器·windows·python