Monthly Archives: February 2012

图像边缘检测常用算子

 

一阶微分算子:

clip_image002

Roberts 算子考虑图像的2*2邻域,是最简单的边缘检测算子,算法过程简述:

  1. 遍历图像(除去上边缘和左边缘),对每个像素做Roberts模板运算。
  2. 将结果保存到目标图像,结束。

Sobel算子考察的是3*3邻域,由两个卷积核组成,见上图,算法过程简述:

  1. 遍历图像(除去边缘,防止越界),对每个像素做Sobel模板卷积运算。
  2. 比较两个计算结果的大小,取较大者复制到目标图像,结束。

Prewitt算子和Sobel算子类似,所不同的是选用不同的模板而已,算法过程相同。

Krisch算子同样考究3*3邻域,所不同的是选用了八个卷积核,见上图,算法过程简述:

  1. 遍历图像(除去边缘,防止越界),对每个像素做Krisch模板卷积运算。
  2. 比较八个计算结果的大小,取较大者复制到目标图像,结束。

二阶微分算子:

两种Laplacian模板

clip_image004 clip_image006

Gauss-Lanlancian算子

clip_image008

 

Laplacian 算子是二阶导数边缘算子,考察的是3*3邻域,上图是两种比较常用的模板,算法简述如下:

  1. 遍历图像(除去边缘,防止越界),对每个像素做Laplancian模板卷积运算,注意是只做其中的一种模板运算,并不是两个。
  2. 复制到目标图像,结束。

Gauss-Laplacian考察的是5*5的邻域,检测的同时,引入了滤波,是噪声得以平滑,上图是一种常用的算子,算法简述。

  1. 遍历图像(除去边缘,防止越界),对每个像素做Gauss -Laplancian模板卷积运算。
  2. 复制到目标图像,结束。

Canny边缘检测是非常重要的一种边缘检测算法,主要过程如下:

  1. 用高斯滤波器平滑图像。。
  2. 用一阶偏导的有限差分来计算梯度的幅值方向

计算梯度作用模板,遍历像素,进行模板运算即可。

clip_image010

幅值和方向:

clip_image012
clip_image014

其中,Phi 表示是幅值,Theta 是方向,用图像副本进行保存。

对梯度幅值进行非极大值抑制;

为确定边缘,必须保留局部梯度最大的点,而抑制非极大值(NMS)。

clip_image016
解决办法是,利用梯度的方向:

已经求出Theta 的值,梯度的方向用于非极大值的抑制,将梯度角离散化到0,1,2,3中的一个(通过线性映射),采用近似的算法。知道了梯度角,也就知道了梯度线方向。

邻域的中心像素M与沿着梯度线的两个像素相比。如果M的梯度值不比沿梯度线的两个相邻像素梯度值大,则令M=0。

用双阈值算法检测和连接边缘。

减少假边缘段数量的典型方法是对N[i,j]使用一个阈值。将低于阈值的所有值赋零值。但问题是如何选取阈值?

解决方法

双阈值算法。双阈值算法对非极大值抑制图象作用两个阈值τ1和τ2,且2τ1≈τ2,从而可以得到两个阈值边缘图象N1[i,j]和N2[i,j]。由于N2[i,j]使用高阈值得到,因而含有很少的假边缘,但有间断(不闭合)。双阈值法要在N2[i,j]中把边缘连接成轮廓,当到达轮廓的端点时,该算法就在N1[i,j]的8邻点位置寻找可以连接到轮廓上的边缘,这样,算法不断地在N1[i,j]中收集边缘,直到将N2[i,j]连接起来为止。

来源:

http://wenku.baidu.com/view/ec365cdad15abe23482f4dbd.html

python 变量类型判断

[python]>>> class myclass():
…     pass

>>>
>>> a=myclass()
>>> type(a).__name__
‘instance’
>>> type(a).__class__
<type ‘type’>
>>> a.__class__
<class __main__.myclass at 0x7fa6f7d6a470>
>>> myclass.__name__
‘myclass’
>>> a.__class__.__name__
‘myclass’
>>> isinstance(a,myclass)
True
>>> a.__class__.__name__ == myclass.__name__
True<strong id="internal-source-marker_0.5831385764759034">
>>> </strong>[/python]

