java - 如何编译调用MeCab - 日语词性和词法分析器的java文件?

标签 java unicode classpath text-analysis mecab

我正在尝试使用MeCab(http://mecab.sourceforge.net/#download)对日语句子进行分词,并按词性标记每个单词。我按照这些说明安装了 MeCab http://mecab.sourceforge.net/#install-unix 。由于我不想编写 shell 脚本来处理 150,000 个句子(因为我的 Mac OS X 终端在显示日语字符时出现问题),所以我使用现有的 Java 绑定(bind): http://sourceforge.net/projects/mecab/files/mecab-java/0.98pre3/ 。此时,我正在尝试编译并运行给定的 test.java 文件:

import org.chasen.mecab.MeCab;
import org.chasen.mecab.Tagger;
import org.chasen.mecab.Node;

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");
  }
}

这是自述文件:

1. Build UTF-8 dictionary

2. How to use?

  See test.java as sample program.

  % java -classpath MeCab.jar test -d ../dic

我编译:javac test.java。然后我运行: java -classpath MeCab.jar test -d ../dic。结果出现以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: //
Caused by: java.lang.ClassNotFoundException: ..
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248)

我不太理解这个 mecab-java-0.98pre3 目录的层次结构,所以不知道如何实际编译和运行这个 test.java。伙计们,有什么想法吗?谢谢!

最佳答案

你第一次运行过make吗?第一步是实际构建 mecab-java 绑定(bind)库。

$ tar -xvzf mecab-java-0.xx.tar.gz
$ cd mecab-java-0.xx
$ make

这将导致输出以下 2 个文件:

  1. MeCab.jar
  2. libMeCab.so

但是,这假设您的平台是 Linux,您可以访问 make 程序,并且您的 Java 包含文件位于/usr/local/jdk/include。

如果不是这种情况,请尝试阅读 Makefile 以查看是否可以在您自己的环境中构建它。

关于java - 如何编译调用MeCab - 日语词性和词法分析器的java文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5878186/

相关文章:

java - 如何在实现 Action 监听器时设置不同的 Action 命令?

mysql - 使用带有多字节字符的 MySQL SELECT WHERE IN

php - mysql_fetch_array 返回非 Unicode 文本

java - 在交付单个 jar 并使用反射时,如何避免在命令行中指定完全限定的类名?

java - 如何在 Spring 中自动重新连接 DataSource 连接?

java - 是否可以在Java嵌入式环境上运行Java/Swing应用程序?

java - 在选择排序中的每次遍历中查找数组中的最小值和最大值

string - 如何在 Dart 中反转包含代理对的字符串?

java - 使用 Ivy 的类路径问题

java - 我如何告诉我的应用程序它不应该使用 jar 中的外部服务提供者?