gpt4 book ai didi

java - 标准分析器 - Apache Lucene

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

我实际上正在开发一个系统,您可以在其中将一些文本文件输入到 StandardAnalyzer,然后该文件的内容将被 StandardAnalyzer 的输出替换(它标记并删除所有停用词)。到目前为止我开发的代码是:

    File f = new File(path);

TokenStream stream = analyzer.tokenStream("contents",
new StringReader(readFileToString(f)));

CharTermAttribute charTermAttribute = stream.getAttribute(CharTermAttribute.class);

while (stream.incrementToken()) {
String term = charTermAttribute.toString();
System.out.print(term);
}

//Following is the readFileToString(File f) function
StringBuilder textBuilder = new StringBuilder();
String ls = System.getProperty("line.separator");
Scanner scanner = new Scanner(new FileInputStream(f));

while (scanner.hasNextLine()){
textBuilder.append(scanner.nextLine() + ls);
}
scanner.close();
return textBuilder.toString();

readFileToString(f) 是一个简单的函数,它将文件内容转换为字符串表示形式。我得到的输出是每个单词之间的空格或新行被删除。有没有办法保留分析器输出后的原始空格或换行符,以便我可以用StandardAnalyzer过滤后的内容替换原始文件内容并以可读的形式呈现?

最佳答案

分词器保存术语位置,因此理论上您可以查看位置以确定每个标记之间有多少个字符,但它们不保存标记之间的数据。所以你可以得到空格,但不能得到换行符。

如果您熟悉 JFlex,您可以修改标记器以将换行符视为标记。不过,这可能比您从中获得的任何 yield 都更难。

关于java - 标准分析器 - Apache Lucene,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8825002/

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