java日文分词_日语分词组件mecab使用 — 分词(二) | 学步园

mecab分词组建更新的比较快,而且开源,使用起来也很方便。 项目地址:https://code.google.com/p/mecab/

1. 下载词典:

如果是linux上使用 下载  https://code.google.com/p/mecab/downloads/detail?name=mecab-jumandic-7.0-20130310.tar.gz&can=2&q=

如果是windows上使用 下载 https://code.google.com/p/mecab/downloads/detail?name=mecab-0.996.exe&can=2&q=

2. 安装,这个分词组建和别的不一样,需要安装然后指定目录就可以使用。一般的自由软件安装顺序相同。

linux下安装:

% tar zxfv mecab-X.X.tar.gz

% cd mecab-X.X

% ./configure

% make

% make check

% su

# make install

% tar zxfv mecab-ipadic-2.7.0-XXXX.tar.gz

% mecab-ipadic-2.7.0-XXXX

% ./configure

% make

% su

# make install

Windows 上直接执行 exe文件,按说明安装。比如安装到了 C:\Program Files\MeCab  目录下。

3.  分词,在windows上做的例子。

下载java开发的sdk工具  https://code.google.com/p/mecab/downloads/detail?name=mecab-java-0.996.tar.gz&can=2&q=

需要在环境变量中设置 path路径 指向 C:\Program Files\MeCab\bin,如果是linux 需要设定 LD)LIBRARY_APTH

如果在eclipse下开发,需要在执行文件时设置环境变量 path = C:\Program Files\MeCab\bin

public class test {

static {

try {

System.loadLibrary("MeCab");

} catch (UnsatisfiedLinkError e) {

System.err.println("Cannot load the example native code.\nMake sure your LD_LIBRARY_PATH contains \'.\'\n" + e);

System.exit(1);

}

}

public static void main(String[] argv) {

System.out.println(MeCab.VERSION);

Tagger tagger = new Tagger();

String str = "太郎は二郎にこの本を渡した。";

System.out.println(tagger.parse(str));

Node node = tagger.parseToNode(str);

for (;node != null; node = node.getNext()) {

System.out.println(node.getSurface() + "\t" + node.getFeature());

}

System.out.println ("EOS\n");

Model model = new Model();

Tagger tagger2 = model.createTagger();

System.out.println (tagger2.parse(str));

Lattice lattice = model.createLattice();

System.out.println(str);

lattice.set_sentence(str);

if (tagger2.parse(lattice)) {

System.out.println(lattice.toString());

for (node = lattice.bos_node(); node != null; node = node.getNext()) {

System.out.println(node.getSurface() + "\t" + node.getFeature());

}

System.out.println("EOS\n");

}

lattice.add_request_type(MeCab.MECAB_NBEST);

lattice.set_sentence(str);

tagger2.parse(lattice);

for (int i = 0; i < 10; ++i) {

if (lattice.next()) {

System.out.println("nbest:" + i + "\n" +

lattice.toString());

}

}

}

4.   还有一个组件是基于 mecab,叫cmecab-java, 项目地址  http://code.google.com/p/cmecab-java/

http://code.google.com/p/cmecab-java/downloads/detail?name=mecab-0.996_x64.zip&can=2&q=   这个是支持 win 64位系统。

mecab 的安装和以上一样,只是提供的 sdk 功能比较强大。

sdk 下载地址  http://code.google.com/p/cmecab-java/downloads/detail?name=cmecab-java-2.0.1.zip&can=2&q=

要先设置环境变量 path =  C:\Program Files\MeCab\bin

import net.moraleboost.mecab.Lattice;

import net.moraleboost.mecab.Tagger;

import net.moraleboost.mecab.impl.StandardTagger;

import net.moraleboost.mecab.Node;

public static void main(String[] args) throws Exception

{

// Taggerを構築。

// 引数には、MeCabのcreateTagger()関数に与える引数を与える。

StandardTagger tagger = new StandardTagger("");

// バージョン文字列を取得

System.out.println("MeCab version " + tagger.version());

// Lattice(形態素解析に必要な実行時情報が格納されるオブジェクト)を構築

Lattice lattice = tagger.createLattice();

// 解析対象文字列をセット

String text = "本日は晴天なり。";

lattice.setSentence(text);

// tagger.parse()を呼び出して、文字列を形態素解析する。

tagger.parse(lattice);

// 形態素解析結果を出力

System.out.println(lattice.toString());

// 一つずつ形態素をたどりながら、表層形と素性を出力

Node node = lattice.bosNode();

while (node != null) {

String surface = node.surface();

String feature = node.feature();

System.out.println(surface + "\t" + feature);

node = node.next();

}

// lattice, taggerを破壊

lattice.destroy();

tagger.destroy();

}

如果要在eclipse下执行,一定要记住 在eclipse中设置环境变量,不然会报错,还要导入 cmecab-2.0.1.jar  bridj-0.6.1.jar 包

java.lang.UnsatisfiedLinkError?:

net.moraleboost.mecab.impl.StandardTagger?.mecab_new2(Lorg/bridj/Pointer;)Lorg/bridj/Pointer;

Lucene使用方法

StandardMeCabAnalzyer、StandardMeCabTokenizer、FeatureRegexFilter  和其他分析器一样使用。

Solr使用方法

Solr的lib包、cmecab-(ver).jar、bridj-0.6.1.jar 都需要导入

schema.xml 中修改 分析器 StandardMeCabTokenizerFactory  等类型的定义。第一个是设置 mecab分词的。一般中文分词常用的是 cjk(第三个配置)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值