为什么WordNet和JWI词干分析器会给出" ord"和" orde"在" order"的结果制止?

时间:2017-10-06 11:33:33

标签: wordnet jwi

我正在使用WordNet和JWI 2.4.0开展项目。 目前,我在包含的词干器中添加了很多单词,似乎有效,直到我要求" order"。 限制器回答我说,"命令"," orde"和" ord",是" order"的可能词干。 我不是母语为英语的人,但是......我从未见过" ord"在我的生活中......当我向WordNet词典询问这个定义时:显然什么都没有。 (在BabelNet网上,我发现它是一个内布拉斯加州的小镇!)

那么,为什么会出现这种奇怪的干? 如何过滤WordNet词典中不存在的词干? (因为当我重新使用词干时," orde"正在使程序崩溃)

谢谢!

答案:我并不清楚什么是干。所以,这个问题毫无意义。

以下是一些要测试的代码:

package JWIExplorer;

import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.Arrays;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

import edu.mit.jwi.Dictionary;
import edu.mit.jwi.IDictionary;
import edu.mit.jwi.morph.WordnetStemmer;

public class TestJWI
{

    public static void main(String[] args) throws IOException
    {
        List<String> WordList_Research = Arrays.asList("dog", "cat", "mouse");
        List<String> WordList_Research2 = Arrays.asList("order");

        String path = "./" + File.separator + "dict";
        URL url;

        url = new URL("file", null, path);

        System.out.println("BEGIN : " + new Date());

        for (Iterator<String> iterstr = WordList_Research2.iterator(); iterstr.hasNext();)
        {
            String str = iterstr.next();

            TestStem(url, str);
        }

        System.out.println("END : " + new Date());
    }

    public static void TestStem(URL url, String ResearchedWord) throws IOException
    {
        // construct the dictionary object and open it
        IDictionary dict = new Dictionary(url);
        dict.open();

        // First, let's check for the stem word
        WordnetStemmer Stemmer = new WordnetStemmer(dict);
        List<String> StemmedWords;

        // null for all words, POS.NOUN for nouns
        StemmedWords = Stemmer.findStems(ResearchedWord, null);
        if (StemmedWords.isEmpty())
            return;

        for (Iterator<String> iterstr = StemmedWords.iterator(); iterstr.hasNext();)
        {
            String str = iterstr.next();

            System.out.println("Local stemmed iteration on : " + str);
        }
    }

}

1 个答案:

答案 0 :(得分:1)

茎不一定需要自己说话。 “秩序”和“序数”共享词干“奥德”。

这里的根本问题是词干与拼写有关,但语言进化和拼写只是微弱相关(尤其是英语中的)。作为程序员,我们更倾向于将词干描述为正则表达式,例如.com。这表明它不是“受戒”的主干