自然语言处理系列三十四》 语义相似度》同义词词林》代码实战

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

文章目录

自然语言处理系列三十四

HanLP自然语言处理工具包

HanLP提供了判断语义相似度的方法。HanLP是一个面向生产环境的多语种自然语言处理工具包,它基于PyTorch和TensorFlow 2.x双引擎,目标是普及落地最前沿的NLP技术。无论您是专家还是初学者,HanLP都可以让您能够轻松快速的构建、处理和"理解"大量文本的AI应用程序。HanLP 具备功能强大、易于使用、性能高效等特点。它可以进行中文分词、词性标注、命名实体识别、依存句法分析等多种自然语言处理任务。HanLP 在处理大规模文本数据时表现出色,能够快速准确地分析文本内容,为文本挖掘、信息检索、机器翻译等应用提供基础支持。

代码实战

HanLP本身就提供了语义相似度的方法,基于同义词词林实现代码如8.1所示。

【代码8.1】 SemanticsDemo.java

java 复制代码
package com.chongdianleme.job;
import com.hankcs.hanlp.dictionary.CoreSynonymDictionary;
/**
 * Created by 充电了么App - 陈敬雷
 * 充电了么App官网:http://chongdianleme.com/
 * 充电了么App - 专注上班族职业技能提升充电学习的在线教育平台
 * 语义相似度
*/
public class SemanticsDemo {
    public static void main(String[] args) {
        similarity("人物","人选");
        similarity("良民","大家伙儿");
        //输出结果:
        // 人物:人选=1.0
        //良民:大家伙儿=0.9649740171551757
    }

    /**
     * 计算两个词的语义相似度
     * @param word1
     * @param word2
     */
    public static void similarity(String word1,String word2) {
        double sim = CoreSynonymDictionary.similarity(word1, word2);
        if(!Double.isNaN(sim)) {
            System.out.println(word1+":"+word2+"="+sim);
        }
        else
        {
            System.out.println("结果为空");
        }
    }
}

同义词词林的词典扩展策略

同义词词林的词典是有限的,可以用Word2Vec词向量模型去发现和拓展新的词进去,为了保证精度建议采用机器+人工整理的方式。用Word2Vec词向量模型拓展新的词,再有人工确认是不是靠谱,之后再加入到词典。后面的章节我们会单独讲到Word2Vec。另外句子和段落间的语义相似度可以基于同义词词林的词的语义相似,通过加权平均的方式来计算整个句子和段落的整体相似度分值。

基于深度学习的语义相似度

基于同义词词林的语义相似度是比较简单的,下一篇文章介绍基于深度学习的语义相似度。

总结

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

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

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

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

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

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

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

上一篇:自然语言处理系列三十三》 语义相似度》同义词词林》算法原理
下一篇:自然语言处理系列三十五》 语义相似度》基于深度学习的语义相似度算法原理

相关推荐
coderSong256832 分钟前
Java高级 |【实验八】springboot 使用Websocket
java·spring boot·后端·websocket
远方16091 小时前
14-Oracle 23ai Vector Search 向量索引和混合索引-实操
数据库·ai·oracle
老胖闲聊1 小时前
Python Copilot【代码辅助工具】 简介
开发语言·python·copilot
Blossom.1181 小时前
使用Python和Scikit-Learn实现机器学习模型调优
开发语言·人工智能·python·深度学习·目标检测·机器学习·scikit-learn
Mr_Air_Boy1 小时前
SpringBoot使用dynamic配置多数据源时使用@Transactional事务在非primary的数据源上遇到的问题
java·spring boot·后端
曹勖之1 小时前
基于ROS2,撰写python脚本,根据给定的舵-桨动力学模型实现动力学更新
开发语言·python·机器人·ros2
豆沙沙包?2 小时前
2025年- H77-Lc185--45.跳跃游戏II(贪心)--Java版
java·开发语言·游戏
DFminer2 小时前
【LLM】fast-api 流式生成测试
人工智能·机器人
年老体衰按不动键盘2 小时前
快速部署和启动Vue3项目
java·javascript·vue
lyaihao2 小时前
使用python实现奔跑的线条效果
python·绘图