如何在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>