中文分词搜索词库算法收集

收集了一点资料 字典库:http://www.mdbg.net/chindict/chindict.php?page=cedict 文章:http://iregex.org/blog/simple-nlp-for-chinese.html 中文分词工具包:http://www.iteye.com/news/10746-python-smallseg 代码链接:http://code.google.com/p/smallseg/ 一个搜索算法: SUNDAY 算法描述: 字符串查找算法中,最著名的两个是KMP算法(Knuth-Morris-Pratt)和BM算法(Boyer-Moore)。两个算法在最坏情况下均具有线性的查找时间。但是在实用上,KMP算法并不比最简单的c库函数strstr()快多少,而BM算法则往往比KMP算法快上3-5倍。但是BM算法还不是最快的算法,这里介绍一种比BM算法更快一些的查找算法。 例如我们要在"substring searching algorithm"查找"search",刚开始时,把子串与文本左边对齐: substring searching algorithm search ^ 结果在第二个字符处发现不匹配,于是要把子串往后移动。但是该移动多少呢?这就是各种算法各显神通的地方了,最简单的做法是移动一个字符位置;KMP是利用已经匹配部分的信息来移动;BM算法是做反向比较,并根据已经匹配的部分来确定移动量。这里要介绍的方法是看紧跟在当前子串之后的那个字符(上图中的 'i')。 显然,不管移动多少,这个字符是肯定要参加下一步的比较的,也就是说,如果下一步匹配到了,这个字符必须在子串内。所以,可以移动子串,使子串中的最右边的这个字符与它对齐。现在子串'search'中并不存在'i',则说明可以直接跳过一大片,从'i'之后的那个字符开始作下一步的比较,如下图: substring searching algorithm search ^ 比较的结果,第一个字符就不匹配,再看子串后面的那个字符,是'r',它在子串中出现在倒数第三位,于是把子串向前移动三位,使两个'r'对齐,如下: substring searching algorithm search ^ 哈!这次匹配成功了!回顾整个过程,我们只移动了两次子串就找到了匹配位置,是不是很神啊?!可以证明,用这个算法,每一步的移动量都比BM算法要大,所以肯定比BM算法更快。 文章关键词词频统计算法: 一种基于中文的词频统计算法: 1、将待分析的文本转换成字符串(适用任何类型的字符串) 2、将字符串进行中文分词 3、利用统计字符个数函数得出分词后的文本字符串个数a 4、将待统计的关键词用字符串替换法消除,并且利用步骤3 的函数得出消除关键词后的文本字符处个数b
Read more...

记录几个python的下载地址

MySQL-python for Windows Distributions http://www.codegood.com/downloads python下载地址被墙了,需要vpn,到ftp里面下载就不需要了: http://www.python.org/ftp/python/ python 2.6.7没有for windows版本。
Read more...

昨天硬盘挂了,吓湿了,数据安全很重要

昨天晚上十一点,硬盘挂了。其实是有预兆的,从放假来了以后电脑非常卡,开始以为长时间没还原系统的事,也懒得还原。还有几次直接死机不动了。 昨晚硬盘不好用也不是突然的,一分钟前,特别卡,那时正在写django代码,调试什么的东西都开着,然后就听着主机里面像捏小泡一样的声音啪啪啪啪的,然后就卡的不动了,一分两分钟的动一下。我就慢慢结束进程,结束一个提示**.exe什么什么错误,explorer进程也自己结束了,我重启explorer进程也不行。然后启动cmd.exe也不行,提示错误,最后以为是中了什么新的exe病毒,这几天电脑卡就经常关杀毒软件。重启机器,悲剧的我开到启动画面不动了。对了,在操作当中,主机里的啪啪时常有。 第二天卸开机箱发现时硬盘啪啪的,我去。抱去修理,说硬盘挂了,我的数据哇,当时真的好怕哇。好在能把数据读出来拷到另一个盘里了。然后弄了个wd的黑盘,数据安全很重要,哈哈。有时间把重要内容拷到网盘中备份一份,预防着。
Read more...

今天为django搭建的网站写了一个验证码

