Java Lucene Ngrams
我想使用Lucene API从句子中提取ngrams。然而,我似乎遇到了一个特殊的问题。在中,有一个名为NGramTokenizer的类。我已经下载了3.6.1和4.0API,我没有看到这个类的任何痕迹。例如,当我尝试以下操作时,会出现一个错误,指出找不到符号NGramTokenizer:Java Lucene Ngrams,java,api,lucene,n-gram,Java,Api,Lucene,N Gram,我想使用Lucene API从句子中提取ngrams。然而,我似乎遇到了一个特殊的问题。在中,有一个名为NGramTokenizer的类。我已经下载了3.6.1和4.0API,我没有看到这个类的任何痕迹。例如,当我尝试以下操作时,会出现一个错误,指出找不到符号NGramTokenizer: NGramTokenizer myTokenizer; 在文档中,NGramTokenizer似乎位于路径org.apache.lucene.analysis.NGramTokenizer中。我在我的电脑上
NGramTokenizer myTokenizer;
在文档中,NGramTokenizer似乎位于路径org.apache.lucene.analysis.NGramTokenizer中。我在我的电脑上看不到这个。由于3.6.1和4.0 API都出现这种情况,因此似乎不太可能发生下载或其他杂项错误
你用错罐子了。它在里面
lucene-analyzers-3.6.1.jar
org.apache.lucene.analysis.ngram.NGramTokenizer
你用错罐子了。它在里面
lucene-analyzers-3.6.1.jar
org.apache.lucene.analysis.ngram.NGramTokenizer
这里是一个实用的方法,我通常使用的情况下,有人需要帮助这一点。应该与lucene 4.10一起使用(我没有使用更低或更高版本进行测试)
private Set generateNgrams(字符串语句,int-ngramCount){
StringReader=新的StringReader(句子);
Set ngrams=new HashSet();
//使用lucene的木瓦过滤器生成令牌
StandardTokenizer源=新的StandardTokenizer(读卡器);
TokenStream TokenStream=新的标准过滤器(源);
TokenFilter sf=null;
//如果只需要Unigram,则使用标准过滤器,否则使用木瓦过滤器
如果(ngramCount==1){
sf=新的标准过滤器(令牌流);
}
否则{
sf=新木瓦过滤器(令牌流);
((ShingleFilter)sf).setMaxShingleSize(ngramCount);
}
CharTermAttribute CharTermAttribute=sf.addAttribute(CharTermAttribute.class);
试一试{
sf.reset();
while(sf.incrementToken()){
字符串标记=CharterMatAttribute.toString().toLowerCase();
ngrams.add(令牌);
}
sf.end();
sf.close();
}捕获(IOEX异常){
//System.err.println(“根据需要尖叫和哭泣”);
例如printStackTrace();
}
返回ngrams;
}
lucene所需的Maven依赖项包括:
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-core</artifactId>
<version>4.10.3</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-analyzers-common</artifactId>
<version>4.10.3</version>
</dependency>
org.apache.lucene
lucene岩芯
4.10.3
org.apache.lucene
lucene分析仪通用
4.10.3
这里有一个实用方法,我通常在有人需要帮助时使用。应该与lucene 4.10一起使用(我没有使用更低或更高版本进行测试)
private Set generateNgrams(字符串语句,int-ngramCount){
StringReader=新的StringReader(句子);
Set ngrams=new HashSet();
//使用lucene的木瓦过滤器生成令牌
StandardTokenizer源=新的StandardTokenizer(读卡器);
TokenStream TokenStream=新的标准过滤器(源);
TokenFilter sf=null;
//如果只需要Unigram,则使用标准过滤器,否则使用木瓦过滤器
如果(ngramCount==1){
sf=新的标准过滤器(令牌流);
}
否则{
sf=新木瓦过滤器(令牌流);
((ShingleFilter)sf).setMaxShingleSize(ngramCount);
}
CharTermAttribute CharTermAttribute=sf.addAttribute(CharTermAttribute.class);
试一试{
sf.reset();
while(sf.incrementToken()){
字符串标记=CharterMatAttribute.toString().toLowerCase();
ngrams.add(令牌);
}
sf.end();
sf.close();
}捕获(IOEX异常){
//System.err.println(“根据需要尖叫和哭泣”);
例如printStackTrace();
}
返回ngrams;
}
lucene所需的Maven依赖项包括:
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-core</artifactId>
<version>4.10.3</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-analyzers-common</artifactId>
<version>4.10.3</version>
</dependency>
org.apache.lucene
lucene岩芯
4.10.3
org.apache.lucene
lucene分析仪通用
4.10.3
什么是StandardFilter?什么是StandardFilter?