Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在WEKA(Java)中使用自定义停止字和词干分析器文件?_Java_Weka - Fatal编程技术网

如何在WEKA(Java)中使用自定义停止字和词干分析器文件?

如何在WEKA(Java)中使用自定义停止字和词干分析器文件?,java,weka,Java,Weka,到目前为止,我已经: NGramTokenizer tokenizer = new NGramTokenizer(); tokenizer.setNGramMinSize(2); tokenizer.setNGramMaxSize(2); tokenizer.setDelimiters("[\\w+\\d+]"); StringToWordVector filter = new StringToWordVector(); // customize filter here Instances

到目前为止,我已经:

NGramTokenizer tokenizer = new NGramTokenizer();
tokenizer.setNGramMinSize(2);
tokenizer.setNGramMaxSize(2); 
tokenizer.setDelimiters("[\\w+\\d+]");

StringToWordVector filter = new StringToWordVector();
// customize filter here
Instances data = Filter.useFilter(input, filter);
API对StringToWordVector有以下两种方法:

setStemmer(Stemmer value);
setStopwordsHandler(StopwordsHandler value);
我有一个包含stopwords的文本文件和另一个派生单词的类。如何使用自定义词干分析器和stopwords过滤器?请注意,我正在使用大小为2的短语,因此我无法预先预处理并删除所有停止词

更新:这对我很有效(使用Weka developer 3.7.12版)

要使用自定义stopwords处理程序,请执行以下操作:

public class MyStopwordsHandler implements StopwordsHandler {

    private HashSet<String> myStopwords;

    public MyStopwordsHandler() {
        //Load in your own stopwords, etc.
    }

    //Must implement this method from the StopwordsHandler interface
    public Boolean isStopword(String word) {
        return myStopwords.contains(word); 
    }

}
然后要使用自定义stopwords处理程序和词干分析器:

StringToWordVector filter = new StringToWordVector();
filter.setStemmer(new MyStemmer());
filter.setStopwordsHandler(new MyStopwordsHandler());

注意:下面由Thusitha给出的答案适用于稳定的3.6版本,它比上面描述的要简单得多。但我无法让它与3.7.12版本配合使用。

在最新的weka库中,您可以使用它

StringToWordVector filter = new StringToWordVector();
filter.setStopwords(new File("filename"));
我正在使用以下依赖项

<dependency>
   <groupId>nz.ac.waikato.cms.weka</groupId>
   <artifactId>weka-stable</artifactId>
   <version>3.6.12</version>
</dependency>

nz.ac.waikato.cms.weka

public void setStopwords(java.io.File值) 设置包含停止字的文件、null或取消设置停止字的目录。如果文件存在,它会自动打开该标志 使用停止列表。 参数: 值-包含停止字的文件


那是哪个版本?我有最新的开发者版本。嗯。。。我正在使用最新的稳定版本,3.7.12hm可能是他们在新版本中删除了它。我从maven central获得了依赖关系:(这是最新的,我检查了列出的API。所以它一定在那里。我发现了另一种方法。那行代码为我和setStopwords()抛出了一个错误)未作为可用方法之一列出。如果按自定义,您还希望使用正则表达式作为StopWord的规范,您可能会感兴趣:
<dependency>
   <groupId>nz.ac.waikato.cms.weka</groupId>
   <artifactId>weka-stable</artifactId>
   <version>3.6.12</version>
</dependency>