0

我有一个小程序,用户可以在其中输入 10-20 字长的短句。然后我想在 WordNet 中搜索用户指定的术语,并检索具有上位词和下位词的意义列表。

我希望与指定术语 AND 句子最相关的感官显示在列表顶部。用户输入涉及的文本不多,所以我希望处理速度很快。我找到了一个很好的资源,但我想知道我是否可以以某种方式简化所涉及的过程/代码?从 pdf 中的第 32 页开始: .pdf 文件的快捷方式

  1. 加载器 - 从数据源 1 加载数据并将其转换为字符串。
  2. Parser - 通过将字符串解析为带有单词的句子,将其转换为文档对象。
  3. POS-tagger - 获取一个文档对象并确定每个单词的词性。
  4. Sense relatedr - 获取一个文档对象并为每个单词找到意义。
  5. Stemmer - 获取一个文档对象并提取所有单词。
  6. Trimmer - 获取一个文档对象并从中删除单词。
  7. Includer - 获取一个文档对象并向其添加单词。

我也从一位教授那里得到了这个资源,但它使用了我不知道的 Perl,所以我基本上将自己重新定向到刚刚提到的 .pdf。如果我可以在我的 java 应用程序中包含 Perl 脚本,我想我可以使用它。我正在寻找解决方案,结果得到了这个线程:

有没有办法在 Java 中使用 SenseRelate?

http://metacpan.org/pod/WordNet::SenseRelate::TargetWord

完成这一点:我使用 senseRelate 代码基本上是首先检索最相关的感觉。问题是它使用 Perl,我真的需要一些基于 Java 的 API 或任何东西来进一步帮助我。如果有人有任何提示,他们将不胜感激!:)

4

1 回答 1

1

假设您还没有找到 JAVA 解决方案,并且正如您所建议的那样,从 JAVA 执行 Perl 命令并传入适当的参数,然后处理来自 stdout 的响应是相当直接的。这似乎是一种完全可以使用的技术。我以前从未写过JAVA,但它就在这里......

// http://docs.oracle.com/javase/6/docs/api/java/lang/ProcessBuilder.html

Process p = new ProcessBuilder("/usr/bin/perl script.pl", "arg").start();
System.out.println(p.getInputStream()); // script.pl stdout
System.out.println(p.getErrorStream()); // script.pl error

您可以WordNet::SenseRelate::TargetWord用来执行核心消歧,打印您想要返回到标准输出的内容。

于 2013-10-22T22:52:31.213 回答