获得用户反馈的几种工具

下面的几种工具对网站获得用户反馈很有帮助。

Themeforest item comments

clip_image001

这是一个网站主题设计获得用户反馈的有效工具。

Uservoice

clip_image0026

Uservoice是一款关系用户功能需求的工具。它让用户给自己喜欢的功能投票。用户只有几次投票的机会,所以用户在投票前会想想这个投票是不是值得的。

GetSatisfaction

clip_image003

也许你见过一些网站使用 GetSatisfaction.就是在网页一遍一个竖条上写着“feedback”。 GetSatisfaction 可以让你的用户反馈想法,功能需求,普通问题,或者只是表扬一下。功能很强大,只是有点儿复杂,也许大的社区会更合适用它。

Forums

clip_image0046

论坛 (比如 phpBBBBpress) 是很好获取用户反馈和提供支持的方法。论坛的优势是大多数人都熟悉了这种方式,不用再学写的界面操作。

Facebook

clip_image005

用Facebook管理支持和反馈也很有意义。跟论坛类似,只不过大家都已经有了账号。一个好的用facebook做支持的例子 Cadca template. 缺点是不能想控制论坛一样自由。

Twitter

clip_image0066

Twitter 是通知用户产品更新的很好方式。不过不是所有人都愿意在上面反馈,或者创建一个账号来反馈。

Wufoo

clip_image007

Wufoo可以创建简单的用户调查,只需要几秒钟就可以填写完。

Polls

clip_image0086

PollDaddy, 是调查用户对一个功能是否感兴趣的不错的方式。

Email

古老却必不可少的方式

结合国情,新浪微博等社交网络对收集用户反馈,扩大产品影响力是很有帮助的。

参考链接:9 ways to manage user feedback

如何管理用户反馈

社交媒体通过跟用户沟通为小公司提供了惊人的机会。从Twitter到Facebook再到Get Satisfaction,包括自己网站的用户支持,现在能够获得比以往任何时候都更丰富的用户反馈。但是伴随大量的用户反馈,同时也带来了管理和答复的负担。
社交媒体能让用户快速/广泛地发表关于产品或公司的意见和想法,所以对用户的反馈即时合适地做出回应确保用户满意是很重要的。管理用户反馈已经成为一种艺术了。

用户反馈的类型

我们先看看现有的用户反馈都有哪些类型吧,这里先假设你能够收集到各种各样的反馈.

  1. 赞扬。这应该是大家最愿意得到的反馈了。当有人真心表示自己的产品好用时,感觉非常不错。这类反馈并不需要全部回复,但是合适的时间用合适的表达能增加现有用户的满意度。用户满意通常会成为有力的宣传。
  2. 问题。或许最重要的一类反馈就是支持需求,也就是用户对公司或产品或服务有意见或使用问题,这类反馈应该被提升到最高优先级。
  3. 咨询。这类反馈包括售前问题/关于公司的问题/商业实践,或者需求建议。如果回应得当,就有机会把咨询的人转为客户。
  4. 需求。永远不要承诺用户反馈的需求,比如一个新的功能,除非你知道这个需求正在开发中。但是这里要注意表达得当。

还有一类反馈没有提及,就是有一类人只是对说关于你的产品,公司甚至你自己的坏话感兴趣。他们只是为了气你。最好忽略这类信息。但是记住,不是所有负面反馈都是没事儿找事儿,但是所有没事儿找事儿的信息都是负面的。

如何回应用户反馈

在回复是,要记住,即便是负面的反馈,仍然那是反馈。人家还是花费时间写了自己的反馈,虽然没有要求人家那么做,这就要感谢人家。一个很好的做法就是在回复的开头就先表示感谢。虽然在别人说自己很差劲儿时还要表示感谢,会比较艰难,但是要不要把这次交流变得积极起来,取决于你。
对用户反馈的回复永远应该是针对个人的。回复时直接写明是回复给谁,而不要想一下子回复给很多人。针对个人的回复会比那种针对多人的回复对用户更有意义,至少感觉上会很好。