查了些验证码的资料,选了一个比较简单的例子,参照着写得不是很好。找了一篇比较经典的收藏了。
TFontAngle=range($this->TFontAngle[0],$this->TFontAngle[1]);
		$this->TFontSize=range($this->TFontSize[0],$this->TFontSize[1]);

		$arr=array();
		$Chars=$this->Chars;
		$TFontAngle=$this->TFontAngle;
		$TFontSize=$this->TFontSize;
		$FontColors=$this->FontColors;
		$code="";
		$font=dirname(__FILE__)."/font/".$this->TFonts[0];

		$charlen=strlen($Chars)-1;
		$anglelen=count($TFontAngle)-1; // 角度范围
		$fontsizelen=count($TFontSize)-1; // 角度范围
		$fontcolorlen=count($FontColors)-1; // 角度范围

		for($i=0;$i<$this->Length;$i++) ///得到字符与颜色
		{
			$char=$Chars[rand(0,$charlen)]; ///得到字符
			$angle=$TFontAngle[rand(0,$anglelen)]; ///旋转角度
			$fontsize=$TFontSize[rand(0,$fontsizelen)]; ///字体大小
			$fontcolor=$FontColors[rand(0,$fontcolorlen)]; ///字体大小

			$bound=$this->_calculateTextBox($fontsize,$angle,$font,$char); ///得到范围

			$arr[]=array($fontsize,$angle,$fontcolor,$char,$font,$bound);  ///得到矩形框
			$code.=$char;
		}
		$this->Code=$arr; //验证码
		return $code;
	}

	public function Draw() ///画图
	{
		if(empty($this->Code)) $this->RandRSI();
		$codes=$this->Code; ///用户验证码


		$wh=$this->_getImageWH($codes);

		$width=$wh[0];
		$height=$wh[1]; ///高度

		$this->Width=$width;
		$this->Height=$height;

		$this->Image = imageCreate( $width, $height );
		$image=$this->Image;

		$back = $this->_getColor2($this->_getColor( $this->BgColor)); ///背景颜色
		imageFilledRectangle($image, 0, 0, $width, $height, $back); ///填充背景

		$TPadden=$this->TPadden;

		$basex=$this->Txbase;
		$color=null;
		foreach ($codes as $v) ///逐个画字符
		{
			$bound=$v[5];
			$color=$this->_getColor2($this->_getColor($v[2]));
			imagettftext($image, $v[0], $v[1], $basex, $bound['height'],$color , $v[4], $v[3]);
			$basex=$basex+$bound['width']*$TPadden-$bound['left'];///计算下一个左边距
		}
		$this->TLine?$this->_wirteSinLine($color,$basex):null; ///画干扰线
		header("Content-type: image/png");
		imagepng( $image);
		imagedestroy($image);

	}

	/**
	 *通过字体角度得到字体矩形宽度*
	 *
	 * @param int $font_size 字体尺寸
	 * @param float $font_angle 旋转角度
	 * @param string $font_file 字体文件路径
	 * @param string $text 写入字符
	 * @return array 返回长宽高
	 */
	private function _calculateTextBox($font_size, $font_angle, $font_file, $text) {
		$box = imagettfbbox($font_size, $font_angle, $font_file, $text);

		$min_x = min(array($box[0], $box[2], $box[4], $box[6]));
		$max_x = max(array($box[0], $box[2], $box[4], $box[6]));
		$min_y = min(array($box[1], $box[3], $box[5], $box[7]));
		$max_y = max(array($box[1], $box[3], $box[5], $box[7]));

		return array(
		'left' => ($min_x >= -1) ? -abs($min_x + 1) : abs($min_x + 2),
		'top' => abs($min_y),
		'width' => $max_x - $min_x,
		'height' => $max_y - $min_y,
		'box' => $box
		);
	}

	private function  _getColor( $color ) //#ffffff
	{
		return array(hexdec($color[1].$color[2]),hexdec($color[3].$color[4]),hexdec($color[5].$color[6]));
	}

	private function  _getColor2( $color ) //#ffffff
	{
		return imagecolorallocate ($this->Image, $color[0], $color[1], $color[2]);
	}

	private function _getImageWH($data)
	{
		$TPadden=$this->TPadden;
		$w=$this->Txbase;
		$h=0;
		foreach ($data as $v)
		{
			$w=$w+$v[5]['width']*$TPadden-$v[5]['left'];
			$h=$h>$v[5]['height']?$h:$v[5]['height'];
		}
		return array(max($w,$this->Width),max($h,$this->Height));
	}

	//画正弦干扰线
	private function _wirteSinLine($color,$w)
	{
		$img=$this->Image;

		$h=$this->Height;
		$h1=rand(-5,5);
		$h2=rand(-1,1);
		$w2=rand(10,15);
		$h3=rand(4,6);

		for($i=-$w/2;$i<$w/2;$i=$i+0.1)
		{
			$y=$h/$h3*sin($i/$w2)+$h/2+$h1;
			imagesetpixel($img,$i+$w/2,$y,$color);
			$h2!=0?imagesetpixel($img,$i+$w/2,$y+$h2,$color):null;
		}
	}
}
DEMO:
$rsi = new Utils_Caption();
$rsi->TFontSize=array(15,17);
$rsi->Width=50;
$rsi->Height=25;
$code = $rsi->RandRSI();
session_start();
$_SESSION["CHECKCODE"] = $code;
$rsi->Draw();
以上代码下载地址是:http://files.cnblogs.com/chengmo/caption_chengmo.zip 作者:chengmo QQ:8292669 出处:http://www.cnblogs.com/chengmo 本文版权归作者和博客园共有,欢迎转载,请务必添加原文链接。
Read more...

