`
softkid
  • 浏览: 101675 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Nutch使用入门(四)——添加中文分词

    博客分类:
  • java
阅读更多
/** 
 *本人亦初学者,如有不正确的地方请多多指教。谢谢! 
javacc NutchAnalysis.jj  *部分内容参考自互联网,如有冒犯,请见谅。
 **/ 

 基本信息

 本文介绍了如果为Nutch添加中文分词,详细描述了添加中文分词的步骤和应该注意的问题。

 

 准备工作

  1.Nutch,到http://nutch.apache.org/ 下载nutch-1.0.tar.gz,下载后直接解压缩即可。

  2.javacc,到https://javacc.dev.java.net/ 下载javacc-5.0.zip,下载后同样解压缩,将“javacc路径/bin”添加到环境变量path,在windows命令窗口中输入javacc,未提示错误表示javacc安装成功。

  3.ant,到http://ant.apache.org/ 下载ant,下载后解压缩,将"ant路径/bin"添加到环境变量path,在windows命令窗口输入ant,未提示错误表示ant安装成功。

  4.IKAnalyzer,到http://code.google.com/p/ik-analyzer/downloads/list 下载IKAnalyzer,本例使用版本是3.1.1GA。

 

  为Nutch添加中文分词

  1.让Nutch支持中文分词。

    在Nutch目录下,找到src\java\org\apache\nutch\analysis\NutchAnalysis.jj文件,复制到其他的一个目录下,最好该目录下没有java文件,修改NutchAnalysis.jj文件,修改如下:

line 130:
| <SIGRAM: <CJK> >


change to:
| <SIGRAM: (<CJK>)+ > 

将windows命令环境切换到改目录下,执行如下命令:

javacc NutchAnalysis.jj

 生成了7个java文件,其中NutchAnalysis.java 58行抛出异常,捕获异常即可。将这7个java文件替换掉src\java\org\apache\nutch\analysis目录下相同名称的文件。

 

  2.添加IKAnalyzer。

    将下载好的IKAnalyzer3.1.1Stable.jar复制到Nutch目录下的lib文件夹中,修改src\java\org\apache\nutch\analysis目录下NutchDocumentAnalyzer.java文件,添加import语句,修改tokenStream方法。代码如下:

import org.wltea.analyzer.lucene.IKAnalyzer;
 
 public TokenStream tokenStream(String fieldName, Reader reader) {
    Analyzer analyzer;
    analyzer = new IKAnalyzer();
    return analyzer.tokenStream(fieldName, reader);
  }

 

  3.重新编译Nutch。

   修改Nutch目录下build.xml文件,在195行后加入如下代码:

<include name="IKAnalyzer3.1.1Stable.jar"/>

    将命令环境切换到Nutch目录下,执行ant命令。出现如下错误:

Buildfile: build.xml

init:

BUILD FAILED
D:\nutch\nutch-1.0\build.xml:62: Specify at least one source--a file or resource
 collection.

Total time: 0 seconds

    解决办法有两个:

    (1). 从SVN下载缺失的 config/*.template文件。
    (2).修改 build.xml,去掉62-64行,让它不再需要template文件。

 

   将编译生成的build文件夹下的nutch-1.0.job文件替换掉Nutch目录下的nutch-1.0.job文件。

   将编译生成的build\classes下文件打包成nutch-1.0.jar,替换掉Nutch目录下的nutch-1.0.jar文件。打包命令如下:

jar cvf nutch-1.0.jar org

    将nutch-1.0.war包中的nutch-1.0.jar替换为刚刚生成的nutch-1.0.jar,并且加入IKAnalyzer3.1.1Stable.jar.

 

    至此,全部工作都已经完成。接下来爬行和搜索工作可以参考我的其他两篇入门文章:

   Nutch 使用入门(一)——准备工作及Intranet抓取    

    Nutch 使用入门(二)——互联网抓取

 

分享到:
评论
3 楼 commanderhyk 2010-07-15  
刚才看了看nutch生成的代码,好像是缺失了一些属性。我试着补上
Analyzer analyzer;  
analyzer = new IKAnalyzer();
TokenStream tokenStream = analyzer.tokenStream(fieldName, reader);
tokenStream.addAttribute(TypeAttribute.class);//补充
tokenStream.addAttribute(FlagsAttribute.class);//补充
tokenStream.addAttribute(PayloadAttribute.class);//补充
tokenStream.addAttribute(PositionIncrementAttribute.class);//补充
return tokenStream;

经过试验通过。可以查出数据了,但不知到原理为什么这么做。
2 楼 commanderhyk 2010-07-15  
最近nutch发布了1.1,在学习中。基本的配置例子都跑通了,正在学习更换切词器,按照您上述的方式都成功的部署了,但是最后查询时候抛出了异常
java.lang.IllegalArgumentException: This AttributeSource does not have the attribute 'org.apache.lucene.analysis.tokenattributes.TermAttribute'.
我开始用 3.2.3后来改成3.1.1都不行。目前不知道如何解决,希望能帮我看看这个问题,如何解决。谢谢了
javaeye上有类似的错误说是能解决,但是没有给出解决办法,以下是连接
http://www.iteye.com/topic/476897?page=2
1 楼 softkid 2010-05-31  
请注意中文分词的版本,我自己就只是用来IKAnalyzer3.1.1Stable,网友试了3.2也行。还有,他试了最新的,但是不行。

相关推荐

    nutch使用&Nutch;入门教程

    “Nutch使用.pdf”和“Nutch入门教程.pdf”这两份文档将详细介绍如何从零开始使用Nutch,包括环境搭建、配置、启动爬虫、监控爬虫状态、查看抓取结果和索引数据等。通过这些教程,你可以快速掌握Nutch的基本操作,并...

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

    实验报告——构建中文分词搜索引擎 本实验的目标是利用开源工具Nutch和IKAnalyzer构建一个中文分词搜索引擎,旨在理解搜索引擎的基本工作流程,掌握网页爬取、分词处理以及搜索功能的实现。实验中,主要涉及的技术...

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

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

    nutch中文分词

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

    Nutch使用入门

    本文档将引导你入门Nutch的基本使用,包括环境配置、部署、爬取网页以及搜索功能的实现。 **环境要求:** 1. **JDK 1.5 或更高版本** - Nutch 需要Java开发环境支持,确保你的系统已经安装了Java,并且版本符合要求...

    nutch帮助文档;nutch学习 入门

    - **文本分析**:Nutch内置了Lucene库,用于分词、去除停用词、词干化等文本预处理。 - **索引和搜索**:抓取并处理后的数据被存储在索引中,用户可以通过查询接口进行搜索。 3. **Nutch架构** Nutch的架构基于...

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

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

    Nutch中文教程nutcher.zip

    nutcher 是 Apache Nutch 的中文教程,在github上托管。nutch社区目前缺少教程和文档,而且教程对应版本号较为落后。nutcher致力于为nutch提供一个较新的中文教程和文档,供开发者学习。 github地址: ...

    Nutch入门教程 高清 带书签

    5. **分词与索引**:使用Analyzer进行中文或英文等语言的分词,然后将分词结果建立倒排索引。 6. **存储**:Nutch使用HDFS(Hadoop分布式文件系统)存储抓取的数据和索引。 7. **检索**:通过Solr或Elasticsearch等...

    Nutch入门教程.pdf

    以上内容构成了Nutch入门教程的核心知识点,从简介、安装配置、初体验、基本原理、分析方法、分布式文件系统以及应用等多方面,详细介绍了Nutch框架及其使用方法,为对搜索引擎感兴趣的用户提供了一个全面的学习资源...

    分享一个Nutch入门学习的资料

    标题中的“Nutch入门学习”指的是Apache Nutch,这是一个开源的网络爬虫项目,用于抓取Web内容并建立搜索引擎。Nutch是大数据处理框架Hadoop的一个重要组成部分,它使用Hadoop进行分布式数据存储和处理。Nutch的学习...

    Nutch使用指南(英文)

    ### Nutch 使用指南 #### 一、概述 Nutch 是一个开源项目,旨在帮助用户构建自己的内部网搜索引擎或面向整个互联网的搜索引擎。本指南将基于 Nutch 的版本 0.7,详细介绍如何设置和配置 Nutch 以进行内部网爬取...

    Nutch入门资料PDF格式

    ### Nutch入门资料知识点概述 #### 一、Nutch简介及安装配置 - **Nutch**: 开源网络爬虫项目,基于Apache Hadoop构建,能够抓取和索引大量网络数据,广泛应用于搜索引擎开发。 - **环境搭建**: - **配置中文API...

    nutch入门.pdf

    Nutch在开发过程中借鉴了学术派和工业派的知识,其核心部分使用MapReduce模型重新实现,展示了分布式处理模型的应用,并吸引了大量研究者尝试新的搜索算法。 扩展性:Nutch的灵活性很高,允许用户根据自己的需求...

    nutch使用文档

    nutch 使用文档 Nutch 是一个开源的网络爬虫工具,使用 Java 语言编写,主要用于爬取和索引互联网上的网页。下面是 Nutch 的使用方法和相关知识点。 Nutch 搭建过程 Nutch 的搭建过程主要包括准备工作、安装 ...

Global site tag (gtag.js) - Google Analytics