在回复中最好引用用户反馈的观点,他们的赞扬、难题、疑问或需求,花点儿时间从他们的角度考虑问题,这样你的回复会更有意义。你不需要非得赞同反馈的观点,但也要意识到他们的观点不是一定错误的。保持冷静,从用户的角度出发看问题,你的回复会更受重视,结果也会更令人愉快,即便你给的答复明显不是他们希望的。
永远诚实。如果有些东西时不能更客户分享的,直接说出来,千万不要故意模棱两可或避开不谈,甚至欺骗。请记住,社交媒体给你的用户的是一个扩音器,不诚实不会是好的选择。

如何跟踪用户反馈

关于跟踪用户反馈,大概有两类观点。一种说应该跟踪用户反馈的所有信息。记录反馈的类型,是关于什么的,把这些都记录到数据库中。这样更容易发现问题的重要点。比如,你开了一家软件公司,如果一大批用户都要求有某个功能,这个功能也许就是你应该添加的。或者如果很多用户都说你的程序中不知道某个设置在哪儿,也许你就应该重新设计一下界面,或整理一下用户文档了。
另外一种观点认为,不用记录跟踪这些反馈。随着很多反馈的涌入,不用记录也能看到那些问题是重要的,因为当很多用户抱怨一个问题时,你想不去关心都不行了。对于有超大量反馈的情况,这也许是一种实际点儿的选择.

翻译自:How to Manage Customer Feedback

获取google给出的1000个搜索以外的结果

google网页搜索的结果只会给出最多1000条结果,虽然实际搜出了很多。想要得到更多的结果,暂时我想到两种方法:

1.使用google app engine 提供的搜索api,api中开放了搜索结果,所以可以通过调用这些api来得到更多的结果。这也是对写代码更友好的方式。

2.用google高级搜索,指定url中包含的内容,虽然最多还是只有1000条,但是可以根据url中的特定内容分成多次搜索。比如搜索新浪用户,因为新浪用户url中都是以数字来标示的,所以可以指定用户编号,来限定搜索范围,这样把用户编号多次划分进行搜索就可以了。

image

借助google写简单爬虫,爬取新浪,亚马逊等网站用户信息

爬取一些网站的用户数据是挺好玩儿的一件事儿,可以拿来做点儿分析什么的。除了自己写爬虫外,其实可以用google来偷点儿懒。google 有很多高级用法,这里暂时只使用site 。site + 要搜索的用户信息页url的前缀就可以了。

比如新浪用户的页面的url是:weibo.com/u/xxxxx-user-id

使用google采集新浪用户的结果如下,搜索:site:weibo.com/u/

sina-user-info-search

从图中可以看到google说大约有214000条结果,虽然比新浪实际用户量差远了,不过这些都是很google认为最活跃的用户,先搜他们应该是值得考虑的。

不过google网页搜索给出的结果最多只能看到1000条,想要看到更多的内容,就得换种方式了:获取GOOGLE给出的1000个搜索以外的结果

一直对爬虫比较干兴趣,刚使用scrapy(python)写了爬取豆瓣用户的电影,音乐,书籍,小站等信息的爬虫,不过还没有跑起来。使用本文的方法会方便很多,不过google对新用户和不活跃的用户很多都没有收录,所以考虑结合google和要爬网站的结构来写爬虫应该是不错的选择。

顺便看看,使用这种方法搜索亚马逊用户信息的结果:可以搜到约16500000条用户信息

image

参考:Amazon Users’ info Crawler

正则表达式示例及常见应用

