为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即可。

MMAnalyzer 分词必导入jar包(lucene-core-2.4.1.jar je-analysis-1.5.3.jar) 网上MMAnalyzer资源太少了,大多数初学者都会少导入JAR包,因为网上的贴的代码只有jeasy.analysis.MMAnalyzer,而没有依赖包lucene-core-2.4.1.jar! 立即下载

相关推荐

JE-Analysis中文分词

最流行、使用最方便的中文分词包,此资源为文件系统而非jar包,使用时Eclipse使用文件导入方式导入,其他编辑器视情况而定,用些编辑器支持将资源复制进工程。实在不行可以将解压后的指明路径或解压至java文件同一目录下。

nutch中文分词(修改源码的方式)

1、需要的jar包      je-analysis-1.5.3.jar  javacc工具  ant 2、部署nutch工程到eclipse中,这一步网上有很多的参考。 3、nutch工程部署好后直接修改org.apache.nutch.analysis包下面的NutchDocumentAnalyzer.java的  tokenStream方法   即将以下代码        /**...

fushengfei的专栏 190

je分词jar文件1.5+1.4l两版本

JE-Analysis1.5.1.jar JE-Analysis1.4.0.jar

转一篇lucene的使用的文章,写的比较全

1 lucene简介 1.1 什么是lucene Lucene是一个全文搜索框架,而不是应用产品。因此它并不像www.baidu.com 或者google Desktop那么拿来就能用,它只是提供了一种工具让你能实现这些产品。 1.2 lucene能做什么 要回答这个问题,先要了解lucene的本质。实际上lucene的功能很单一,说到底,就是你给它若干个字符串,然后它为你提供一个全文...

xiewei906的专栏 820

分词的jar包

中文分词开发所必须的jar包,包括所有,包括所有包括所有

vCenter6.7证书过期导致503报错的全面修复指南:从STS证书更新到SSL信任修复

本文详细解析了VMware vCenter 6.7因STS证书过期导致503服务不可用错误的根本原因,并提供了从诊断、更新STS证书到修复SSL信任链的完整解决方案。通过命令行工具检查证书状态,使用官方脚本更新过期STS证书,并利用lsdoctor工具修复深层SSL信任问题,最终指导用户使用certificate-manager彻底重置所有证书,帮助管理员快速恢复vCenter服务。

pz890123的博客 1293

lucene 分词器

lucene的英文分词器主要用到StandardAnalyzer,中文的主要是极易分词MMAnalyzer(需要单独引jar包je-analysis-1.5.3.jar)。 英文分词的过程:[color=red][size=large]1,关键词切分->2,去除停用词(is of)->3,形态还原(ing,ed,复数等)->4,转化为小写[/size][/color] 中文分词::[c...

点点滴滴的积累 131

某商场G区火灾自动报警与控制系统设计

某商场G区火灾自动报警与控制系统设计 摘要:随着我国经济建设的迅速发展,人民生活水平不断提高,城市用地日益紧张,促使建筑物正朝着高层化、密集化方向发展。高层建筑的特点决定其火灾的危险性和高层建筑的火灾自动报警系统的重要性,一套完整的火灾自动报警及联动控制系统是高层建筑发生火灾时人们生命财产的有利保障,是能否快速准确地发现火情,把火灾扑灭在萌芽状态的关键所在。文章通过消防设计,论述了火灾自动报警及消...

weixin_44026784的博客 5366

nutch-1.0添加JE中文分词-修改源码…

这几天一直在搞nutch中文分词,也转载了好几篇文章,但是都写的比较简单而且有错误,估计原作者肯定也是实现了,今天终于搞定了,介绍一下我实现的方法。 1 nutch有两种方式可以实现自定义的分词: 1>,直接修改源代码,对默认的分词器代码进行修改使其使用自定义中文分词程序。 2> ,插件机制,可以在不修改源代码基础上,以插件形式集成自定义中文分词功能。这中法可以参考nutch已经集成的德语和法语

nuoline的专栏 666

开关电源PCB安规设计避坑指南:从光耦开槽到变压器挡墙,这些细节决定认证成败

本文深入解析开关电源PCB安规设计中的关键细节,包括光耦开槽、变压器挡墙工艺等12个致命要点。通过实际案例和工艺参数表,揭示如何避免认证失败,特别强调爬电距离和电气间隙的精确控制,助力工程师提升产品安全性和认证通过率。

weixin_42548893的博客 203

百度网盘开放平台OAuth 2.0授权全流程解析

本文详细解析了百度网盘开放平台OAuth 2.0授权全流程,包括创建应用、获取凭证、授权码模式详解以及access_token的使用与刷新。通过实际案例和代码示例,帮助开发者快速掌握接口调用技巧,避免常见错误,确保安全高效地接入百度网盘API。

wind6的博客 1266

在tomcat中运行得nutch加入中文分词后的检索

nutch-0.9加入中文分词之后的索引有很多博客已经讲到过 我没有使用Cygwin模拟linux环境,而是在Tomcat中运行的nutch。这个项目工程文件是在我们的项目中的一个war包,而这个war包却是最开始的版本,因此我们要在特定的时候修改掉里面的一些文件。   但遇到一个问题是,加入分词之后放到tomcat里面发现搜索不好使了,用Luke打开索引文件可以看到中文分词的效果明显 可...

成长~点滴~~ 270

泛微E8流程监控指南:如何用SQL实时追踪审批节点状态?

本文详细介绍了如何利用SQL实时监控泛微E8系统中的审批流程状态,包括核心数据表结构解析、全链路监控SQL实战以及智能预警机制设计。通过数据库直接查询和状态关联分析,帮助企业快速定位卡顿节点,提升流程效率。适用于需要优化OA系统流程管理的企业IT人员和业务主管。

weixin_30687051的博客 437

nutch-JE分词

先下载Nutch 1.0的源文件: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”

深未来技术 500

避开这些坑!STM32H750 IAP升级实战:从Bootloader设计到APP接收的完整避坑指南

本文深入探讨STM32H750 IAP升级的完整避坑指南,从Bootloader设计到APP接收的全流程实践。特别针对QSPI Flash运行限制、SRAM跳转机制和固件校验等核心问题,提供工业级解决方案,帮助开发者提升升级成功率和系统稳定性。

weixin_30471561的博客 275

016、自动标注方案实战:用大模型(SAM/Grounding DINO)生成 YOLO 格式伪标签

本文介绍了一种利用大模型自动生成YOLO格式伪标签的实战方案。针对传统人工标注效率低、易出错的问题,作者提出结合Grounding DINO(零样本检测)和SAM(精细分割)的优势:前者快速生成候选框,后者优化边界精度。文章详细阐述了技术选型理由(平衡速度与精度)、环境搭建避坑指南(关键依赖版本)、核心三步流程(检测-分割-格式转换)以及后处理技巧(置信度分级过滤)。实验表明,该方案相比纯人工标注可节省80%时间,且经过SAM优化的边界框精度提升10-15%。特别强调了工程细节:文本描述格式、阈值设定、小目

zzfmlxs的博客 544

Nutch 分词 中文分词 paoding 疱丁

Nutch中文分词总结2009年06月10日 星期三 22:381 中文分词介绍中文分词是在做检索类系统时需要重点考虑的一个因素。Nutch的本土化过程也需要更改对中文分词的支持。目前,Nutch中文分词方式大致有两种方式:一是修改源代码。这种方式是直接对Nutch分词处理类进行修改,调用已写好的一些分词组件进行分词。二是编写分词插件。这种方式是按照Nutch定义的插件

mutou12456的专栏 2979

华为OD机考双机位C卷 - 完美走位 (Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 完美走位(OD上机考试双机位C卷)。提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。

算法大师! 1125

nutch中文分词,改源码

<br />安装了nutch,但是默认的中文分词只能按照单个汉子分,使用起来十分不方便,于是到处查找资料,终于找到了几种中文分词插件,如ictcals,je,paoding,CJK等。<br />由于je分词java支持较好,且可以自定义字典单词,所以最后选用je分词最为nutch中文分词工具,主要步骤如下:<br />(1)下载je分词包放到nutch的lib文件夹下<br />(2) 修改src/java/org/apache/nutch/analysis中的 NutchAnalysis.jj ,将<

zhblue的专栏 1109

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

为Nutch 1.0添加JE中文分词

先下载Nutch 1.0的源文件: 先下载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/Nut

nuoline的专栏 616

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Nutch1.2添加JE分词器

你需要用到的工具有:javacc 、ant、JE分词包。 1.对建立索引所用分词工具的修改 将下载的中文分词包放到lib目录下,改名为analysis-zh.jar(当然,你也可以不用改)。找到下面文件 (1)src\java\org\apache\nutch\analysis\NutchDocumentAnalyzer.java 修改tokenStream方法如下

xiaoyu714543065的专栏 985

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Nutch1.2 添加IKAnalyzer中文分词

原版nutch中对中文的处理是按字划分,而不是按词划分,我们可以为其添加一些中文分词插件,例如IKAnalyzer。参看了网上很多教程,最后也没能成功,最后综合了几个教程的内容,最终成功。 首先作以下几点说明,以方便理解: (1)目前,Nutch中文分词方式大致有两种方式: 一是修改源代码。这种方式是直接对Nutch分词处理类进行修改,调用已写好的一些分词组件进行分词。 二是编写分词插件。

xiaoyu714543065的专栏 700

nutch-1.0添加imdict-chinese-anal…

1 前言 昨天在nutch中添加了JE中文分词,今天有试了下基于中科院的多层隐马模型的分词组件,imdict-chinese-analyzer,目前这个组件已经正式集成到lucene-3.0,具体在要用到lucene-analyzers-3.0.1.jar 和  lucene-smartcn-3.0.1.jar 这二个包在contrib\analyzers文件,由于nutch-1.0中的lucen

nuoline的专栏 3303
上一篇: 为Nutch 1.0添加JE中文分词
下一篇: 在什么是自然语言处理中的中文分词技术?
deepfuture
博客等级 码龄17年 210粉丝 1287原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值