Java wordnet インターフェース JWIを使用して単語のハイパーニムを生成し、特定のエンティティから高次の概念/タイプに一般化します。
isa
私のコードの一部では、単語が wordnetに登録されていることを確認したい部分がありますis a
。これは私が今これを試している方法です。
public void getHypernyms( String inut_word ) throws IOException
{
// get the synset of 'input_word'
//IIndexWord idxWord = dict . getIndexWord (inut_word, POS . NOUN ) ;
IIndexWord idxWord = dict.getIndexWord( inut_word, POS.VERB );
if( idxWord != null && idxWord.size() > 0)
IWordID wordID = idxWord.getWordIDs().get (0); // 1st meaning
IWord word = dict.getWord( wordID );
ISynset synset = word.getSynset();
// get the hypernyms
List < ISynsetID > hypernyms = synset.getRelatedSynsets( Pointer.HYPERNYM );
if( hypernyms.size() > 0)
{
// print out each hypernyms id and synonyms
List < IWord > words;
for( ISynsetID sid : hypernyms )
{
words = dict.getSynset( sid ).getWords ();
System.out.print( sid + " {");
for( Iterator <IWord> i = words.iterator(); i.hasNext(); )
{
System.out.print( i.next().getLemma() );
if( i.hasNext() )
System.out.print(", ");
}
System.out.println("}");
}
}
else
{
System.out.println( inut_word );
}
}
しかし、日食は私にそれを警告しますmethod size() is not defined for type IIndexWord
。
@override
これは、サイズを調整する必要があることを意味していると思いますよね?しかし、私は実際にそれをやったことがないのですが、どうすればいいですか?
具体的には java.util.List.size です。
私はこの方法をこのように実装しようとしていましたが、それは魅力のように機能します。
public String getStem(String word)
{
WordnetStemmer stem = new WordnetStemmer( dict );
List<String> stemmed_words = stem.findStems(word, POS.VERB);
if( stemmed_words != null && stemmed_words.size() > 0)
return stemmed_words.get(0);
else
return word;
}