`
deepfuture
  • 浏览: 4401770 次
  • 性别: Icon_minigender_1
  • 来自: 湛江
博客专栏
073ec2a9-85b7-3ebf-a3bb-c6361e6c6f64
SQLite源码剖析
浏览量:80082
1591c4b8-62f1-3d3e-9551-25c77465da96
WIN32汇编语言学习应用...
浏览量:70095
F5390db6-59dd-338f-ba18-4e93943ff06a
神奇的perl
浏览量:103409
Dac44363-8a80-3836-99aa-f7b7780fa6e2
lucene等搜索引擎解析...
浏览量:285915
Ec49a563-4109-3c69-9c83-8f6d068ba113
深入lucene3.5源码...
浏览量:15017
9b99bfc2-19c2-3346-9100-7f8879c731ce
VB.NET并行与分布式编...
浏览量:67606
B1db2af3-06b3-35bb-ac08-59ff2d1324b4
silverlight 5...
浏览量:32173
4a56b548-ab3d-35af-a984-e0781d142c23
算法下午茶系列
浏览量:46000
社区版块
存档分类
最新评论

为Nutch 1.0添加JE中文分词

阅读更多

先下载Nutch 1.0的源文件:

svn co http://svn.apache.org/repos/asf/lucene/nutch/tags/release-1.0 ./nutch-1.0

更改查询语法解析部分:

改变tokenize的方式(原来为中文单字识别)

modify “src/java/org/apache/nutch/analysis/NutchAnalysis.jj”line 130:

| <SIGRAM: <CJK> >

change to:

| <SIGRAM: (<CJK>)+ >

run “javacc”

cd nutch-1.0/src/java/org/apache/nutch/analysis

/usr/local/javacc-3.2/bin/javacc NutchAnalysis.jj

3 files will be regenerated:

NutchAnalysis.java

NutchAnalysisTokenManager.java

NutchAnalysisConstants.java

中文分析部分(查询和索引):

将analyzer更换为JE中文分析器

a). copy “je-analysis-1.5.3.jar” to lib/b). modify NutchDocumentAnalyzer.java

$ svn diff src/java/org/apache/nutch/analysis/NutchDocumentAnalyzer.java

Index: src/java/org/apache/nutch/analysis/NutchDocumentAnalyzer.java

===================================================================

--- src/java/org/apache/nutch/analysis/NutchDocumentAnalyzer.java (revision 764668)

+++ src/java/org/apache/nutch/analysis/NutchDocumentAnalyzer.java (working copy)

@@ -27,6 +27,8 @@

import org.apache.lucene.analysis.Token;

import org.apache.hadoop.conf.Configuration;

+import jeasy.analysis.*;

+

/**

* The analyzer used for Nutch documents. Uses the JavaCC-defined lexical

* analyzer {@link NutchDocumentTokenizer}, with no stop list. This keeps it

@@ -65,8 +67,14 @@

/** Constructs a {@link NutchDocumentTokenizer}. */

public TokenStream tokenStream(String field, Reader reader) {

- return this.commonGrams.getFilter(new NutchDocumentTokenizer(reader),

- field);

+ if ("content".equals(field) || "title".equals(field) || "DEFAULT".equals(field)) {

+ MMAnalyzer analyzer=new MMAnalyzer();

+ return analyzer.tokenStream(field, reader);

+ }

+ else {

+ return this.commonGrams.getFilter(new NutchDocumentTokenizer(reader),

+ field);

+ }

}

}

重新编译Nutch:

在build.xml添加一条指令(在第195行的下面加入一行),使的编译war文件的时候加入je-analysis的jar文件。build.xml

<lib dir="${lib.dir}">

<include name="lucene*.jar"/>

<include name="taglibs-*.jar"/>

<include name="hadoop-*.jar"/>

<include name="dom4j-*.jar"/>

<include name="xerces-*.jar"/>

<include name="tika-*.jar"/>

<include name="apache-solr-*.jar"/>

<include name="commons-httpclient-*.jar"/>

<include name="commons-codec-*.jar"/>

<include name="commons-collections-*.jar"/>

<include name="commons-beanutils-*.jar"/>

<include name="commons-cli-*.jar"/>

<include name="commons-lang-*.jar"/>

<include name="commons-logging-*.jar"/>

<include name="log4j-*.jar"/>

<include name="je-analysis-*.jar"/> <!-- add this line -->

</lib>

compile:

cd nutch-1.0

export ANT_HOME=/usr/local/apache-ant-1.7.1

/usr/local/apache-ant-1.7.1/bin/ant

/usr/local/apache-ant-1.7.1/bin/ant war

使用新生成的含中文分词功能的模块:只用到刚才编译生成的下面三个文件,替换Nutch 1.0的tarball解压后的对应文件

build/nutch-1.0.jar

build/nutch-1.0.job

build/nutch-1.0.war

别忘了把“je-analysis-1.5.3.jar” 拷贝到解压后的Nutch 1.0 tarball中的lib/

That’s it.

=============================

搞了好几天的nutch中文分词,今天终于搞定了,网上的文章有两种方式,其中一种是直接修改源码的方式,另外一种是使用插件的方式。应该说这些资料的思路都是正确的,作者想必也一定弄出来过。不过,过程略显简单,对后来者的学习帮助不是很大。

下面就将中文分词的实现方法予以介绍,请注意,本文的基础是你的电脑上已经成功配置好nutch并实现了中文的单字分词。这里只是实现更为合理的非单字分词。

你需要用到的工具有:javacc 、ant、JE分词包。

1.对建立索引所用分词工具的修改

将下载的中文分词包放到lib目录下,改名为analysis-zh.jar(当然,你也可以不用改)。找到下面文件

src\java\org\apache\nutch\analysis\NutchDocumentAnalyzer.java

修改tokenStream方法如下

public TokenStream tokenStream(String fieldName, Reader reader) {
Analyzer analyzer;
analyzer= new MMAnalyzer();
return analyzer.tokenStream(fieldName, reader);
}

注意:由于加入信息的分析类,你需要将该类导入。使用如下语句。

import jeasy.analysis.*;

2.对查询所用分析部分的修改

src\java\org\apache\nutch\analysis\中的NutchAnalysis.jj文件

将 <SIGRAM: <CJK> >

改为:| <SIGRAM: (<CJK>)+ >

使用javacc工具将NutchAnalysis.jj生成java文件,共会生成7个java文件,将他们拷贝到下面的文件夹中替 换原有文件。

src\java\org\apache\nutch\analysis

如何安装与使用javacc?

下载javacc并解压,然后将javacc的主目录添加到环境变量下。进入命令行,输入javacc,如果不出现不能识别该命令之类的说法,证明安装成功。

进入NutchAnalysis.jj文件所在的目录,输入javacc NutchAnalysis.jj命令就会生成7个java文件了。

3.重新编译工程文件

这里你需要用到ant工具了,那么ant工具怎么安装呢?

ant的安装与配置与 javacc类似,下载后解压,然后在path环境变量中加如指向ant下的bin文件夹的路径。

使用:从命令行进入nutch目录中,输入ant命令,它会自动根据当前目录下的build.xml进行重建。重建完毕后会在改目录下产生一个build文件夹。

4.重建后的文件替换

一、将nutch-0.x.x.job文件拷贝出来替换nutch目录下的同名文件。

二、将\build\classes\org\apache\nutch\analysis目录下的所有文件拷贝替换nutch-0.x.x.jar中org\apache\nutch\analysis目录下的文件。

三、将nutch-0.x.x.jar文件和你的分词包(我的是analysis-zh.jar)拷贝到tomcat中WEB-INF\lib下面。

5.重新爬行与建立索引,重新启动tomcat即可。

分享到:
评论
1 楼 wzjin 2010-03-17  
不错的文章!

相关推荐

    Nutch1.0的API chm格式

    Nutch1.0的API,不过注意没有搜索功能

    Nutch1.0:Nutch1.0修改版(整合中文分词)原始码修改,编译打包-修改

    这个修改版可能集成了如jieba分词库或HanLP等流行的中文分词工具,它们能够将连续的汉字序列切分成具有实际语义的词语,为后续的文本分析和信息检索提供基础。 在编译打包过程中,开发者可能执行了以下步骤: 1. ...

    开源搜索引擎nutch-1.0.part01.rar

    Nutch 是一个开源的、Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。

    Nutch 1.0part6

    Nutch 是一个开源Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。

    Nutch1.0 part4

    Nutch 是一个开源Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。

    Nutch1.0part5

    Nutch 是一个开源Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。

    基于Nutch中文分词的研究与实现

    作为舆情监测系统的一部分,本文的目标是基于Nutch,同时,结合目前最常用中文分词技术,根据不同的中文分词方法,实验并得出不同分词方法在性能以及使用环境上的优缺点,以此为舆情监测系统选择合适的中文分词方法...

    Eclipse中编译Nutch-1.0

    ### Eclipse中编译Nutch-1.0:深入解析与实践指南 #### 一、环境准备与基础构建 在Linux环境中使用Eclipse编译Nutch-1.0,首要任务是确保开发环境满足项目需求。这包括确认Eclipse的JDK、JRE版本至少为1.6或更高...

    nutch中文分词

    nutch应用,nutch中文分词,nutch中文乱码

    实验报告(利用Nutch和IKanalyzer构造中文分词搜索引擎)

    在Nutch 1.2中集成IKAnalyzer,需要修改NutchAnalysis.jj文件,将SIGRAM规则调整为支持连续的汉字,然后在代码中初始化IKTokenizer,使其能够处理输入的文本流。通过这种方式,Nutch现在能够对抓取的网页内容进行...

    nutch-1.0part1

    Nutch 是一个开源Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。

    开源搜索引擎nutch-1.0.part09.rar

    Nutch 是一个开源的、Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。 nutch 1.0

    开源搜索引擎nutch-1.0.part08.rar

    Nutch 是一个开源的、Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。 nutch 1.0

    开源搜索引擎nutch-1.0.part07.rar

    Nutch 是一个开源的、Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。 nutch 1.0

    Nutch中文分词插件的编写与配置

    Nutch中文分词插件的编写与配置,由于Internet的迅猛发展,使得用户查找信息犹如大海捞针,而搜索引擎则能帮用户很好的解决这个问题。 Nutch是用java语言开发的,基于Lucene的完整的网络搜索引擎,并采用插件机制进行...

    nutch-1.0-dev.jar

    nutch-1.0-dev.jar nutch devlope

    Nutch-1.0分布式安装手册.rar

    Nutch-1.0分布式安装手册是一份详细指导如何在多台计算机上部署和配置Apache Nutch的文档。Apache Nutch是一款开源的网络爬虫软件,用于抓取互联网上的网页并进行索引,是大数据领域中搜索引擎构建的重要工具。这份...

    中文分词工具word-1.0,Java实现的中文分词组件多种基于词典的分词算法

    word分词是一个Java实现的中文分词组件,提供了多种基于词典的分词算法,并利用ngram模型来消除歧义。 能准确识别英文、数字,以及日期、时间等数量词,能识别人名、地名、组织机构名等未登录词。 同时提供了Lucene...

Global site tag (gtag.js) - Google Analytics