“^/d+$”  //非负整数(正整数 + 0)
“^[0-9]*[1-9][0-9]*$”  //正整数
“^((-/d+)|(0+))$”  //非正整数(负整数 + 0)
“^-[0-9]*[1-9][0-9]*$”  //负整数
“^-?/d+$”    //整数
“^/d+(/./d+)?$”  //非负浮点数(正浮点数 + 0)
“^(([0-9]+/.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*/.[0-9]+)|([0-9]*[1-9][0-9]*))$”  //正浮点数
“^((-/d+(/./d+)?)|(0+(/.0+)?))$”  //非正浮点数(负浮点数 + 0)
“^(-(([0-9]+/.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*/.[0-9]+)|([0-9]*[1-9][0-9]*)))$”  //负浮点数
“^(-?/d+)(/./d+)?$”  //浮点数
“^[A-Za-z]+$”  //由26个英文字母组成的字符串
“^[A-Z]+$”  //由26个英文字母的大写组成的字符串
“^[a-z]+$”  //由26个英文字母的小写组成的字符串
“^[A-Za-z0-9]+$”  //由数字和26个英文字母组成的字符串
“^/w+$”  //由数字、26个英文字母或者下划线组成的字符串
“^[/w-]+(/.[/w-]+)*@[/w-]+(/.[/w-]+)+$”    //email地址
“^[a-zA-z]+://(/w+(-/w+)*)(/.(/w+(-/w+)*))*(/?/S*)?$”  //url
/^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/   // 年-月-日
/^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/   // 月/日/年
“^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$”   //Emil
“(d+-)?(d{4}-?d{7}|d{3}-?d{8}|^d{7,8})(-d+)?”     //电话号码
“^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$”   //IP地址

匹配中文字符的正则表达式: [/u4e00-/u9fa5]
匹配双字节字符(包括汉字在内):[^/x00-/xff]
匹配空行的正则表达式:/n[/s| ]*/r
匹配HTML标记的正则表达式:/<(.*)>.*<///1>|<(.*) //>/
匹配首尾空格的正则表达式:(^/s*)|(/s*$)
匹配Email地址的正则表达式:/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*
匹配网址URL的正则表达式:^[a-zA-z]+://(//w+(-//w+)*)(//.(//w+(-//w+)*))*(//?//S*)?$
匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
匹配国内电话号码:(/d{3}-|/d{4}-)?(/d{8}|/d{7})?
匹配腾讯QQ号:^[1-9]*[1-9][0-9]*$

元字符及其在正则表达式上下文中的行为:

/ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个后向引用、或一个八进制转义符。

^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的Multiline 属性,^ 也匹配 ’/n’ 或 ’/r’ 之后的位置。

$ 匹配输入字符串的结束位置。如果设置了 RegExp 对象的Multiline 属性,$ 也匹配 ’/n’ 或 ’/r’ 之前的位置。

* 匹配前面的子表达式零次或多次。

+ 匹配前面的子表达式一次或多次。+ 等价于 {1,}。

? 匹配前面的子表达式零次或一次。? 等价于 {0,1}。

{n} n 是一个非负整数,匹配确定的n 次。

{n,} n 是一个非负整数,至少匹配n 次。

