潘金莲改变了历史吗 - PostgreSQL舆情事件分析应用

标签

PostgreSQL , 独立事件分析 , 舆情分析 , 舆情事件 , 相关事件 , 行为轨迹 , 独立事件的流水相关性分析 , PostgreSQL服务端编程实践


背景

潘金莲改变了历史吗?

网上的段子

潘金莲撑开窗户,撑窗户滴棍子掉下去了,于是西门庆看到了,于是他们相遇了。如果潘金莲同学当时没有开窗,那么她就不会遇到西门庆。   

如果没有遇到西门庆,那么她就不会被迫出轨,那样武松哥哥就不会怒发冲冠为红颜,这样他就不会奔上梁山。   

武松就不会奔上梁上,不会奔上梁山之后,哪怕水泊梁山107将依旧轰轰烈烈,但是宋江和方腊的战役,方腊也不会被武松单臂擒住。   

只要武松治不了方腊,枭雄方腊就能取得大宋的江山。   

只要方腊取得了大宋的江山,就不会有靖康耻,不会有偏安一隅,不会有金兵入关。   

金兵不入关,就不会有后来的大清朝。   

没有大清朝,当然也不会有后来的闭关锁国,没有慈禧太后。   

没有慈禧太后,没有闭关锁国,自然也不会有八国联军侵略中国啊,不会有神马鸦片战争啊。   

没有这些杀千刀的战争和不平等条约,中国说不定凭借五千年的文化首先就发展资本主义了。   

发展了资本主义,发展到今天,说不定中国早就超过了美国、小日本神马的,赶超了几百年了。已经是最发达的最强悍的国家了。   

所以,谁穿越一下告诉潘金莲,你有事没事开神马窗户啊!!!

类似蝴蝶效应,历史是很有趣的事情。

实际上在我们的生活中也有这样的现象或者需求,比如某些业务系统,会记录事件,流水账那样。

然后业务可能想知道某类事件发生后,接下来发生了什么,比如说房价调控措施出台后的事件,是不是有大量资金涌入股票市场?

说道这里,我要把PostgreSQL数据库搬出来,到底怎么实现上述需求呢?

模拟现实

1. 构建事件输入的表结构

create table event(
id serial8 primary key,   -- 自增序列,用于区分事件的先后顺序
class text,   -- 事件类型
info text,    -- 事件描述
crt_time timestamp        -- 事件发生的时间
);

2. 插入1000万事件记录,其中5000个事件的种类。

insert into event (class, info , crt_time) select (5000*random())::int::text, 'test', clock_timestamp() from generate_series(1,10000000);

3. 针对事件种类,创建索引

create index idx_event_class on event (class);

需求

查询某个事件发生后,若干个接下来发生的事件

使用函数可以轻松实现这个需求

create or replace function f(
sql text,   -- 查询要分析的目标事件对应的ID
v_class text,   -- 目标事件的类别
v_n int8,   -- 要查看多少个接下来发生的事件
v_limit int  -- 分析几次事件,如果要输出所有的,那么可以输入一个较大值。
) returns setof event as $$
declare
  v_id int8;
begin
  for v_id in execute sql loop
    return query select * from event where id>=v_id order by id limit v_n+1;
    v_limit := v_limit - 1;
    if v_limit<=0 then
      return;
    end if;
  end loop;
end;
$$ language plpgsql strict;

查询举例

查询事件类别为1的事件,它后面发生的2个事件,输出10次分析结果。

postgres=# select * from f('select id from event where class=$$1$$', '1', 2, 10);
  id   | class | info |          crt_time
-------+-------+------+----------------------------
  1592 | 1     | test | 2017-03-31 15:07:23.77348
  1593 | 3032  | test | 2017-03-31 15:07:23.773483
  1594 | 3409  | test | 2017-03-31 15:07:23.773486
  2784 | 1     | test | 2017-03-31 15:07:23.777265
  2785 | 2819  | test | 2017-03-31 15:07:23.777268
  2786 | 87    | test | 2017-03-31 15:07:23.777271
 12176 | 1     | test | 2017-03-31 15:07:23.807489
 12177 | 2586  | test | 2017-03-31 15:07:23.807491
 12178 | 4101  | test | 2017-03-31 15:07:23.807494
 19398 | 1     | test | 2017-03-31 15:07:23.83072
 19399 | 1179  | test | 2017-03-31 15:07:23.830723
 19400 | 4237  | test | 2017-03-31 15:07:23.830726
 19571 | 1     | test | 2017-03-31 15:07:23.831296
 19572 | 4368  | test | 2017-03-31 15:07:23.831299
 19573 | 2313  | test | 2017-03-31 15:07:23.831302
 24708 | 1     | test | 2017-03-31 15:07:23.847794
 24709 | 1327  | test | 2017-03-31 15:07:23.847797
 24710 | 4584  | test | 2017-03-31 15:07:23.847799
 29756 | 1     | test | 2017-03-31 15:07:23.864234
 29757 | 4386  | test | 2017-03-31 15:07:23.864237
 29758 | 3044  | test | 2017-03-31 15:07:23.864239
 30224 | 1     | test | 2017-03-31 15:07:23.865765
 30225 | 4704  | test | 2017-03-31 15:07:23.865768
 30226 | 332   | test | 2017-03-31 15:07:23.865771
 32004 | 1     | test | 2017-03-31 15:07:23.871554
 32005 | 219   | test | 2017-03-31 15:07:23.871557
 32006 | 3548  | test | 2017-03-31 15:07:23.871559
 36472 | 1     | test | 2017-03-31 15:07:23.886097
 36473 | 640   | test | 2017-03-31 15:07:23.8861
 36474 | 1139  | test | 2017-03-31 15:07:23.886103
