为Nutch 1.0添加JE中文分词

je-analysis-1.5.1.jar je-analysis-1.5.1.jar 中科院的分词器,用的人很多,需要Lucene1.9-2.4版本才能使用 立即下载

先下载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! 立即下载

相关推荐

分词的jar包

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

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-Analysis中文分词

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

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

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

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

豆包大模型API调用两种方法

ps: 因为是自用,所以这里图方便采用硬编码密钥的形式;如果有需求/安全风险,建议参考官方教程设置ARK_API_KEY环境变量的方式。坏处是:看别人的教程走了一大圈弯路hh;基础调用的话方法一就可以满足了,也比较方便快捷,容易上手。将 <Model> 替换为 Endpoint ID即可。创建就按照提示填写信息就行,需要实名认证,有免费额度。绿框框里就是Endpoint ID。

kkkkkkkkkasey的博客 1万+

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

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

xiewei906的专栏 820

机器学习模型——非线性回归

升维是一种常用的处理非线性问题的方法,它通过将原始数据从低维空间映射到高维空间来增强模型的表达能力。我们可以看出,二维数据用一维直线很难去很好的拟合。升维里的degree设置的不易过大,否则容易造成维度灾难。升维后,拟合的线与原数据比较符合。将非线性问题转换为线性问题。

qq_60688380的博客 1421

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

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

nuoline的专栏 666

深入解析Cuk、Zeta和Sepic拓扑:非隔离型开关电源的设计奥秘

本文深入解析了Cuk、Zeta和Sepic三种非隔离型开关电源拓扑的设计奥秘。它们均能实现升降压转换,但特性各异:Cuk拓扑输出反向电压,输入输出纹波极低;Sepic拓扑输出同极性电压,应用广泛;Zeta拓扑输出纹波小,适合精密供电。文章详细对比了其电路结构、工作原理、核心公式及选型指南,帮助工程师根据输入电压范围、输出极性及纹波要求,灵活选择最合适的拓扑方案。

weixin_28308325的博客 477

2024年上半年网络工程师下午真题及答案解析

位于MPLS域边缘、连接其他网络的LSR称为( 3 ),区域内部的LSR称为核心LSR(CoreLSR)IP报文进入MPLS网络时,MPLS入口设备分析IP报文的内容并为其添加合适的标签,所有MPLS网络中的LSR根据标签转发数据,当该IP报文离开MPLS网络时,标签由出口LER弹出。LSP的出口LER称为( 6 )。某高校网络拓扑如下图所示,两校区核心(CORE-1、CORE-2),出口防火墙(NGFW-1、NGFW-2)通过校区间光缆互联,配置OSPF实现全校路由收敛,两校区相距40km。

bsefef的博客 2473

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

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

成长~点滴~~ 270

数仓项目6.0(一)

数据同步工具种类繁多,大致可分为两类,一类是以DataX、Sqoop为代表的基于Select查询的离线、批量同步工具,另一类是以Maxwell、Canal为代表的基于数据库数据变更日志(例如MySQL的binlog,其会实时记录所有的insert、update以及delete操作)的实时流式同步工具。DataX的使用,用户只需根据数据的数据源和目的地选择相应的Reader和Writer,并将Reader和Writer的信息配置在一个json文件中,然后执行如下命令提交数据同步任务即可。

qq_58551342的博客 2847

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

【YOLO11改进 - 检测头】Detect_LSCD检测头:量化的检测头,进一步提升模型的检测效率和精度

【YOLO11改进 - 检测头】Detect_LSCD检测头:量化的检测头,进一步提升模型的检测效率和精度

专注于图像领域,主要研究内容包括计算机视觉和深度学习,特别是在图像分类、目标检测和图像生成等方面有深入的研究和实践经验。 4095

高斯过程的数学理解

G澳大利亚的过程是有益的,特别是当我们有少量数据时。当我在制造业担任数据科学家时,我们的团队使用这种算法来揭示我们接下来应该进行哪些实验条件。但是,此算法不如其他算法流行。在这篇博客中,我将通过可视化和 Python 实现来解释高斯过程 [1] 的数学背景。

gongdiwudu的专栏 3608

Nutch 分词 中文分词 paoding 疱丁

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

mutou12456的专栏 2979

STM32开发 -- LIS3DH三轴加速度计开发详解

这次要讲一下LIS3DH三轴加速度计的开发使用,之前是有讲过 MPU6050开发 的,但当时是在Linux下做的。额,还是个半成品,哈哈。现在手边有STM32的开发板,可以实实在在的来实现以下卡尔曼滤波了。 一、LIS3DH初识 依照惯例,先看一下手册,大致先了解一下,LIS3DH是什么模块。 下载:LIS3DH datasheet 1、描述 LIS3DH是一款超低功耗高性能三轴线性加速度计,属于...

不积跬步,无以至千里 2万+

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

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

为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

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Nutch1.2添加JE分词器

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

xiaoyu714543065的专栏 985

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

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
上一篇: ubuntu下nutch-1.0的安装和配置错误排除
下一篇: 为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、付费专栏及课程。

余额充值