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

注:此文章内容均节选自充电了么创始人,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原理与实战》包含了互联网公司前沿的热门算法的核心原理,以及源码级别的应用操作实战,直接讲解自然语言处理的核心精髓部分,自然语言处理从业者或者转行自然语言处理者必听视频!

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

相关推荐
咖啡啡不加糖2 分钟前
暴力破解漏洞与命令执行漏洞
java·后端·web安全
风象南4 分钟前
SpringBoot敏感配置项加密与解密实战
java·spring boot·后端
DKPT15 分钟前
Java享元模式实现方式与应用场景分析
java·笔记·学习·设计模式·享元模式
前端双越老师22 分钟前
30 行代码 langChain.js 开发你的第一个 Agent
人工智能·node.js·agent
Percep_gan23 分钟前
idea的使用小技巧,个人向
java·ide·intellij-idea
缘来是庄23 分钟前
设计模式之迭代器模式
java·设计模式·迭代器模式
Liudef0630 分钟前
基于HTML与Java的简易在线会议系统实现
java·前端·html
Tomorrow'sThinker33 分钟前
[特殊字符] Excel 读取收件人 + Outlook 批量发送带附件邮件 —— Python 自动化实战
python·excel·outlook
东坡肘子38 分钟前
高温与奇怪的天象 | 肘子的 Swift 周报 #092
人工智能·swiftui·swift
JosieBook39 分钟前
【Java编程动手学】Java常用工具类
java·python·mysql