Loading [MathJax]/extensions/MathZoom.js

文章分类 -  Search Engine

爬虫、文档索引、分词
基于网站风格树SST的网页噪声去除
摘要:网页噪声去除可以看作是一个分类问题:把一个网页片断分为”有用信息“和”噪声“。在有大量训练样本的情况下可以使用SVM进行分类。一种直接的想法把HTML转换成DOM树,对每个节点计算链接文字比率,如果高于一定的阈值,就认为它不是正文,而是页眉、页脚、广告等其他信息。元素节点与风格节点图1.两个网页的DOM结构图2.合并之后的网站风格树在网站风格树(Site Style Tree,SST)中定义两类节点:风格节点和元素节点。风格节点由2部分组成(ES,n)ES是风格节点中所包含的元素节点的序列。图2中虚线框里的都是风格节点。n代表拥有该风格的网页数量。对于风格节点TABLE-IMG-TABLE其n 阅读全文
posted @ 2012-09-10 21:21 高性能golang 阅读(1249) 评论(0) 推荐(0) 编辑
多线程异步非阻塞C语言爬虫
摘要:最近用C写了个爬虫,纯属练习,离实用还相差甚远。下载源码:ISeeSpiderbloom.h实现布隆过滤器算法。对一条url拆分为domain和path两部分,bloomDomain函数判断domain是否出现过,bloomPath函数判断path是否出现过。如果domain未出现过,则要先进行DNS解析(解析之后把domain和ip对存入map),再下载网页;如果domain出现过,则不需要再进行DNS解析,此时如果path也出现过,则该url直接忽略;如果是新的url,需要放入queue。建立好socket connection后向连接写入http request,然后把sockfd放入e 阅读全文
posted @ 2012-02-14 19:32 高性能golang 阅读(6199) 评论(7) 推荐(1) 编辑
KNN对复旦语料库分类
摘要:先是写了个Java版本,由于运行时间太长,后来写了个C++版本,虽然时间缩短了,但还是得数小时。Java版:View Code 1 /** 2 * Author: Orisun 3 * Date: Oct 10, 2011 4 * FileName: KNN.java 5 * Function: 对于一个unseen文档,计算它与所有训练文档的向量夹角,根据KNN决定它以至于哪一类 6 */ 7 8 import java.io.BufferedReader; 9 import java.io.File; 10 import java.io.FileNotFoun... 阅读全文
posted @ 2011-11-12 09:39 高性能golang 阅读(2334) 评论(2) 推荐(2) 编辑
为训练集和测试集生成向量空间模型
摘要:计算每个特征项的权重时使用公式:上式是对于训练集,而对于测试集,我直接使用:对于训练集,TF和DF都在已经生成的word-doc矩阵中;对于测试集,TF需要另外数一下。对于文档中的一个词,我们首先要判断它是否是特征项,所以首先要把特征项放到一个HashSet中,这是可行的,因为所有特征项也就几千个。同时我们还要快速地从word-doc矩阵中找到该词对应的那一行。当特征项选定后,word-doc矩阵中那些非特征项对应的行就是没用的,所以我们可以对word-doc矩阵进行裁剪:View Code #/usr/bin/perl$bt=time;%hash_all_features=();my $fe 阅读全文
posted @ 2011-11-09 19:23 高性能golang 阅读(2304) 评论(0) 推荐(0) 编辑
计算信息增益,选择特征词
摘要:上一节我们已经对训练集建立了word-doc矩阵,每读取矩阵的一行就可以计算出term对应的IG值。最后把结果写入文件。信息增益的计算公式参见我的另一篇博客信息论。代码如下:View Code import java.io.BufferedReader;import java.io.File;imp... 阅读全文
posted @ 2011-11-05 18:15 高性能golang 阅读(4600) 评论(0) 推荐(1) 编辑
使用Hadoop对复旦语料库建立word-doc矩阵
摘要:使用信息增益法选择特征项时需要建立word-doc矩阵。由于预处理后的测试集有7196个文档,按照常规方法内存根本不够用,所以决定采用Hadoop的standalone模式。View Code /** * Author: Orisun * Date: Sep 5, 2011 * FileName: WordDocMatrix.java * Function: 建立word-doc矩阵 */import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.io.IOException;i 阅读全文
posted @ 2011-11-02 17:07 高性能golang 阅读(1216) 评论(0) 推荐(0) 编辑
用ICTCLAS对复旦语料库分词
摘要:ICTCLAS提供C/C++,Java,C#接口。我发现在ubuntu上使用时,配置文件Configure.xml不起作用,因为不管<Tagger>设为On还Off,C版的总是加词性标注,而JNI版的总是不加词性标注。而<GranularityContorl>设为开或关结果都一样。先给一个C++版的:#include <string.h>#include <stdlib.h>#include <stdio.h>#include "/home/orisun/SoftWare/ICTCLAS50_Linux_RHAS_32_C/ 阅读全文
posted @ 2011-11-02 14:48 高性能golang 阅读(2958) 评论(0) 推荐(0) 编辑
对复旦语料库的预处理
摘要:在感谢复旦语料库整理人员辛勤劳动的同时,也要指出其工作上的瑕疵。采用了gbk编码而不是UTF-8,这导致大多Linux用户不能直接使用。语料库包含训练集和测试集,分别包含9000多个文档,却分别有近1500个文档是重复的。训练集和测试集中的C35-Law中的部分文件是已经经过分词处理了的(分词结果很差),且部分又不是采用的GBK编码(这给编码转换工作带来麻烦)。有些文章只有文章头部,而没有实际的内容。step1.下载复旦语料库的训练集和测试集。解压。step2.分别删除train和answer文件夹下的C35-Law文件夹。step3.使用FindDupFile工具分别找到train和answ 阅读全文
posted @ 2011-11-01 21:10 高性能golang 阅读(3749) 评论(1) 推荐(1) 编辑
网络爬虫Nutch和Heritrix简介
摘要:网页下载过程中的网络延迟成为整个系统性能的瓶颈。为提高效率,网络蜘蛛设计成队列缓冲、多线程并行结构。网络蜘蛛的三大模块:HTTP下载模块。利用HTTP协议下载,获取并存储网页内容。链接分析模块。提取网页内的超链接,获取后续页面入口。下载控制模块。控制网页访问次序、更新策略、访问队列高度等。 入口页面往往是网站的主页功sitemap页面。 Spider对网站的访问尝试一般控制在3~5层。 网络爬虫的优化策略和原则:避免重复下载。增加多个工作队列,提高并了能力。工作队列有:等待队列、处理队列、成功队列、失败队列。利用网页Proxy缓冲,检查是否需要从远程下载。同一站点的URL尽量映射到同一个线程处 阅读全文
posted @ 2011-07-20 15:13 高性能golang 阅读(6059) 评论(1) 推荐(1) 编辑
Ubuntu下ICTCLAS JNI的使用
摘要:首先下载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 高性能golang 阅读(2021) 评论(1) 推荐(1) 编辑
perl多线程爬虫示例
摘要:代码是从网上找的,注释是我加的#!/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 高性能golang 阅读(5117) 评论(0) 推荐(0) 编辑
Perl爬虫--爬特定内容的网页
摘要:前一篇博文是对当当网图书详情页面进行分析,提取图书的相关信息。现在要解决的问题做一个爬虫把当当网图书详情页面下载下来。一般爬虫的基本思路是这样的:给定一个初始URL,沿着网页间的超链接链一直访问下去。但这里要注意几个问题:避免回路出现死循环。使用队列来存储待访问的URL方法简单,网页访问顺序是固定死的;采用来存储待访问的URL,可以很好地用树的层次结构来表示网页的层次结构,对树的遍历可以采用前根遍历,也可以采用层次遍历。大量的页面都是我们不需要的--不是当当网图书详情页面,如何少做一些无用功。访问页面连接超时时间的设定。如果你网速不好,就设长一点,但是再次提醒你访问的大多数网页都是我们不需要的 阅读全文
posted @ 2011-05-22 20:18 高性能golang 阅读(7774) 评论(0) 推荐(1) 编辑
ISee搜索引擎
摘要:各位一定从未听说过“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 高性能golang 阅读(781) 评论(0) 推荐(0) 编辑
Omega Overview
摘要:Xapian 和 Omega 是独立的两个组件,旨在相互协作来提供索引和搜索功能。Xapian 组件提供了核心的数据库功能(存储信息)以及搜索和检索系统来查找单词和单词组合。Omega 组件提供了一些工具来将不同格式的信息转化并解析成 Xapian 需要的原始格式以便它可以被索引。Omega 使用了多种工具,比如pdftotext,然后再提交转化并过滤了的基于文本的信息,以便文档的索引和结构可以被标识并存储在 Xapian 数据库。Omega 是 Xapian 下载的一部分。先来把Omega小用一把,让你对它有个直观的感受,然后我们再来详细介绍Omega。建立索引数据库:$ omindex - 阅读全文
posted @ 2011-05-09 18:38 高性能golang 阅读(1248) 评论(0) 推荐(0) 编辑
libmmseg
摘要: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 高性能golang 阅读(855) 评论(1) 推荐(0) 编辑
使用Xapian搭建自己的搜索引擎
摘要:Xapian是基于GPL发布的搜索引擎开发库,它采用C++语言编写,通过其提供绑定程序包可以使Perl、Python、PHP、Java、Tck、C#、Ruby等语言方便地使用它。 Xapian 还是一个具有高适应性的工具集,使开发人员能够方便地为他们的应用程序添加高级索引及搜索功能。它支持信息检索的概率模型及丰富的布尔查询操作。 本文讲了xapian的编译安装,内部工作原理,最后给一个Xapian API编程的综合实例。 阅读全文
posted @ 2011-05-05 09:33 高性能golang 阅读(8043) 评论(2) 推荐(1) 编辑
SCWS中文分词
摘要:中文分词介绍,SCWS工具使用,SCWS C语言编程示例,SCWS Perl语言编程示例 阅读全文
posted @ 2011-05-01 20:06 高性能golang 阅读(10920) 评论(2) 推荐(2) 编辑
html2txt
摘要:我们已经利用larbin从网上抓取了六千多个HTML文件,在使用clucene建立索引之前,我们还需要把HTML文件中的各种无用的标签去掉,形成只包含有实际内容的文档.html2txt就是这样一个工具. 阅读全文
posted @ 2011-04-30 22:27 高性能golang 阅读(4909) 评论(0) 推荐(0) 编辑
Larbin的配置和使用
摘要:larbin和启动和重启,以及input system的使用.详细讲解了larbin的配置的三个文件:larbin.conf,options.h,types.h larbin抓取的文件保存在save文件夹下,但是文件都没有.html后缀,默认情况下不是以浏览器打开,很不方便.写一下Perl脚本,把所以文件加一下".html"的后缀,其中用到了File::Find模块. 阅读全文
posted @ 2011-04-28 16:47 高性能golang 阅读(10318) 评论(1) 推荐(1) 编辑
Larbin简介,及其在Ubuntu10.04下的编译安装
摘要:Larbin简介,及其在Ubuntu10.04下的编译安装.解决找不到makedepend命令及iostream.h等问题. 阅读全文
posted @ 2011-04-28 11:16 高性能golang 阅读(2199) 评论(2) 推荐(1) 编辑

点击右上角即可分享
微信分享提示