摘要: DBScan是一种基于密度的聚类算法,它有一个核心点的概念:如果一个点,在距它Eps的范围内有不少于MinPts个点,则该点就是核心点。核心和它Eps范围内的邻居形成一个簇。在一个簇内如果出现多个点都是核心点,则以这些核心点为中心的簇要合并。下图给出DBScan的聚类结果:可以看到DBScan可以发现噪声,即它把(3,14)判定为噪声。到这里你一定有个疑问:为什么(8,3)一个点形成了一个簇,不是一个簇最少应该包含MinPts个点吗,如果只有一个点,那(8,3)应该归为噪声才对呀?其实你仔细阅读下面的代码就会发现原因。在算法运行的早期,(8,3)、(5,3)、(8,6)、(10,4)被划分为一 阅读全文
posted @ 2011-09-20 18:23 张朝阳 阅读(25618) 评论(9) 推荐(2) 编辑
摘要: KMeans算法的基本思想是初始随机给定K个簇中心,按照最邻近原则把待分类样本点分到各个簇。然后按平均法重新计算各个簇的质心,从而确定新的簇心。一直迭代,直到簇心的移动距离小于某个给定的值。当初始簇心选行不好时,KMeans的结果会很差,所以一般是多运行几次,按照一定标准(比如簇内的方差最小化)选择一个比较好的结果。下图给出对坐标点的聚类结果:下面给出核心算法的代码:/** * Author: Orisun * Date: Sep 10, 2011 * FileName: KMeans.java * Function: */package orisun;import java.io.File. 阅读全文
posted @ 2011-09-19 22:40 张朝阳 阅读(40884) 评论(5) 推荐(2) 编辑
摘要: 通过HTTP连接访问资源URLConnection封装任何对URL连接的基本功能,HttpURLConnection基于HTTP的连接扩展URLConnection。Step1.创建URL对象。URL(String rul) throws MalformedURLExceptionStep2.URL对象调用openConnection(),并将其返回的引用强制转换成HttpURLConnection。Step3.HttpURLConnection对象调用getContentType()获取资源的内容类型,调用getContentLength()获取资源的内容长度,调用Map<String 阅读全文
posted @ 2011-09-19 15:39 张朝阳 阅读(490) 评论(1) 推荐(0) 编辑
摘要: Java字符串和正则表达式String是固定不变的,即当你改变String时实际是上创建了一个新字符串,而原来的字符串保持不变。StringBuffer和StringBuilder允许内容是可变的,它们都提供setCharAt(),insert()等修改字符串内容的方法。StringBuffer是线程安全的,在多线程应用中必须使用StringBuffer。StringBuilder不是线程安全的,当不使用多线程时,使用StringBuilder更高效。java正则表达式由Matcher和Pattern提供支持。更常用的是String的一些方法如split(),matches()都可以将正则表达 阅读全文
posted @ 2011-09-19 15:26 张朝阳 阅读(1206) 评论(0) 推荐(0) 编辑
摘要: 1.复旦语料库train集中有6个类是多于1000个文档的,把它们取出来,分别删减至1000个文档,构成接下来我们要进行实验的训练集。2.执行Predeal.java,它依次进行三项操作:把文件重命名为顺序的数字编号;把文件编号(即文件名)写入文档开头,用一个空格与正文内容隔开,去除正文每行末的换行符,把整个文档合并为一行,去除正文行间的空格;用ICTCLAS进行中文分词.由于一次运行对6000个文件进行分词程序会中断退出。所以只好一次只处理1000个文件。这里去除停用词的方法我多说一句,程序中的代码是if (word.length()>=2 && (!Predeal.s 阅读全文
posted @ 2011-09-03 16:55 张朝阳 阅读(4254) 评论(3) 推荐(0) 编辑
摘要: 信息增益选择特征项,KNN文本分类 阅读全文
posted @ 2011-09-01 20:32 张朝阳 阅读(7136) 评论(4) 推荐(2) 编辑
摘要: txt文件在Windows下可以正常显示,Ubuntu下打开文件乱码。这是中文编码问题,Windows下用的是gb2312,而linux下用的是utf8。在此提供5种解决方案:1. 在文档所在目录运行命令 iconv -f gb2312 -t utf8 -c 1.txt > 2.txt选项-c的作用是忽略不能识别的字符,继续向后转换。否则iconv遇到不能识别的字符就终止转换。iconv不能实现批量转换,你需要写一段小程序来达到此目的。2. 运行命令ubuntu默认的打开.txt文件用的是gedit,可gedit默认编码是UTF8,打开windows下编辑的gb2312的文档都是乱码{W 阅读全文
posted @ 2011-08-16 10:39 张朝阳 阅读(10980) 评论(0) 推荐(0) 编辑
摘要: 网上讲的还要下载libsvm.jar包,配置环境变量神马的,此处讲的方法不需要那么麻烦呵。我的系统是Ubuntu,所以其他地方讲的更改配置文件RunWeka.ini云云在我这儿根本就没这个文件,Weka也不需要安装,解压后直接运行java -jar weka.jar就行了。运行jar包时官网上有这么一句提示:Note that Java needs to be installed on your system for this to work. Also note, that using-jarwill override your current CLASSPATH variable and 阅读全文
posted @ 2011-07-20 20:06 张朝阳 阅读(3179) 评论(0) 推荐(0) 编辑
摘要: 网页下载过程中的网络延迟成为整个系统性能的瓶颈。为提高效率,网络蜘蛛设计成队列缓冲、多线程并行结构。网络蜘蛛的三大模块:HTTP下载模块。利用HTTP协议下载,获取并存储网页内容。链接分析模块。提取网页内的超链接,获取后续页面入口。下载控制模块。控制网页访问次序、更新策略、访问队列高度等。 入口页面往往是网站的主页功sitemap页面。 Spider对网站的访问尝试一般控制在3~5层。 网络爬虫的优化策略和原则:避免重复下载。增加多个工作队列,提高并了能力。工作队列有:等待队列、处理队列、成功队列、失败队列。利用网页Proxy缓冲,检查是否需要从远程下载。同一站点的URL尽量映射到同一个线程处 阅读全文
posted @ 2011-07-20 15:13 张朝阳 阅读(6012) 评论(1) 推荐(1) 编辑
摘要: 首先下载ICTCLAS2011_Linux_32_jni,解压后是ICTCLAS50_Linux_RHAS_32_JNI文件夹。在Eclipse里面新建一个Java Project,把ICTCLAS50_Linux_RHAS_32_JNI/API下的ICTCLAS放到Java Project的src目录下,把ICTCLAS50_Linux_RHAS_32_JNI/API下的其他所有内容放到Java Project的根目录下,新建一下java class,取名Test。在ICTCLAS50_Linux_RHAS_32_JNI/Doc下有个ICTCLAS50的API使用说明,第22页是第一个JNI 阅读全文
posted @ 2011-07-17 15:38 张朝阳 阅读(2014) 评论(1) 推荐(1) 编辑
摘要: 直接去http://tomcat.apache.org下载二进制包(Binary Distributions)就不需要安装了,解压后直接运行bash文件即可运行Tomcat。事先要设置好JAVA_HOMEecho $JAVA_HOME/opt/java/jdk1.6.0_25开启:$ /home/orisun/develop/apache-tomcat-7.0.16/bin/startup.sh停止:/home/orisun/develop/apache-tomcat-7.0.16/bin/shutdown.sh当然每次这么启动也太麻烦了,搞个简短一点的命令,在~/.bashrc中添加:ali 阅读全文
posted @ 2011-07-09 15:36 张朝阳 阅读(2705) 评论(0) 推荐(0) 编辑
摘要: 卸载apache首先停止服务sudo /etc/init.d/apache2 stop再卸载sudo apt-get --purge remove apache2sudo apt-get --purge remove apache2.2-commonsudo apt-get autoremove (此命令会自动卸载PHP)安装apachesudo apt-get install apache2启动、停止和重启因为apache2ctl命令在/usr/sbin下面,所以可以直接这样:sudo apache2ctl -k startsudo apache2ctl -k stopsudo apache 阅读全文
posted @ 2011-07-09 08:49 张朝阳 阅读(4167) 评论(0) 推荐(0) 编辑
摘要: HttpClient的使用依赖于Apache commons项目中的两个组件——commons-logging.jar、commons-codec.jar。所以要在Eclipse中添加外部Jar包commons-logging.jar和commons-codec.jar。包括HttpClient.jar已经都在eclipse的plugin里面了,不需要另外下载。网上普遍讲的NoClassDefFoundError出错的原因是ClassPath没设好。 阅读全文
posted @ 2011-06-29 16:06 张朝阳 阅读(544) 评论(0) 推荐(0) 编辑
摘要: 其实安装apache时./configure命令是有很多参数可以指定的,如果没有显式指定,安装守SVN后你发现在apache的modules目录下并没有mod_dav_svn.so和mod_authz_svn.so。大多数情况是我们安装apache的时候没有考虑到后面还会安装SVN,自然没有指定./configure命令的参数,这时候需要自己生成mod_dav_svn.so和mod_authz_svn.so,放到apache/modules目录下面:下载subversion-deps-1.6.17.tar.gz 和subversion-1.6.17.tar.gz,解压合并到一个目录下面./co 阅读全文
posted @ 2011-06-19 18:40 张朝阳 阅读(1544) 评论(0) 推荐(0) 编辑
摘要: 淘宝网页中有下面字符:价 格:我最开始用perl试图去除中间的空格时用s/\s//g,发现根本没反应。淘宝的这个空格不是我们想像中的空格!后来我想是不是编码的问题,因为网页的编码是GBK,而perl默认处理的都是UTF-8,所以转了一下。iconv -f GBK -t UTF-8 file1 -o file2将Google香港的Big5编码转换成GBK编码curl -s http://www.google.com.hk/ | iconv -f big5 -t gbk依旧没反应。实际上perl在处理字符串时读入内存的时候已统一转换成了UTF-8编码,不需要我们劳神费心,只是把字符串处理完输出的. 阅读全文
posted @ 2011-06-03 16:25 张朝阳 阅读(4613) 评论(0) 推荐(0) 编辑
摘要: 代码是从网上找的,注释是我加的#!/usr/bin/perluse strict;use warnings;use threads;use threads::shared;use Thread::Queue;use Thread::Semaphore;use Bloom::Filter;use URI;use URI::URL;use Web::Scraper;use LWP::Simple;use LWP::UserAgent;use HTTP::Cookies;#use HTTP::Cookies::Guess;use String::Diff;use String::Diff qw(di 阅读全文
posted @ 2011-05-26 20:28 张朝阳 阅读(5113) 评论(0) 推荐(0) 编辑
摘要: Bloom::Filter,其最大容量为10,判断某一个元素是否在容器中的最大出错概率为0.001。 Web::Scaper是一组用来提取HTML文档中元素内容的工具集,它能够理解HTML和CSS选择器以及XPath表达式。 阅读全文
posted @ 2011-05-26 14:59 张朝阳 阅读(1072) 评论(0) 推荐(0) 编辑
摘要: perldoc threads ---- 英文的... ...网上找不到中文全面介绍的,无奈,哥今天就来翻译一下。<<=========================threads===========================>>#!/usr/bin/perluse threads ('yield', 'stack_size' => 64*4096, 'exit' => 'threads_only', 'stringify');sub start_thread { my 阅读全文
posted @ 2011-05-25 18:36 张朝阳 阅读(5275) 评论(1) 推荐(0) 编辑
摘要: 今天安装Perl的调试工具, Devel-ptkdb-1.1091.tar.gz解压后make test时报错:Can't locate Tk.pm。This's because x11/tk doesn't contain Tk.pm. You need to install x11/p5-Tk.具体怎么做呢?1)sudo apt-get install libx11-dev2)sudo cpan -i Tk ##会自动地从CPAN上下载安装Tk.pm此时还是会报错:make[1]: *** [Xlib_f.o] Error 1make[1]: Leaving dir 阅读全文
posted @ 2011-05-24 10:45 张朝阳 阅读(2194) 评论(0) 推荐(0) 编辑
摘要: 前一篇博文是对当当网图书详情页面进行分析,提取图书的相关信息。现在要解决的问题做一个爬虫把当当网图书详情页面下载下来。一般爬虫的基本思路是这样的:给定一个初始URL,沿着网页间的超链接链一直访问下去。但这里要注意几个问题:避免回路出现死循环。使用队列来存储待访问的URL方法简单,网页访问顺序是固定死的;采用来存储待访问的URL,可以很好地用树的层次结构来表示网页的层次结构,对树的遍历可以采用前根遍历,也可以采用层次遍历。大量的页面都是我们不需要的--不是当当网图书详情页面,如何少做一些无用功。访问页面连接超时时间的设定。如果你网速不好,就设长一点,但是再次提醒你访问的大多数网页都是我们不需要的 阅读全文
posted @ 2011-05-22 20:18 张朝阳 阅读(7730) 评论(0) 推荐(1) 编辑
摘要: 功能描述:首先判断html文件是否为当当图书的页面,不是则不处理把图书标题,价格,作者,出版社等信息抽取出来存入文件perl程序运行命令:perl programfile html_file_list原代码奉上:#!/usr/bin/perluse HTML::Element;use HTML::TreeBuilder;use HTML::Parser;open DATAFH,">>data" || die "open file failed:$!";select DATAFH;foreach my $file_name (@ARGV) { 阅读全文
posted @ 2011-05-21 20:37 张朝阳 阅读(1405) 评论(1) 推荐(0) 编辑
摘要: HTML::TreeBuilder继承自HTML::Parser和HTML::Element,所以下面讲的很多方法实际上源于HTML::Parser和HTML::Element。拿下面这个HTML文件开刀:<html lang='i-klingon'> <head><title>Pati Pata</title></head> <body> <h1 lang='la'>职工</h1> <p lang='es-MX' align='cent 阅读全文
posted @ 2011-05-21 16:30 张朝阳 阅读(6493) 评论(0) 推荐(0) 编辑
摘要: 各位一定从未听说过“ISee搜索引擎”,因为今天刚刚诞生,况且还只是个模型。我是个很愿意分享的人,源代码奉上:#!/usr/bin/perluse CGI qw(:standard);use Time::HiRes qw(time);use Search::Xapian;use Text::Scws;print header("text/html;charset=utf-8");print start_html(-title=>'ISee Search Engine');print start_form, textfield('terms 阅读全文
posted @ 2011-05-20 16:09 张朝阳 阅读(776) 评论(0) 推荐(0) 编辑
摘要: 方法是一种属于类的特殊子例程,要求第一个参数必须是包含或指向对象的引用,并且这个参数是由perl自动隐式赋值的。House.pmpackage House;sub new{ my $class=shift; my $ref={}; bless($ref,$class); return $ref;}sub set_data{ my $self=shift; my $key=shift; my $value=shift; $self->{$key}=$value;}sub get_data{ my $self=shift; my $key=shift; $self->{$key};}1 阅读全文
posted @ 2011-05-19 15:48 张朝阳 阅读(710) 评论(0) 推荐(0) 编辑
摘要: 获得boost boost分布 只需要头文件的库 使用boost建立一个简单的程序 准备使用boost二进制文件库 把你的程序链接到boost库 阅读全文
posted @ 2011-05-17 15:37 张朝阳 阅读(22283) 评论(0) 推荐(0) 编辑
摘要: Ubuntu11.04下安装Apache2.2。开机自动启动Apache。解决Internal Server Error错误。彻底删除Apache。 阅读全文
posted @ 2011-05-14 19:26 张朝阳 阅读(3051) 评论(0) 推荐(0) 编辑
摘要: 两步自动安装LAMP。安装phpadmin。安装配置Apache。FreeBSD服务的自动启动设置。 阅读全文
posted @ 2011-05-12 11:01 张朝阳 阅读(670) 评论(0) 推荐(0) 编辑
摘要: Xapian 和 Omega 是独立的两个组件,旨在相互协作来提供索引和搜索功能。Xapian 组件提供了核心的数据库功能(存储信息)以及搜索和检索系统来查找单词和单词组合。Omega 组件提供了一些工具来将不同格式的信息转化并解析成 Xapian 需要的原始格式以便它可以被索引。Omega 使用了多种工具,比如pdftotext,然后再提交转化并过滤了的基于文本的信息,以便文档的索引和结构可以被标识并存储在 Xapian 数据库。Omega 是 Xapian 下载的一部分。先来把Omega小用一把,让你对它有个直观的感受,然后我们再来详细介绍Omega。建立索引数据库:$ omindex - 阅读全文
posted @ 2011-05-09 18:38 张朝阳 阅读(1222) 评论(0) 推荐(0) 编辑
摘要: libmmseg主要被作者用来实现Sphinx全文检索软件的中文分词功能,因此作者给Sphinx提供了一个补丁文件,可以让Sphinx集成libmmseg,从而支持对于中文文章的全文检索功能。安装mmseg同样是./configure make sudo make install但是注意把改一下src/css/UnigramCorpusReader.cpp文件,加一行#include <string.h>,否则make时会报错:error: 'strncmp' was not declared in this scope 阅读全文
posted @ 2011-05-07 22:39 张朝阳 阅读(850) 评论(1) 推荐(0) 编辑
摘要: 上次安装Xapian的时候我们说编译一个xapian的C++程序时总是说"undefined reference to xxx".其实我们仔细观察在./configure xapian-core的时候有这么一句:nothing to be done for all,然后在make的时候也有:nothing to be done for all,nothing to be done for all-am。这句提示是说明你已经编译好了,而且没有对代码进行任何改动。make clean 清除安装时留下的文件再运行一下ldconfig,更新链接库缓存。 阅读全文
posted @ 2011-05-07 09:43 张朝阳 阅读(2645) 评论(0) 推荐(0) 编辑
摘要: root 帐号sudo passwd root.bashrcalias cls='clear screen'vimrc安装vim后修改.vimrc文件内容如下:" 高亮显示匹配的括号set showmatch" 继承前一行的缩进方式,特别适用于多行注释set autoindent" 为C程序提供自动缩进set smartindent" 使用C样式的缩进set cindent" 制表符为4set tabstop=4" 统一缩进为4set softtabstop=4set shiftwidth=4" 所有制表符都 阅读全文
posted @ 2011-05-06 20:15 张朝阳 阅读(321) 评论(0) 推荐(0) 编辑
摘要: Xapian是基于GPL发布的搜索引擎开发库,它采用C++语言编写,通过其提供绑定程序包可以使Perl、Python、PHP、Java、Tck、C#、Ruby等语言方便地使用它。 Xapian 还是一个具有高适应性的工具集,使开发人员能够方便地为他们的应用程序添加高级索引及搜索功能。它支持信息检索的概率模型及丰富的布尔查询操作。 本文讲了xapian的编译安装,内部工作原理,最后给一个Xapian API编程的综合实例。 阅读全文
posted @ 2011-05-05 09:33 张朝阳 阅读(7984) 评论(2) 推荐(1) 编辑
摘要: 中文分词介绍,SCWS工具使用,SCWS C语言编程示例,SCWS Perl语言编程示例 阅读全文
posted @ 2011-05-01 20:06 张朝阳 阅读(10869) 评论(2) 推荐(2) 编辑
摘要: 我们已经利用larbin从网上抓取了六千多个HTML文件,在使用clucene建立索引之前,我们还需要把HTML文件中的各种无用的标签去掉,形成只包含有实际内容的文档.html2txt就是这样一个工具. 阅读全文
posted @ 2011-04-30 22:27 张朝阳 阅读(4785) 评论(0) 推荐(0) 编辑
摘要: larbin和启动和重启,以及input system的使用.详细讲解了larbin的配置的三个文件:larbin.conf,options.h,types.h larbin抓取的文件保存在save文件夹下,但是文件都没有.html后缀,默认情况下不是以浏览器打开,很不方便.写一下Perl脚本,把所以文件加一下".html"的后缀,其中用到了File::Find模块. 阅读全文
posted @ 2011-04-28 16:47 张朝阳 阅读(10289) 评论(1) 推荐(1) 编辑
摘要: Larbin简介,及其在Ubuntu10.04下的编译安装.解决找不到makedepend命令及iostream.h等问题. 阅读全文
posted @ 2011-04-28 11:16 张朝阳 阅读(2192) 评论(2) 推荐(1) 编辑
摘要: set存储已排序的无重复的元素,multiset是元素可以重复.为实现快速的集合运算set内部数据组织采用红黑树(一种严格意义上的平衡二叉树).map存储key-value对,按key排序,map的内部数据结构也是红黑树,并且key值无重复.multimap允许key值重复.STL中算法包含在<Algorithm>头文件中,集合的算法也包含在该头文件中.集合的并:set_union集合的交:set_intersection集合的差:set_differnce给一个set的例子:#include<algorithm>#include<iostream>#inc 阅读全文
posted @ 2011-04-25 09:18 张朝阳 阅读(13522) 评论(0) 推荐(1) 编辑
摘要: <<编程珠玑>>开篇就讲了一个用位图散列解决用少量内存解决大量数据排序的问题.现在有10 000 000条互不相同的数据,2M的内在,无限大的硬盘空间.用散列表来实现这些数据的存储和查找.假如要存储一组小于20的非负整数的集合,可以用一个20bit的串来表示.比如集合{1,5,8,13}可以表示为:0 1 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0第i位上有数据则置为1,否则置为0因此存储10 000 000条数据需要10 000 000bit=1 250 000Byte=1.25M<2M构建散列表的同时就完成了对数据和排序,如果要查找 阅读全文
posted @ 2011-04-24 09:49 张朝阳 阅读(1268) 评论(2) 推荐(0) 编辑
摘要: 就拿这个图做实验了#include<iostream>#include<vector>#include<queue>using namespace std;struct ArcNode{ //弧结点结构 int adjvex; //邻接顶点 ArcNode *nextarc; //下一条弧};template <class T>struct VertextNode{ //表头结点结构 T Vertext; //顶点 ArcNode* firstArc; //第一条弧};const int MAXSIZE=10;template<class 阅读全文
posted @ 2011-04-23 18:16 张朝阳 阅读(4383) 评论(0) 推荐(0) 编辑
摘要: 串的模式匹配就是从一个主串中找到子串出现的位置,如主串是"asd234",子串是"d2",那么算法返回的结果就应该是2.一种最朴素的想法就是BF算法,我就不讲了,"最朴素"嘛,就是你脑子里现在想的那种算法.比较优一点的是KMP算法.更优的是BM算法.BM的改进算法是Sunday Algorithm.现在我给出BF和Sunday两种算法的代码,然后再和STL中string在find函数进行比较.STL中string在find函数示例:string name("AnnaBelle");string::size_type 阅读全文
posted @ 2011-04-22 20:26 张朝阳 阅读(565) 评论(0) 推荐(0) 编辑