(30 rows)

利用以上结果,我们就可以知道发生了事件1之后,都发生了其他什么事件。

至于你要拿这些结果进行接下来的分析,可以使用类似关键词的热点分析方法,或者使用PostgreSQL提供的MADlib机器学习库,又或者使用plR进行分析。

总之你肯定有方法找出事件之间的关联关系。

非独立事件的相关性分析

因为前面分析的都是独立事件,即本身就没有相关性的,所以需要通过函数的方法来输出结果。

对于非独立事件,比如说用户逛淘宝的点鼠标的行为,在点了某个商品后,又点了哪些其他商品。

对于非独立事件,在结构设计上,就有关联字段,比如USERID,所以我们可以很方便的进行关联。

使用PostgreSQL递归调用,就可以对非独立事件进行轨迹分析。

例子

《PostgreSQL 递归查询CASE - 树型路径分组输出》

《用PostgreSQL找回618秒逝去的青春 - 递归收敛优化》

《distinct xx和count(distinct xx)的变态递归优化方法 - 索引收敛(skip scan)扫描》

《PostgreSQL 使用递归SQL 找出数据库对象之间的依赖关系》

《PostgreSQL 递归死循环案例及解法》

《PostgreSQL 递归查询一例 - 资金累加链》

《PostgreSQL Oracle 兼容性之 - WITH 递归 ( connect by )》

《递归优化CASE - group by & distinct tuning case : use WITH RECURSIVE and min() function》

《递归优化CASE - performance tuning case :use cursor\trigger\recursive replace (group by and order by) REDUCE needed blockes scan》

小结

PostgreSQL的递归语法、plpgsql编程,可以很好的满足舆情分析中事件前后事件的分析需求。

再利用PostgreSQL的热点词分析,聚类分析或者使用PostgreSQL提供的MADlib机器学习库,又或者使用plR进行分析。找出事件之间的关联关系。

时间: 2024-09-13 02:05:21

潘金莲改变了历史吗 - PostgreSQL舆情事件分析应用的相关文章

甘婷婷称找到了潘金莲的"魂儿"性感写真曝光

"潘金莲"甘婷婷(左)与"李师师"安以轩(右) 甘婷婷:饰演潘金莲没有尺度 随着新版<水浒>潘金莲人选的落定,甘婷婷排除了人们一直以来的多种猜测,比如请范冰冰出演,最终由新人甘婷婷的胜出堪称冷门.甘婷婷此前在<落地请开手机>.<江湖兄弟>等多部戏中出演过女一号,但名头上还是个新人.甘婷婷表示,自己把原著的相关章节读了不下三十遍,参考了各种版本的潘金莲评点,才逐渐找到了"魂儿","不能把潘金莲理解为一个

武松爱上潘金莲?编剧回应:这个真没有(图)

新<水浒>剧照 本报讯(记者耿愿 实习生张含)自2日晚新版<水浒传>登陆湖北电视台后,就在观众间炸开了锅.有人评价人物丰满.选角合适,更符合现代审美,也有人不满剧中暧昧多.缺豪气,戏称其为"水腐传",总之褒贬不一.但相对于前两部名著翻拍, 网友们对新<水浒>的态度明显缓和.目前最大的争议便是武松与潘金莲那扑朔迷离的"叔嫂情愫",不过编剧温豪杰昨日回应得斩钉截铁,"这个真没有". 网友:雷早已远去 腐才是王道 颇

后RSA2017思考:改变了历史轨迹的信息安全?!

