专栏首页PPV课数据科学社区非主流自然语言处理——遗忘算法系列(二):大规模语料词库生成

非主流自然语言处理——遗忘算法系列(二):大规模语料词库生成

一、前言

  本文介绍利用牛顿冷却模拟遗忘降噪,从大规模文本中无监督生成词库的方法。

二、词库生成

    算法分析,先来考虑以下几个问题

    问:目标是从文本中抽取词语,是否可以考虑使用遗忘的方法呢?

    答:可以,词语具备以相对稳定周期重复再现的特征,所以可以考虑使用遗忘的方法。这意味着,我们只需要找一种适当的方法,将句子划分成 若干子串,这些子串即为“候选词”。在遗忘的作用下,如果“候选词”会周期性重现,那么它就会被保留在词库中,相反如果只是偶尔或随机出现,则会逐渐被遗 忘掉。

    问:那用什么方法来把句子划分成子串比较合适呢?

    答:考察句中任意相邻的两个字,相邻两字有两种可能:要么同属于一个共同的词,要么是两个词的边界。我们都会有这样一种感觉,属于同一个词的相邻两字的“关系”肯定比属于不同词的相邻两字的“关系”要强烈一些。

    数学中并不缺少刻划“关系”的模型,这里我们选择公式简单并且参数容易统计的一种:如果两个字共现的概率大于它们随机排列在一起的概率,那么我们认为这两个字有关,反之则无关。

    如果相邻两字无关,就可以将两字中间断开。逐字扫描句子,如果相邻两字满足下面的公式,则将两字断开,如此可将句子切成若干子串,从而获得“候选词”集,判断公式如下图所示:

    公式中所需的参数可以通过统计获得:遍历一次语料,即可获得公式中所需的“单字的频数”、“相邻两字共现的频数”,以及“所有单字的频数总和”。

    问:如何计算遗忘剩余量?

    答:使用牛顿冷却公式,各参数在遗忘算法中的含义,如下图所示:

    牛顿冷却公式的详情说明,可以参考阮一峰老师的博文《基于用户投票的排名算法(四):牛顿冷却定律》。

    问:参数中时间是用现实时间吗,遗忘系数取多少合适呢?

    答:a、关于时间:

      可以使用现实时间,遗忘的发生与现实同步。

      也可以考虑用处理语料中对象的数量来代替,这样仅当有数据处理时,才会发生遗忘。比如按处理的字数为计时单位,人阅读的速度约每秒5至7个字,当然每个人的阅读速度并不相同,这里的参数值要求并不需要特别严格。

      b、遗忘系数可以参考艾宾浩斯曲线中的实验值,如下图(来自互联网)

      我们取6天记忆剩余量约为25.4%这个值,按每秒阅读7个字,将其代入牛顿冷却公式可以求得遗忘系数:

 我们取6天记忆剩余量约为25.4%这个值,按每秒阅读7个字,将其代入牛顿冷却公式可以求得遗忘系数:

注意艾宾浩斯曲线中的每组数值代入公式,所得的系数并不相同,会对词库的最大有效容量产生影响。

三、该算法生成词库的特点

    3.1、无监督学习

    3.2、O(N)级时间复杂度

    3.3、训练、执行为同一过程,可无缝处理流式数据

    3.4、未登录词、新词、登录词没有区别

    3.5、领域自适应:领域变化时,词条、词频自适应的随之调整

    3.6、算法中仅使用到频数这一语言的共性特征,无需对任何字符做特别处理,因此原理上跨语种。

四、词库成熟度

  由于每个词都具备一个相对稳定的重现周期,不难证明,当训练语料达到一定规模后,在遗忘的作用下,每个词的词频在衰减和累加会达到平衡,也即衰减的速度与增加的速度基本一致。成熟的词库,词频的波动相对会比较小,利用这个特征,我们可以衡量词库的成熟程度。

五、源码(C#)、演示程序下载

  使用内附语料(在“可直接运行的演示程序”下可以找到)生成词库效果如下:

往期回顾:

非主流自然语言处理——遗忘算法系列(一):算法概述

本文分享自微信公众号 - PPV课数据科学社区(ppvke123)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-09-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 非主流自然语言处理——遗忘算法系列(一):算法概述

    一、前言 ? 这里“遗忘”不是笔误,这个系列要讲的“遗忘算法”,是以牛顿冷却公式模拟遗忘为基础、用于自然语言处理(NLP)的一类方法的统称,而不是大名鼎鼎的“...

    小莹莹
  • 【案例】大数据挖出微博抑郁患者,研究结果经医学机构确认准确度

    在微博上经常抱怨“去死”,或许会被甄别为抑郁患者。近期,一项“利用社交媒体数据挖掘识别抑郁倾向人群”的研究成果在网络引发热议,来自哈尔滨工业大学的研究人员称,通...

    小莹莹
  • 用R进行文本分析初探——以《红楼梦》为例

    一.写在前面的话~   刚吃饭的时候同学问我,你为什么要用R做文本分析,你不是应该用R建模么,在我和她解释了一会儿后,她嘱咐我好好写这篇博文,嗯为了娟儿同学,细...

    小莹莹
  • 如何在Ubuntu 14.04上配置Apache以使用自定义错误页面

    Apache是世界上最受欢迎的Web服务器。它功能强大,功能丰富且灵活。在设计网页时,有助于自定义那些客户将看的所有内容,当然这些内容也包括他们请求不可用内容时...

    新巴子
  • PyMC3和Theano代码构建贝叶斯深度网络,61页PPT探索贝叶斯深度学习以及实现

    【导读】近日,Novartis的数据科学家Eric J. Ma进行了一次关于贝叶斯深度学习理论和实现的演讲,演讲题目是《An Attempt At Demyst...

    企鹅号小编
  • 【swupdate文档 四】SWUpdate:使用默认解析器的语法和标记

    SWUpdate使用库“libconfig”作为镜像描述的默认解析器。 但是,可以扩展SWUpdate并添加一个自己的解析器, 以支持不同于libconfi...

    zqb_all
  • Go基础之--排序和查找操作

    排序操作主要都在sort包中,导入就可以使用了 import("sort") 常用的操作 sort.Ints:对整数进行排序 sort.Strings:对字符串...

    coders
  • Android开发笔记(四十六)手机相关事件

    有一类事件必须依赖于手机信号方能触发,如果把设备中的sim卡拔出,或者该设备本身不支持sim卡(如ipad),那么这类事件将永远不会被触发。在Android...

    用户4464237
  • 数学归纳法

      传统上,根据前提所考察对象范围的不同,把归纳推理分为完全归纳推理和不完全归纳推理。完全归纳推理考察了某类事物的全部对象,不完全归纳推理则仅仅考察了某类事物的...

    陈树义
  • 高可用集群基本概念与heartbeat文本配置接口

    一、高可用集群基本概念: 什么是高可用集群: 所谓高可用集群,就是在出现故障时,可以把业务自动转移到其他主机上并让服务正常运行的集群构架 > 高...

    小小科

扫码关注云+社区

领取腾讯云代金券