庖丁分词实例中遇到的错误及解决方案

本段时间在进行用Hadoop进行文本挖掘,在进行挖掘的时候用到的文本分词工具为大家所熟知的庖丁分词工具,下面是在实践项目中,出现的错误及相应的查找资料解决方案

遇到的错误一:

Exception in thread "main" net.paoding.analysis.exception.PaodingAnalysisException: dic home should not be a file, but a directory!

    at net.paoding.analysis.knife.PaodingMaker.setDicHomeProperties(PaodingMaker.java:338)

    at net.paoding.analysis.knife.PaodingMaker.getDicHome(PaodingMaker.java:261)

    at net.paoding.analysis.knife.PaodingMaker.loadProperties(PaodingMaker.java:189)

    at net.paoding.analysis.knife.PaodingMaker.loadProperties(PaodingMaker.java:228)

    at net.paoding.analysis.knife.PaodingMaker.loadProperties(PaodingMaker.java:228)

    at net.paoding.analysis.knife.PaodingMaker.getProperties(PaodingMaker.java:130)

    at net.paoding.analysis.analyzer.PaodingAnalyzer.init(PaodingAnalyzer.java:70)

    at net.paoding.analysis.analyzer.PaodingAnalyzer.<init>(PaodingAnalyzer.java:59)

    at net.paoding.analysis.analyzer.PaodingAnalyzer.<init>(PaodingAnalyzer.java:52)

    at examples.TokenizeWithPaoding.main(TokenizeWithPaoding.java:12)

net.paoding.analysis.exception.PaodingAnalysisException: dic home should not be a file, but a directory!

很直接原因是——文件夹路径中,命名文件夹的名字有空格

检查发现:G:\Users\Administrator\Workspaces\MyEclipse 8.6\Tokenizer

的确如此:如上面的MyEclipse与8.6之间有个空格

解决方案:现在G:\Users\Administrator\Workspaces\MyEclipse 8.6\Tokenizer文件夹中拷贝Tokenize工程,到桌面,之后在Myeclipse8.6集成开发工具中删除Tokenize工程,之后将桌面上的Tokenize工程导入到Myeclipse 8.6集成开发工具中,调试就可以成功。

 

可供参考的网址为:http://bbs.csdn.net/topics/390433862

遇到的错误二:

package examples;
import java.io.StringReader;
import net.paoding.analysis.analyzer.PaodingAnalyzer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
 
public class TokenizeWithPaoding {
    public static void main(String[] args){
       String line = "中华民族共和国";      
       PaodingAnalyzer analyzer = new PaodingAnalyzer();
       StringReader sr = new StringReader(line);
       TokenStream ts = analyzer.tokenStream(" ", sr);
       try{
           while(ts.incrementToken()){
              CharTermAttribute ta = ts.getAttribute(CharTermAttribute.class);
              System.out.println(ta.toString());  
           }
       }catch(Exception e){
           e.printStackTrace();
       }
    }
}

在while循环中的ts.incrementToken()中找不到incrementToken()方法,提示org.apache.lucene.analysis.TokenStream;没有该方法

问题出现的原因:lucene-core-X.X.X.jar版本的问题,要用到

lucene-core-3.X.X.jar以上的版本

下载地址:lucene-core-3.6.0.jar

http://download.csdn.net/detail/zhongwen7710/6923753

下载地址:lucene-core-3.0.0.jar

http://download.csdn.net/detail/zhongwen7710/6923767

解决方案:

下载上面的压缩包覆盖版本较低的lucene-core-X.X.X.jar版本即可

问题三:出现java.lang.AbstractMethodError:org.apache.lucene.analysis.TokenStream.incrementToken()Z如下错误,摘录效果如下

Exception in thread "main" java.lang.AbstractMethodError: org.apache.lucene.analysis.TokenStream.incrementToken()Z

    at examples.TokenizeWithPaoding.main(TokenizeWithPaoding.java:16)

问题分析:可能是由于paoding-analysis.jar的版本与lucene版本不兼容,由于上述实验用的lucene的版本为lucene-core-3.6.0.jar版本,而paoding-analysis.jar是通过lucene-2.X.X版本以下的编译成功的。

解决方案:下载paoding-analysis3.0.jar编译包,该包是通过lucene-3.X.X版本编译paoding源代码得到,之后替代旧的版本的paoding-analysis.jar包,之后就可以进行上述代码就可以编译成功了。

下载网站:paoding-analysis3.0.jar

http://download.csdn.net/detail/zhongwen7710/6923751

可供参考的网站:http://blog.csdn.net/ccode/article/details/5901762

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值