非主流自然语言处理——遗忘算法系列(一):算法概述
一、前言
这里“遗忘”不是笔误,这个系列要讲的“遗忘算法”,是以牛顿冷却公式模拟遗忘为基础、用于自然语言处理(NLP)的一类方法的统称,而不是大名鼎鼎的“遗传算法”!
在“遗忘”这条非主流自然语言处理路上,不知不觉已经摸索了三年有余,遗忘算法也算略成体系,虽然仍觉时机未到,还是决定先停一下,将脑中所积梳理成文,交由NLP的同好们点评交流。
曾与前总编刘江有过一面之缘,竟能围绕遗忘这个算法相谈甚欢,回想起来极是难得,本系列文章、基础算法源码、演示程序都将在CSDN首发,算是一些纪念吧。
二、遗忘算法原理
能够从未知的事物中发现关联、提炼规律才是真正智能的标志,而遗忘正是使智能生物具备这一能力的工具,也是适应变化的利器,“遗忘”这一颇具负能量特征的家伙是如何实现发现规律这么个神奇魔法的呢?
让我们从巴甫洛夫的狗说起:狗听到铃声就知道开饭了。
铃声和开饭之间并不存在必然的联系,我们知道之所以狗会将两者联系在一起,是因为巴甫洛夫有意的将两者一次次在狗那儿重复共现。所以,重复是建立关联的必要条件。
我们还可以想像,狗在进食的时候听到的声音可能还有鸟叫声、风吹树叶的沙沙声,为什么这些同样具备重复特征声音却没有和开饭建立关系呢?
细分辨我们不难想到:铃声和开饭之间不仅重复共现,而且这种重复共现还具备一个相对稳定的周期,而其他的那些声音和开饭的共现则是随机的。
那么遗忘又在其中如何起作用的呢?
1、所有事物一视同仁的按相同的规律进行遗忘;
2、偶尔或随机出现的事物因此会随时间而逐渐淡忘;
3、而具有相对稳定周期重复再现的事物,虽然也按同样的规律遗忘,但由于周期性的得到补充,从而可以动态的保留在记忆中。
在自然语言处理中,很多对象比如:词、词与词的关联、模板等,都具备按相对稳定重现的特征,因此非常适用遗忘来处理。
三、牛顿冷却公式
那么,我们用什么来模拟遗忘呢?
提到遗忘,很自然的会想到艾宾浩斯遗忘曲线,如果这条曲线有个函数形式,那么无疑是模拟遗忘的最佳建模选择。遗憾的是它只是一组离散的实验数据,但至少让我们知道,遗忘是呈指数衰减的。另外有一个事实,有的人记性好些,有的人记性则差些,不同人之间的遗忘曲线是不同的,但这并不会从本质上影响不同人对事物的认知,也就是说,如果存在一个遗忘函数,它首先是指数形式的,其次在实用过程中,该函数的系数并不那么重要。
这提醒我们,可以尝试用一些指数形式的函数来代替遗忘曲线,然后用实践去检验,如果能满足工程实用就很好,这样的函数公式并不难找,比如:退火算法、半衰期公式等。
有次在阮一峰老师的博客上看关于帖子热度排行的算法时,其中一种方法使用的是牛顿冷却定律,遗忘与冷却有着相似的过程、简洁优美的函数形式、而且参数只与时间相关,这些都让我本能想到,它就是我想要的“遗忘公式”。
在实践检验中,牛顿冷却公式,确实有效好用,当然,不排除有其他更佳公式。
四、已经实现的功能
如果把自然语言处理比作从矿砂中淘金子,那么业界主流算法的方向是从矿砂中将金砂挑出来,而遗忘算法的方向则是将砂石筛出去,虽然殊途但同归,所处理的任务也都是主流中所常见。
本系列文章将逐一讲解遗忘算法如何以O(N)级算法性能实现:
1、大规模语料词库生成
1.1、跨语种,算法语种无关,比如:中日韩、少数民族等语种均可支持
1.2、未登录词发现(只要符合按相对稳定周期性重现的词汇都会被收录)
1.3、领域自适应,切换不同领域的训练文本时,词条、词频自行调整
1.4、词典成熟度:可以知道当前语料训练出的词典的成熟程度
2、分词(基于上述词库技术)
2.1、成长性分词:用的越多,切的越准
2.2、词典自维护:切词的同时动态维护词库的词条、词频、登录新词
2.2、领域自适应、跨语种(继承自词库特性)
3、词权值计算
3.1、关键词提取、自动标签
3.2、文章摘要
3.3、长、短文本相似度计算
3.4、主题词集
4、共现词典生成(词云、知识图谱)
五、技术交流及业务
本系列文以介绍各项基础技术的实现为主,更多综合应用或项目开发,请移步入群或联系本人:
1、技术QQ群: 217947873
2、联系方式:
2.1、QQ:老憨 244589712
2.2、邮箱: gzdmcaoyc@163.com
非主流自然语言处理——遗忘算法系列(一):算法概述相关推荐
- 数据结构排序算法实验报告_[数据结构与算法系列]排序算法(二)
我的上一篇文章向大家介绍了排序算法中的冒泡排序.插入排序和选择排序.它们都是平均时间复杂度为 O(n^2) 的排序算法,同时还为大家讲解了什么是原地排序和什么是排序的稳定性.下图是这三种算法的比较,不 ...
- 趣学算法系列-贪心算法
趣学算法系列-贪心算法 声明:本系列为趣学算法一书学习总结内容,在此推荐大家看这本算法书籍作为算法入门, 原作者博客链接,本书暂无免费电子版资源,请大家支持正版,更多的案例分析请查看原书内容. 第二章 ...
- 优化算法系列-模拟退火算法(1)——基本原理枯燥版本
优化算法系列之模拟退火算法(1)--基本原理枯燥版本 推荐书籍--><智能优化算法及其MATLAB实例(第二版)> 知乎上的形象描述: 一个锅底凹凸不平有很多坑的大锅,晃动这个锅使得 ...
- 大数据与算法系列之算法性能分析
我们在敲出自己心爱的程序的时候,我们是否想过,自己程序的性能咋样! 今天,我们说一说对程序或者算法的性能分析! 算法复杂度 算法复杂度是算法性能最基本的评价标准,复杂度是一个算法的时间运行函数,常用大 ...
- 非主流自然语言处理——遗忘算法系列(二):大规模语料词库生成
一.前言 写这篇文时,突然想到一个问题,大家的词库都是从哪来的? 之所以会这么有些意外的问,是因为从没把词库当成个事儿:平时处理微博,就用程序跑一下微博语料获得微博词库:处理新闻,程序跑一下新闻 ...
- (转)非主流自然语言处理——遗忘算法系列(二):大规模语料词库生成
(经老憨本人允许,转载此文,原文地址:http://blog.csdn.net/gzdmcaoyc/article/details/50001801) 一.前言 写这篇文时,突然想到一个问题,大家的词 ...
- 非主流自然语言处理——遗忘算法系列(六):语义模型
[前言] 1.语义体系的建立对人工智能的意义,相信不用多说. 2.公开此文的目的,是因为此文所设计的语义模型包含的待解决任务量很大,寻求同好共同讨论交流. 3.版权说明 3.1.本文的版权归作者 ...
- 算法系列——弗洛伊德算法(Floyd)
本系列旨在用简单的人话讲解算法,尽可能避免晦涩的定义,读者可以短时间内理解算法原理及应用细节.我在努力! 本篇文章编程语言为Python,供参考. 弗洛伊德算法(Floyd) 典型最短路径算法.用于计 ...
- 搞定面试算法系列 | 分治算法三步走
戳蓝字"CSDN云计算"关注我们哦! 作者 | 江子抑 转自 | 编程拯救世界 主要思想 分治算法,即分而治之:把一个复杂问题分成两个或更多的相同或相似子问题,直到最后子问题可以简 ...
最新文章
- 用Java模拟网卡、声卡继承PIC接口,实现网卡、声卡能与主板连接
- testid oracle vue,Vue 组件单元测试究竟测试什么?
- 制打印如下所示的n行数字金字塔_一日一技:在Python中实现阿拉伯数字加上中文数字...
- 智齿客服Android集成流程,一种基于编程语言接入智齿客服的方法以及电子设备与流程...
- 26 | 红黑树(下):掌握这些技巧,你也可以实现一个红黑树
- cstring判断包含字符串_作为java程序员要知道的大厂常见的算法面试题:字符串的包含...
- datagrid sortname如何定义多列_如何实现一个小说分页的功能
- 招聘贴---这个很重要嘛
- AS3.0 侦听器传参的方法
- linux Sprintf中文乱码,Linux下printf、fprintf、sprintf的区别
- centos7下yum安装mysql_CentOS7下使用YUM安装MySQL5.6-Go语言中文社区
- 机器人基础之雅克比矩阵
- 有专门收C语言答案的软件吗,C语言二级考试题库APP
- Excel函数公式大全—IF家族函数
- 离散傅里叶变换matlab程序
- 计算机 随机分组的方法,临床试验中的随机分组方法.pdf
- SD和SDHC和SDXC卡的区别, class与u1/u3关系
- 使用模块定义文件(.def)文件生成dll
- 什么都学一点系列之鸿蒙开发Java版简易备忘录
- java实现生成水印照片