JWNL用于词干

时间:2014-03-04 14:13:03

标签: java wordnet

我试图使用下面的代码来阻止一个单词,但它给出了一个例外。

  public class stemmer {

 private int MaxWordLength = 50;
private Dictionary dic;
private MorphologicalProcessor morph;
private boolean IsInitialized = false;  
public HashMap AllWords = null;

public stemmer()
{

    AllWords = new HashMap ();

    try
    {
                System.out.println ("1" );
        JWNL.initialize(new FileInputStream
            ("D:\\azeema\\MyResearch\\words database\\jwnl14-rc2 javaAPI\\jwnl14-rc2\\config/file_properties.xml"));
        dic = Dictionary.getInstance();
        morph = dic.getMorphologicalProcessor();
        // ((AbstractCachingDictionary)dic).
        //  setCacheCapacity (10000);
        IsInitialized = true;
                    System.out.println ("2" );
    }
    catch ( FileNotFoundException e )
    {
               // System.out.println (e);
        System.out.println ( "Error initializing Stemmer: JWNLproperties.xml not found" );
    }
    catch ( JWNLException e )
    {

        System.out.println ( "Error initializing Stemmer: " 
            + e.toString() );
                     e.printStackTrace();
    } 

}

public void Unload ()
{ 
    dic.close();
    Dictionary.uninstall();
    JWNL.shutdown();
}
public String StemWordWithWordNet ( String word )
{
    if ( !IsInitialized )
        return word;
    if ( word == null ) return null;
    if ( morph == null ) morph = dic.getMorphologicalProcessor();

    IndexWord w;
    try
    {
        w = morph.lookupBaseForm( POS.VERB, word );
        if ( w != null )
            return w.getLemma().toString ();
        w = morph.lookupBaseForm( POS.NOUN, word );
        if ( w != null )
            return w.getLemma().toString();
        w = morph.lookupBaseForm( POS.ADJECTIVE, word );
        if ( w != null )
            return w.getLemma().toString();
        w = morph.lookupBaseForm( POS.ADVERB, word );
        if ( w != null )
            return w.getLemma().toString();
    } 
    catch ( JWNLException e )
    {
                System.out.println (e);
    }
    return null;
}


  }

这是词干的代码,当我运行此代码时,我发现了这个异常

      run:

1 初始化Stemmer时出错:net.didion.jwnl.JWNLException:无法安装net.didion.jwnl.dictionary.FileBackedDictionary net.didion.jwnl.JWNLException:无法安装net.didion.jwnl.dictionary.FileBackedDictionary     在net.didion.jwnl.util.factory.Element.install(Element.java:34)     在net.didion.jwnl.JWNL.initialize(JWNL.java:157)     在opennlp.stemmer。(stemmer.java:29)     at opennlp.OpenNLP.main(OpenNLP.java:28) 引起:net.didion.jwnl.JWNLException:属性文件必须指定字典路径     at net.didion.jwnl.util.factory.AbstractValueParam.create(AbstractValueParam.java:34)     在net.didion.jwnl.dictionary.FileBackedDictionary.install(FileBackedDictionary.java:100)     在net.didion.jwnl.util.factory.Element.install(Element.java:32)     ......还有3个 引起:net.didion.jwnl.JWNLException:无法创建类型为net.didion.jwnl.princeton.file.PrincetonRandomAccessDictionaryFile的文件管理器     在net.didion.jwnl.dictionary.file_manager.FileManagerImpl.create(FileManagerImpl.java:71)     在net.didion.jwnl.util.factory.AbstractValueParam.create(AbstractValueParam.java:32)     ......还有5个 引起:java.io.FileNotFoundException:C:\ Program Files(x86)\ WordNet \ 2.1 \ dict \ verb.idx(系统找不到指定的文件)     在java.io.RandomAccessFile.open(本机方法)     在java.io.RandomAccessFile。(RandomAccessFile.java:241)     在net.didion.jwnl.princeton.file.PrincetonRandomAccessDictionaryFile.openFile(PrincetonRandomAccessDictionaryFile.java:76)     at net.didion.jwnl.dictionary.file.AbstractDictionaryFile.open(AbstractDictionaryFile.java:58)     at net.didion.jwnl.dictionary.file.DictionaryCatalog.open(DictionaryCatalog.java:46)     在net.didion.jwnl.dictionary.file.DictionaryCatalogSet.open(DictionaryCatalogSet.java:34)     在net.didion.jwnl.dictionary.file_manager.FileManagerImpl。(FileManagerImpl.java:54)     在net.didion.jwnl.dictionary.file_manager.FileManagerImpl.create(FileManagerImpl.java:69)     ......还有6个 建立成功(总时间:0秒)

0 个答案:

没有答案