gpt4 book ai didi

java - OpenNLP - 对字符串数组进行标记

转载 作者:行者123 更新时间:2023-12-01 11:53:06 24 4
gpt4 key购买 nike

我正在尝试使用 OpenNLP 标记器对文本文件进行标记。我所做的,我读取 .txt 文件并将其存储在列表中,想要迭代每一行,标记该行并将标记化的行写入新文件。

行中:

tokens[i] = tokenizer.tokenize(output[i]);

我得到:

Type mismatch: cannot convert from String[] to String

这是我的代码:

public class Tokenizer {

public static void main(String[] args) throws Exception {

InputStream modelIn = new FileInputStream("en-token-max.bin");

try {


TokenizerModel model = new TokenizerModel(modelIn);
Tokenizer tokenizer = new TokenizerME(model);

CSVReader reader = new CSVReader(new FileReader("ParsedRawText1.txt"),',', '"', 1);
String csv = "ParsedRawText2.txt";
CSVWriter writer = new CSVWriter(new FileWriter(csv),CSVWriter.NO_ESCAPE_CHARACTER,CSVWriter.NO_QUOTE_CHARACTER);

//Read all rows at once
List<String[]> allRows = reader.readAll();

for(String[] output : allRows) {
//get current row
String[] tokens=new String[output.length];
for(int i=0;i<output.length;i++){

tokens[i] = tokenizer.tokenize(output[i]);
System.out.println(tokens[i]);
}

//write line
writer.writeNext(tokens);
}
writer.close();

}
catch (IOException e) {
e.printStackTrace();
}
finally {
if (modelIn != null) {
try {
modelIn.close();
}
catch (IOException e) {
}
}
}
}
}

有人知道如何完成这个任务吗?

最佳答案

正如编译器所说,您尝试将字符串数组(tokenize() 的结果)分配给字符串(tokens[i] 是一个字符串)。因此,您应该在内循环中声明和使用 tokens 并在那里写入 tokens[] :

    for (String[] output : allRows) {
// get current row
for (int i = 0; i < output.length; i++) {
String[] tokens = tokenizer.tokenize(output[i]);
System.out.println(tokens);

// write line
writer.writeNext(tokens);
}
}
writer.close();

顺便说一句,您确定您的源文件是 csv 吗?如果它实际上是一个纯文本文件,那么你用逗号分割文本并将这些 block 提供给 Opennlp,它的性能可能会更差,因为它的模型是在正常句子上训练的,而不是像你的那样分割。

关于java - OpenNLP - 对字符串数组进行标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28634321/

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