{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。在逗号和两个数之间不能有空格。

? 当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。

. 匹配除 “/n” 之外的任何单个字符。要匹配包括 ’/n’ 在内的任何字符,请使用象 ’[./n]’ 的模式。
(pattern) 匹配pattern 并获取这一匹配。

(?:pattern) 匹配pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。

(?=pattern) 正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。

(?!pattern) 负向预查,与(?=pattern)作用相反

x|y 匹配 x 或 y。

[xyz] 字符集合。

[^xyz] 负值字符集合。

[a-z] 字符范围,匹配指定范围内的任意字符。

[^a-z] 负值字符范围,匹配任何不在指定范围内的任意字符。

/b 匹配一个单词边界,也就是指单词和空格间的位置。

/B 匹配非单词边界。

/cx 匹配由x指明的控制字符。

/d 匹配一个数字字符。等价于 [0-9]。

/D 匹配一个非数字字符。等价于 [^0-9]。

/f 匹配一个换页符。等价于 /x0c 和 /cL。

/n 匹配一个换行符。等价于 /x0a 和 /cJ。

/r 匹配一个回车符。等价于 /x0d 和 /cM。

/s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于[ /f/n/r/t/v]。

/S 匹配任何非空白字符。等价于 [^ /f/n/r/t/v]。

/t 匹配一个制表符。等价于 /x09 和 /cI。

/v 匹配一个垂直制表符。等价于 /x0b 和 /cK。

/w 匹配包括下划线的任何单词字符。等价于’[A-Za-z0-9_]’。

/W 匹配任何非单词字符。等价于 ’[^A-Za-z0-9_]’。

/xn 匹配 n,其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。

/num 匹配 num,其中num是一个正整数。对所获取的匹配的引用。

/n 标识一个八进制转义值或一个后向引用。如果 /n 之前至少 n 个获取的子表达式,则 n 为后向引用。否则,如果 n 为八进制数字 (0-7),则 n 为一个八进制转义值。

/nm 标识一个八进制转义值或一个后向引用。如果 /nm 之前至少有is preceded by at least nm 个获取得子表达式,则 nm 为后向引用。如果 /nm 之前至少有 n 个获取,则 n 为一个后跟文字 m 的后向引用。如果前面的条件都不满足,若 n 和 m 均为八进制数字 (0-7),则 /nm 将匹配八进制转义值 nm。

/nml 如果 n 为八进制数字 (0-3),且 m 和 l 均为八进制数字 (0-7),则匹配八进制转义值 nml。

/un 匹配 n,其中 n 是一个用四个十六进制数字表示的Unicode字符。

匹配中文字符的正则表达式: [u4e00-u9fa5]

匹配双字节字符(包括汉字在内):[^x00-xff]

匹配空行的正则表达式:n[s| ]*r

匹配HTML标记的正则表达式:/<(.*)>.*</1>|<(.*) />/

匹配首尾空格的正则表达式:(^s*)|(s*$)

匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*

匹配网址URL的正则表达式:http://([w-]+.)+[w-]+(/[w- ./?%&=]*)?

利用正则表达式限制网页表单里的文本框输入内容:

用正则表达式限制只能输入中文:onkeyup=”value=value.replace(/[^u4E00-u9FA5]/g,”)” onbeforepaste=”clipboardData.setData(‘text’,clipboardData.getData(‘text’).replace(/[^u4E00-u9FA5]/g,”))”

用正则表达式限制只能输入全角字符: onkeyup=”value=value.replace(/[^uFF00-uFFFF]/g,”)” onbeforepaste=”clipboardData.setData(‘text’,clipboardData.getData(‘text’).replace(/[^uFF00-uFFFF]/g,”))”

用正则表达式限制只能输入数字:onkeyup=”value=value.replace(/[^d]/g,”) “onbeforepaste=”clipboardData.setData(‘text’,clipboardData.getData(‘text’).replace(/[^d]/g,”))”

用正则表达式限制只能输入数字和英文:onkeyup=”value=value.replace(/[W]/g,”) “onbeforepaste=”clipboardData.setData(‘text’,clipboardData.getData(‘text’).replace(/[^d]/g,”))”

方法1:

function   keyup(num,obj,show)
        {
            var   intopictitleinfos   =   document.getElementById(show);
            var   input   =   document.getElementById(obj);
            var   last   =   num-obj.value.replace(/[^/x00-/xff]/g,”aa”).length;
            if(obj.value.replace(/[^/x00-/xff]/g,”aa”).length <num)   {
            intopictitleinfos.innerText=”目前为”+obj.value.replace(/[^/x00-/xff]/g,”aa”).length+”个字符,还可以输入”+last+”个”;
            }
            else   {intopictitleinfos.innerText=”已经输入了50个汉字或者100个半角英文,不能再输入了!”;
            }
        }

<input type=”text” maxlength=100 onkeyup=”keyup(100,this, “intopictitleinfo “)” onbeforepaste=”keyup(100,this, “intopictitleinfo “)” / >

<span style=”color: #FF6600″ id=”intopictitleinfo” >请控制在50个汉字以内 [ 100个半角英文 ] </span >

 

原文链接:http://blog.csdn.net/lifeizhuhai/article/details/1957578

windows上安装mysql的python接口MySQLdb

MySQLdb的官方代码是在linux系统开发的,其windows上安装会有安装错误,虽然根据错误信息可以一步步改好,不过我还是喜欢简单点儿,毕竟这不是我最初要做的事儿。

 

一步步的做法:Install MySQL for Python (MySQLdb) on Windows

一步的做法:http://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python,windows安装包

这个网站整理了大量开源的python库,都是为windows整理的

腾讯赞助数据挖掘和知识发现竞赛 KDD杯2012,比赛将使用腾讯用户数据

KDD杯ACM Special Interest Group on Knowledge Discovery and Data Mining组织的数据挖掘和知识发现竞赛,每年举行一次。KDD杯2012由腾讯赞助,Kaggle主持。

KDD历年的比赛主题很广,从粒子物理学到用户关系预测都有。今年KDD主题将关注社交媒体。

今年的比赛分两块:

1. 预测腾讯微博上给用户推荐的某项内容会不会被用户点击。腾讯微博现在有两亿注册用户,每天产生四千万条消息。

2. 根据用户数据和查询,预测广告的点击率。训练数据将使用腾讯旗下搜索引擎,搜搜的数据

“From Tencent, we encourage you to use these data fully for your algorithmic innovations and computational discoveries, and make breakthrough discoveries in science and industrial problems.

I hope you enjoy the competition, and wish you a great success!”

Gordon Sun (Ph.D.)
Chair of the Organizing Committee, Chief Scientist of Tencent Inc.

想想腾讯的用户数据,这场比赛也值得关注。这些数据会在3月1号开放!

另外,Kaggle是一个数据挖掘领域著名的竞技平台,里面举行的比赛奖金颇丰。

发现互联网数据中的知识与情报

信息从稀缺到过量的转变带来了广泛影响,企业主们将更多注意力转向如何利用信息发掘商业机会和商业价值,规避经营风险,揭示企业未来的发展方向,并希望通过利用更有效的架构,管理、分析海量信息,预测统计数据和采集其他具有可行性的信息,并帮助企业做出下一步行动的决策。

以往,我们将这一类工作称之为数据挖掘(Data mining)或数据采矿、数掘发现。它是数据库知识发现(Knowledge-Discovery in Databases, KDD)中的一个步骤。数据挖掘一般是指从大量的数据中自动搜索隐藏于其中的有着特殊关系性的信息的过程,并通过统计、在线分析处理、情报检索、机器学习、专家系统和模式识别等诸多方法来实现上述目标。

数据挖掘技术早已成功地应用于传统数据库领域,现在,我们对于数据挖掘应用于互联网数据,这样的一些特殊数据源的应用也看到了希望,并且有一些人和机构正在做出相应的研究并发展出了相关的技术和应用。

  传统数据挖掘

数据挖掘是信息技术自然进化的结果。数据库功能的发展见证了其进化的过程,从数据收集和数据库创建到数据管理(包括数据存储和提取,数据库事务处理)直至到数据分析与理解(涉及数据仓库和数据挖掘)。

“数据丰富,但信息缺乏”,快速增长的海量数据收集、存放在大型和大量数据库中,没有强有力的工具,理解它们已经远远超出了人的能力。收集大量数据的大型数据库变成了“数据坟墓”,而数据挖掘工具将数据坟墓转换成为了知识“金块”。

典型的数据挖掘系统主要由以下几部分组成:数据库、数据仓库或其它信息库,数据库或数据仓库服务器,知识库、数据挖掘引擎,模式评估模块和用户界面。

在实施数据挖掘之前,先制定采取什么样的步骤,每一步都做什么,达到什么样的目标是必要的,有了好的计划才能保证数据挖掘有条不紊的实施并取得成功。很多软件供应商和数据挖掘顾问公司投提供了一些数据挖掘过程模型,来指导他们的用户一步步的进行数据挖掘工作。一般的数据挖掘步骤包括定义商业问题、建立数据挖掘模型、 分析数据、准备数据、 建立模型、评价模型和实施。

数据挖掘能帮助企业改进理解客户行为的能力。相应地,这种更好地理解也有助于企业更准确瞄准目标市场并使活动更符合客户需求、想法、态度和期望。例如,从超级市场的售货数据中分析发现,购买纸尿裤的顾客经常同时也购买啤酒,而经常在超级市场中这两种商品并不是摆放在一起,利用数据挖掘得到情报后,超市调整了这两种商品的摆放位置。

互联网数据挖掘

互联网发展的同时,也引发了数据处理需求的高速增长。IDC最新“数字宇宙”研究结果显示,全世界的信息量每两年以超过翻番的速度增长,2011年将产生和复制1.8ZB的海量数据,其增长速度超过摩尔定律。视频、图片、音频等等非结构化媒体数据的应用越来越频繁,社交网络的不断增长和壮大,甚至于结构化数据个体容量和个体数量也在迅速飙升。

企业将更多的关注放到了外部,而非内部,与制定“策略”有关的资讯,我们必须有组织地从外部环境获得,包括市场、顾客及非顾客、本身产业及其他产业的科技、全球金融环境及变动中的全球经济,这些才是企业创造成果的领域。

将数据挖掘技术应用到互联网这个巨大的数据库上,理论上可行,但是由于互联网自身的特点,也使它面临一些需要克服的技术难点。

1、海量。互联网上的数据是十分庞大的,而这种庞大的数据还是动态的,并且增长速度惊人。

2、碎片化。超文本先天具有表达不连续、片段化的特征,web2.0使信息发布在时间、空间上也更加趋于分散。

3、全天候。随时随地产生数据,7×24小时数据流,信息不再以网页文件的形式存在。

4、非结构。非结构化数据量大,由于文本、图片、视频等形式存在,需要更多的智能分析手段支持。

EMC公司首席市场官Jeremy Burton曾经表示:“大量杂乱无章的信息无休止地增加,带来了无穷无尽的机会,将促使社会、技术、科学和经济发生根本性改变。信息是企业最重要的资产,大数据正在促使企业改变信息管理方式,并从信息中挖掘出更大的价值。”

全球一体化经济体系,影响企业经营和竞争环境发生变化的因素日趋复杂,企业的灵活性与敏捷性变得重要,这就要求更多关注外部,并提高对外部变化的相响应速度。如何从海量信息中发掘出有价值的知识和情报将是一个长久的话题。

 国外互联网数据挖掘应用

数据挖掘技术互联网应用的巨大需求,引发相关新的获取、搜索、发现和分析工具应运而生,他可以帮助企业获得有关非结构化数据的深入信息。

clip_image001[4]

Kontagent:帮助社会化软件开发的社交分析平台供应商

Kontagent 是个帮助社会化软件开发者分析用户行为的公司,他们最近宣布分析程序已经有了超过一亿名的用户数据,这一数字与一年前比翻了三倍。

Kontagent的实时平台能够根据地理位置、年龄分组、性别、用户参与时间、社交活动交互作用等参数,为Facebook应用开发者、游戏厂商和发行商提供详细的人口统计数据。新版本还允许开发者追踪和优化广告投放、用户扩散、应用内结构、虚拟商品和货币化等等。

目前Kontagent追踪的应用数超过1000个,每月的活跃用户突破1.5亿,每天提交的信息超过10亿条,它的客户包括EA、华纳兄弟、Popcap、育碧、Gaia和A&E等。

clip_image002[4]

Collective Intellect:基于社会化媒体数据的Social CRM服务商

总部位于科罗拉多州波尔德市的Collective Intellect用文本挖掘软件(Text mining software)审查了Twitter、Facebook、MySpace及诸多博客和留言板上的帖子,以此来帮助企业了解用户对其产品的评论。该公司的软件运用一套算法来浏览文本,并总结出人们以何种语气在讨论什么。

它不仅限于像谷歌关键词检索一般,同时它也可解释其含义。公司技术总裁格雷格·格林斯特里特(Greg Greenstreet)说:“‘苹果’一词便是个好例证。它可以指代一家科技公司,也可以指水果。”集体智慧的软件通过观察在相似语境中一个词语的其他用法来对这些含义加以区分。因此,它可以和人一样做出判断与联想。格林斯特里特说:“如果我说‘史蒂芬·乔布斯’,我们的软件便和您一样,知道我说的是哪家公司。”

clip_image003[4]

DataSift:基于Twitter数据的数据挖掘服务商

DataSift已经开始发出alpha测试邀请,使用Alpha测试版服务,开发人员、社交媒体监测公司、营销人员、品牌可以获得过去60天的Twitter消息,并能够分析和过滤数据,而不仅仅是进行关键字搜索。alpha主要功能包括过滤流定义语言(FSDL,Filtered Stream Definition Language)。这是DataSift的过滤引擎使用的一种编程语言,使用这种语言,你可以编写相当复杂的规则,定义哪种类型的信息需要跟踪。比方说,你可以基于内容、Twitter用户名、Twitter关注者、个人资料信息,或Tweet位置进行过滤。

过滤流定义语言有一个有趣的功能,即能够在现有规则基础上建立新的“超级规则”。你还可以分享你的规则,让其他人在此基础上编写更多规则。这个工具的另外一个好处是,它不仅可以搜索Twitter数据,还可以搜索MySpace、WordPress和Six Apart的数据。

国内互联网数据挖掘应用

国外已有多家厂商开始着眼于互联网数据挖掘,以求得帮助企业打开互联网数据宝库的“大门”。但是,在国内由于语言文化的差异,中文信息化处理一直远远落后于英文以及其他语种,其中的中文分词技术则是中文信息自动化处理技术发展的主要瓶颈。

据了解,目前由海量信息科技有限公司(简称:海量)研发的中文分词技术是目前唯一被广泛应用的分词产品,海量以“砌词”为突破口,博采众长各个击破,采用复方概念平衡各算法,有效地提高了未登录词的识别率,降低了分词歧义的干扰。

分词技术是中文自然语言理解最基本的前提,也是中文信息从“数据时代”向“情报时代”进程中的必经之路。对于互联网自然语言人工智能处理分词技术是其中一个重要的组成部分,命名实体和知识体系的建设也是必不可少的。海量作为一家学习型的企业,相关技术和产品正在不断的完善中。

海量信息定位为基于互联网的智能计算的专家,希望通过自己的技术和产品让中国的互联网更智能、更聪明的,并在“云”的模式下面为客户提供更有价值的服务。据海量CEO郝玺龙介绍海量信息目前已将分词技术、智能计算技术及相关知识与规则转化为商业价值,推出了四款平台级和产品级服务。

1 Reidx在线智能计算平台服务

Reidx是由计算网格、数据网格和知识网格组成的在线智能计算平台,以“云”计算模式为应用提供计算、数据、知识服务。

语义(S)引擎、行为(F)引擎和形式(B)引擎按照语义网的标准把数据加工成机器可认知信息,从而实现真正完整意义的信息和知识共享。

这是一个开放的平台,提供的是通用性的支持,在此之上面向于不同行业领域,可以开发各种应用。海纳、保10洁就是Reidx在互联网行业的应用,目前还有用户在Reidx提供的数据网格基础上开发了,舆情、竞争情报等应用。

XCDL5Y9AS565

Reidx在线智能计算平台服务整体架构

2 海纳互联网社区采编服务

“海纳”互联网智能采编服务是一款为客户提供互联网资讯数据抓取、分析、加工的互联网在线技术服务。该产品在中央服务器集群上运行,通过连接互联网的客户端提供服务。

“海纳”基于网页结构化、文本语义分析、图像分析等多项智能计算技术,实现网页一键转载、页面监控、多页自动合并、关键词摘要自动生成等多项功能。在降低成本的前提下为面向互联网的资讯收集、加工工作提供有力支持。

clip_image006[4]

海纳互联网智能采编服务运行结构

3 10洁互联网智能净化服务

保10洁是面向社区中垃圾广告、违法广告等信息过滤的在线服务。该服务内嵌中文语义分析、行为分析和版式分析等多项智能计算技术,通过判断用户所发布信息的内容、版式,识别出所发布的信息是否为垃圾、广告信息,并能同时进行自动识别和清除工作。

7IAMN2S8SIR6 

10洁的信息运行结构

保10洁智能计算引擎通过特征知识库中的规则,通过计算智能识别网站互动信息中的可疑、违法广告和垃圾广告等不良信息。

来自用户系统的互动信息经过智能计算引擎的识别后:正常的健康信息直接返回用户系统实施发布;而被判断为垃圾的信息则被阻止不予发布,并呈现在用户审核平台中;还有少量系统不能明确判定的可疑信息,则暂缓发布,由审核人员通过用户审核平台来判定发布与否。

其中被系统认定的垃圾信息和用户审核所判定的垃圾信息,又会经过智能计算抽象出其语义、版式等特征。这些特征会被系统自动更新到特征知识库中,这样,系统就具备了自行学习的能力,以此来应付互联网各种信息层出不穷、瞬息万变的情况。

原文链接:http://www.chinakdd.com/portal.php?mod=view&aid=125943