Ubuntu Apache deflate的设置

下面是从网上找的的,先记录: 在apache1.3.x中, 使用gzip来对内容进行压缩. 在新版的apache2.x里, deflate模块代替了gzip模块,用于对内容进行压缩. 查看Apache是否有deflate这个模块,目录:/etc/apache2/mods-available/ 启用这个mod:sudo a2enmod deflate 编辑deflate的配置文件: /etc/apache2/mods-available/deflate.conf 官网:http://httpd.apache.org/docs/2.0/mod/mod_deflate.html 一篇关于Apache优化的文章:http://my.oschina.net/lamp2me/blog/15317 默认Apache是所有插件都启用了,在配置文件apache2中可以看到,就不用启用了。
Read more...

Ubuntu PIL安装Python Imaging Library

apt-cache show python-imaging 查看版本是最新的1.1.7 直接apt-get install python-imaging 安装成功 import Image Image.VERSION '1.1.7' 查资料可以自己下载源码编译,但是我没选择折腾。直接安装吧。 再记录一个小问题:在Ubuntu下django的settings的配置中TIME_ZONE = 'CCT'不成功,需要修改为'Asia/Shanghai'。就OK了,昨天忘记记录了。
Read more...

Ubuntu下mysql数据库的编码修改

上传到Ubuntu服务器后错误百出,报错Data truncated for column 'title' at row 1, Google搜索发现是编码不统一的问题。 查看数据库编码的方法: show variables like 'character%'; 修改/etc/mysql/my.cnf文件 找到客户端配置[client] 在下面添加 default-character-set=utf8 默认字符集为utf8 在找到[mysqld] 添加 default-character-set=utf8 默认字符集为utf8 init_connect='SET NAMES utf8' (设定连接mysql数据库时使用utf8编码,以让mysql数据库为utf8运行) 重启mysql服务:service mysql restart 再查看发现成为utf8了。 drop掉原来建立的数据库,新建一个utf8的: CREATE DATABASE ms_db CHARACTER SET utf8 ; 前台测试,不再报错。
Read more...

ubuntu Apache+mod_wsgi错误提示

ExtractionError: Can't extract file(s) to egg cache The following error occurred while trying to extract file(s) to the Python egg cache: [Errno 13] Permission denied: '/var/www/.python-eggs' The Python egg cache directory is currently set to: /var/www/.python-eggs Perhaps your account does not have write access to this directory? You can change the cache directory by setting the PYTHON_EGG_CACHE environment variable to point to an accessible directory. 解决办法: mkdir /var/www/.python-eggs chmod -R 777 /tmp/.python-eggs 设置PYTHON_EGG_CACHE环境变量 $ SetEnv PYTHON_EGG_CACHE /tmp/aaa/ ##(setenv是在cshell中用的,在bshell中用的是 export 不同的SHELL设置变量的方法很不一致: csh : set、setenv bash : set、export ksh : set、export或直接赋值 vim /etc/profile export PYTHON_EGG_CACHE=/tmp/.python-eggs source /etc/profile export PYTHON_EGG_CACHE=/tmp/.python-eggs env |grep egg chmod -R 777 /tmp/.python-eggs or # vi /root/.bashrc export PYTHON_EGG_CACHE=/tmp/.python-eggs ) 目录权限注意要是apache用户,或者简单点就777
Read more...

python的datetime 和md5加密学习记录

>>> import datetime
>>> now = datetime.datetime.now()
>>> now
datetime.datetime(2012, 2, 14, 16, 24, 36, 171000)
>>> dir(now)
发现取得时间方法是now.year的方式。
>>> now2 = datetime.datetime.now()
>>> dd=now2-now
>>> dd
datetime.timedelta(0, 209, 938000)
>>> dir(dd)
>>> dd.days
0
>>> dd.microseconds
938000
>>> dd.seconds
209
MD5加密方法:
>>> import md5
>>> v = md5.new('uuuuu').hexdigest()
>>> v
'3c9aa281ced92294f259c0c55520b2cf'
>>> b= md5.new('uuuuu').hexdigest()[16:]
>>> b
'f259c0c55520b2cf'
Read more...

django建站之SMTP发送邮件

用户注册需要邮箱的验证,找回密码需要邮箱。我选择用gmail邮箱来发送邮件,配置如下: settings.py文件中添加: #邮箱设置 EMAIL_HOST = 'smtp.gmail.com' #EMAIL_PORT = '465' EMAIL_HOST_USER = 'name@gmail.com' EMAIL_HOST_PASSWORD = 'password' EMAIL_USE_TLS = True 端口的设置,可能是默认的25,开始没有成功。 发送邮件代码: from django.core.mail import send_mail send_mail('subject','body','name@gmail.com', ['to_some@mail.com'],fail_silently=True) 非常简单。
Read more...

Previous Page 1 2 3 4 5 6 7 8 9 10 Next Page 最后一页