gpt4 book ai didi

java - 维基百科Tokenizer Lucene

转载 作者:行者123 更新时间:2023-12-01 12:55:46 26 4
gpt4 key购买 nike

我尝试使用 Lucene 解析 Wikipedia 标记并发现了这个小项目:

http://lucene.apache.org/core/3_0_3/api/contrib-wikipedia/org/apache/lucene/wikipedia/analysis/WikipediaTokenizer.html

(抱歉,无法检索到正确的网站)

下面是一个较短版本的代码示例,以某种方式围绕该库循环。运行它时,我得到一个非空的 WikipediaTokenizer,但是当我执行incrementToken() 时,我得到一个空指针异常。有任何想法吗?

import org.apache.log4j.Logger;
import org.apache.lucene.analysis.Token;
import org.apache.lucene.analysis.wikipedia.WikipediaTokenizer;

import java.io.StringReader;

public class WikipediaTokenizerTest {
static Logger logger = Logger.getLogger(WikipediaTokenizerTest.class);
protected static final String LINK_PHRASES = "click [[link here again]] click [http://lucene.apache.org here again] [[Category:a b c d]]";

public WikipediaTokenizer testSimple() throws Exception {
String text = "This is a [[Category:foo]]";
return new WikipediaTokenizer(new StringReader(text));
}
public static void main(String[] args){
WikipediaTokenizerTest wtt = new WikipediaTokenizerTest();

try {
WikipediaTokenizer x = wtt.testSimple();

logger.info(x.hasAttributes());

while (x.incrementToken() == true) {
logger.info("Token found!");
}

} catch(Exception e){
logger.error("Exception while tokenizing Wiki Text: " + e.getMessage());
}

}

我使用 Maven (pom.xml) 的以下依赖项:

<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-core</artifactId>
<version>4.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-analyzers-common</artifactId>
<version>4.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-queryparser</artifactId>
<version>4.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-wikipedia</artifactId>
<version>3.0.3</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-analyzers</artifactId>
<version>3.1.0</version>
</dependency>

如有任何帮助,我们将不胜感激!如果有人有更好的库或解决方案,请告诉我。

最佳答案

您不能混合搭配您的 lucene 版本。您使用的是 4.2.1 版本。它与版本 3.1.0 或 3.0.3 都不兼容。您需要删除这些依赖项。

WikipediaTokenizer 包含在analyzers-common 中。

<小时/>

此外,您没有履行 TokenStream 所要求的契约(Contract)。请参阅TokenStream documentation其中描述了 TokenStream API 的工作流程。特别是,在调用 incrementToken() 之前,您必须调用 reset()。您确实还应该 end()close() 它。

WikipediaTokenizer x = wtt.testSimple();
logger.info(x.hasAttributes());
x.reset();
while (x.incrementToken() == true) {
logger.info("Token found!");
}
x.end();
x.close();

关于java - 维基百科Tokenizer Lucene,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23916012/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com