"丢失一个钉子,坏了一只蹄铁: 坏了一只蹄铁,折了一匹战马: 折了一匹战马,伤了一位骑士: 伤了一位骑士,输了一场战斗: 输了一场战斗,亡了一个帝国." --引自西方民谣 从"破坏.挑战"到"变革.动力" 先从今年RSA大会的主题谈起吧."POWER OF OPPORTUNITY",这是今年的大会主题."OPPORTUNITY"(机遇)一词的后半部分"UNITY"(团结.一致)更是被大会

《水浒》甘婷婷为潘金莲平反抹去“风骚”烙印

新版潘金莲有望超旧版 新浪娱乐讯 目前在个地方台热播的新版<水浒传>引来无数 网友的热议.而与前两部名著翻拍得到评价不同的是喜忧各参半,英雄剧里的几位女星更是赚足眼球.被外界称"太美丽"的甘婷婷版潘金莲也是扭转"风骚"烙印. 与老版的<水浒>相比,在新的剧集中,清纯闷骚路线的潘金莲,以及潘金莲与武松的"叔嫂情"等都引来了观众的热议.有观众表示,"叔嫂情愫"太过,而也有"力顶派"表示要

甘婷婷美艳度压范冰冰新潘金莲绝色照

中新网9月18日电 新版电视剧<水浒>在水浒影视城举行了新闻发布会,坊间猜测已久的众位梁山好汉的演员人选一一揭开面纱,潘金莲.李师师.孙二娘.扈三娘.林娘子也都浮出水面.潘金莲的人选一直有多种猜测,还曾传出欲请范冰冰出演的消息,最终花落新人甘婷婷堪称爆出冷门.1986年出生的甘婷婷毕业于中央戏剧学院表演系,此前在<落地请开手机>.<江湖兄弟>.<河内·河内>等多部大戏中出演过角色.还有传闻说她学生时代已经拍摄了100多条广告.[page][page]

天上掉下一个潘金莲新潘金莲甘婷婷来历成谜

甘婷婷在发布会现场. 新快报9月18日报道 新<水浒>潘金莲的人选一直有多种猜测,还曾传出欲请范冰冰出演的消息,最终花落新人甘婷婷堪称爆出冷门.据说,甘婷婷此前在<落地请开手机>.<江湖兄弟>.<河内·河内>等多部大戏中出演过角色.还有传闻说她学生时代已经拍摄了100多条广告. 有报道说,制片方在潘金莲这个角色的遴选上曾伤透脑筋,之所以选择甘婷婷,一方面因为她在外形条件上.年龄上.气质上与角色比较贴近,另一方面是因为认可甘婷婷之前塑造的很多"坏女人

新版潘金莲“纯情加闷骚”甘婷婷:情窦初开

甘婷婷和陈龙 前天上午,江苏城市台协作体第25届年会暨"回味经典,开启春天"2010年度江苏电视剧颁奖典礼在镇江举行.颁奖典礼上,谍战剧<内线>等10部电视剧荣获2010年度江苏观众最喜爱的十佳电视剧,而香港演员刘恺威和内地女星马苏分别凭借在<娘妻>和<大西南剿匪记>中的出色表演,荣获2010年度江苏观众最喜爱的男女演员奖.电视剧<新水浒传>获得了2011年观众最值得期待的电视剧奖. 新武松陈龙与老虎"同居" 去年新版

潘金莲与燕青成一对《生死迷局》碰撞激情(图)

"潘金莲燕青"成一对 <生死迷局>碰撞激情 新浪娱乐讯 由严宽.甘婷婷.郑晓宁等联袂主演的谍战悬疑剧<生死迷局>正在东方卫视热播,近日收视率一路长红.严宽和甘婷婷继新版<水浒>后再度合作,在剧中饰演一对年轻时彼此深爱.多年后重逢却陷入父子抢一女的纠结恋人.在这部节奏紧张的谍战大戏里,除了紧张的悬疑气氛.火爆的动作场面,剧中严宽(Kevin)与饰演自己父亲的郑晓宁争夺甘婷婷的禁忌辛辣剧情也吸引了大家的眼球. 在新版<水浒>中分别饰演&quo

潘金莲提前来袭甘婷婷穿越《兄弟》打擂台(图)

甘婷婷版潘金莲 甘婷婷版潘金莲被称最清纯. 甘婷婷与黄海波<兄弟>剧照. 新浪娱乐讯 多部作品同时亮相卫视的人气女星甘婷婷因"潘金莲"提前 曝光再度备受关注.从<兄弟>的歌女萧雨玲,到即将播出的<水浒>中闷骚的潘金莲,甘婷婷人气飙升更是多部作品同时亮相. 目前在山东.四川.贵州.云南四家卫视同时播出的<兄弟>收视一路飙升,而大部分观众表示,<兄弟>男人戏中女演员同样很出彩.而女星甘婷婷更是凭借其漂亮的外表和精湛的演技获得一致好