Java wordnet代码中的RetrievalException
我执行了以下代码:Java wordnet代码中的RetrievalException,java,wordnet,jaws-wordnet,Java,Wordnet,Jaws Wordnet,我执行了以下代码: package edu.smu.tspell.wordnet; import java.util.Scanner; public class TestJAWS { /** * Main entry point. The command-line arguments are concatenated together * (separated by spaces) and used as the word form to look up.
package edu.smu.tspell.wordnet;
import java.util.Scanner;
public class TestJAWS
{
/**
* Main entry point. The command-line arguments are concatenated together
* (separated by spaces) and used as the word form to look up.
*/
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
args = new String[] {"airplane"};
if (args.length > 0)
{
// Concatenate the command-line arguments
StringBuffer buffer = new StringBuffer();
for (int i = 0; i < args.length; i++)
{
buffer.append((i > 0 ? " " : "") + args[i]);
}
String wordForm = buffer.toString();
// Get the synsets containing the wrod form
WordNetDatabase database = WordNetDatabase.getFileInstance();
Synset[] synsets = database.getSynsets(wordForm);
// Display the word forms and definitions for synsets retrieved
if (synsets.length > 0)
{
System.out.println("The following synsets contain '" +
wordForm + "' or a possible base form " +
"of that text:");
for (int i = 0; i < synsets.length; i++)
{
System.out.println("");
String[] wordForms = synsets[i].getWordForms();
for (int j = 0; j < wordForms.length; j++)
{
System.out.print((j > 0 ? ", " : "") +
wordForms[j]);
}
System.out.println(": " + synsets[i].getDefinition());
}
}
else
{
System.err.println("No synsets exist that contain " +
"the word form '" + wordForm + "'");
}
}
else
{
System.err.println("You must specify " +
"a word form for which to retrieve synsets.");
}
}
}
包edu.smu.tspell.wordnet;
导入java.util.Scanner;
公共类TestJAWS
{
/**
*主入口点。命令行参数连接在一起
*(用空格分隔)用作查找的单词形式。
*/
公共静态void main(字符串[]args)
{
扫描仪扫描=新扫描仪(System.in);
args=新字符串[]{“飞机”};
如果(args.length>0)
{
//连接命令行参数
StringBuffer=新的StringBuffer();
对于(int i=0;i0?“:”)+args[i]);
}
字符串wordForm=buffer.toString();
//获取包含wrod表单的语法集
WordNetDatabase=WordNetDatabase.getFileInstance();
Synset[]synsets=database.getSynsets(wordForm);
//显示检索到的语法集的单词形式和定义
如果(synsets.length>0)
{
System.out.println(“以下语法集包含”+
wordForm+“'或可能的基本形式”+
“在该案文中:”;
for(int i=0;i0?,“:”)+
词形[j];
}
System.out.println(“:”+synsets[i].getDefinition());
}
}
其他的
{
System.err.println(“不存在包含”+
“单词形式“'+单词形式+””);
}
}
其他的
{
System.err.println(“您必须指定”+
“检索语法集的单词形式。”);
}
}
}
但我得到了一个错误:
Exception in thread "main" edu.smu.tspell.wordnet.impl.file.RetrievalException: Error opening index file: .\C:\Users\piyush_p\Desktop\workspace\Wordnet\src\WordNet-3.0\dict\index.sense (The filename, directory name, or volume label syntax is incorrect)
at edu.smu.tspell.wordnet.impl.file.SenseIndexReader.getInstance(SenseIndexReader.java:88)
at edu.smu.tspell.wordnet.impl.file.WordFormLookup.loadSynsets(WordFormLookup.java:273)
at edu.smu.tspell.wordnet.impl.file.WordFormLookup.getSynsets(WordFormLookup.java:230)
at edu.smu.tspell.wordnet.impl.file.WordFormLookup.getSynsets(WordFormLookup.java:172)
at edu.smu.tspell.wordnet.impl.file.FileDatabase.getSynsets(FileDatabase.java:87)
at edu.smu.tspell.wordnet.WordNetDatabase.getSynsets(WordNetDatabase.java:61)
at edu.smu.tspell.wordnet.TestJAWS.main(TestJAWS.java:28)
Caused by: java.io.FileNotFoundException: .\C:\Users\piyush_p\Desktop\workspace\Wordnet\src\WordNet-3.0\dict\index.sense (The filename, directory name, or volume label syntax is incorrect)
at java.io.RandomAccessFile.open(Native Method)
at java.io.RandomAccessFile.<init>(Unknown Source)
at edu.smu.tspell.wordnet.impl.RandomAccessReader.<init>(RandomAccessReader.java:75)
at edu.smu.tspell.wordnet.impl.LineLocator.<init>(LineLocator.java:54)
at edu.smu.tspell.wordnet.impl.MultipleLineLocator.<init>(MultipleLineLocator.java:48)
at edu.smu.tspell.wordnet.impl.file.SenseIndexReader.<init>(SenseIndexReader.java:102)
at edu.smu.tspell.wordnet.impl.file.SenseIndexReader.getInstance(SenseIndexReader.java:83)
... 6 more`enter code here`
线程“main”edu.smu.tspell.wordnet.impl.file.RetrievalException中的异常:打开索引文件时出错:。\C:\Users\piyush\p\Desktop\workspace\wordnet\src\wordnet-3.0\dict\index.sense(文件名、目录名或卷标语法不正确)
位于edu.smu.tspell.wordnet.impl.file.SenseIndexReader.getInstance(SenseIndexReader.java:88)
位于edu.smu.tspell.wordnet.impl.file.WordFormLookup.loadSynsets(WordFormLookup.java:273)
位于edu.smu.tspell.wordnet.impl.file.WordFormLookup.getSynsets(WordFormLookup.java:230)
位于edu.smu.tspell.wordnet.impl.file.WordFormLookup.getSynsets(WordFormLookup.java:172)
位于edu.smu.tspell.wordnet.impl.file.FileDatabase.getSynsets(FileDatabase.java:87)
位于edu.smu.tspell.wordnet.WordNetDatabase.getSynsets(WordNetDatabase.java:61)
位于edu.smu.tspell.wordnet.TestJAWS.main(TestJAWS.java:28)
原因:java.io.FileNotFoundException:。\C:\Users\piyush\p\Desktop\workspace\Wordnet\src\Wordnet-3.0\dict\index.sense(文件名、目录名或卷标语法不正确)
位于java.io.RandomAccessFile.open(本机方法)
位于java.io.RandomAccessFile。(未知源)
在edu.smu.tspell.wordnet.impl.RandomAccessReader上。(RandomAccessReader.java:75)
位于edu.smu.tspell.wordnet.impl.LineLocator.(LineLocator.java:54)
在edu.smu.tspell.wordnet.impl.MultipleLineLocator.(MultipleLineLocator.java:48)
位于edu.smu.tspell.wordnet.impl.file.SenseIndexReader。(SenseIndexReader.java:102)
位于edu.smu.tspell.wordnet.impl.file.SenseIndexReader.getInstance(SenseIndexReader.java:83)
... 6更多`请在此处输入代码`
通过添加
`System.setProperty("wordnet.database.dir", "C:\WordNet-3.0\dict\");`
在main方法中,看起来您还没有下载数据库。因此,请从以下链接下载WordNet数据库: 为数据库目录添加“dict”目录的路径:
System.setProperty("wordnet.database.dir", "/home/xyz/WordNet-3.0/dict");
检查路径中是否存在字典,原因是:java.io.FileNotFoundException:。\C:\Users\piyush\p\Desktop\workspace\Wordnet\src\Wordnet-3.0\dict\index.sense(文件名、目录名或卷标语法不正确)…很简单吧?字典存在。@Amit Gyes jane..但是从当前位置(WordNetDatabase.java存储的位置)它正在搜索“\C:\Users\piyush\u p\Desktop\workspace\Wordnet\src\Wordnet-3.0\dict\index.sense”。。。它应该从C:驱动器搜索,而不是从当前位置搜索。@Naren没有。我按你说的做了。