gpt4 book ai didi

java - 如何扩展 WhitespaceTokenizer?

转载 作者:行者123 更新时间:2023-12-04 06:13:13 25 4
gpt4 key购买 nike

我需要使用一个分词器来分割空格上的单词,但如果空格在双括号内,则不会分割。这里有一个例子:

My input-> term1 term2 term3 ((term4 term5)) term6  

应该产生这个 token 列表:
term1, term2, term3, ((term4 term5)), term6.  

我认为我可以通过扩展 Lucene WhiteSpaceTokenizer 来获得这种行为。 .如何执行此扩展?
还有其他一些解决方案吗?

提前致谢。

最佳答案

我没有尝试扩展 Tokenizer,但我在这里有一个很好的(我认为)带有正则表达式的解决方案:

\w+|\(\([\w\s]*\)\)

还有一种方法,它通过匹配的组从 reg ex 返回一个数组来拆分字符串。代码示例:
class Regex_ComandLine {

public static void main(String[] args) {
String input = "term1 term2 term3 ((term4 term5)) term6"; //your input
String[] parsedInput = splitByMatchedGroups(input, "\\w+|\\(\\([\\w\\s]*\\)\\)");

for (String arg : parsedInput) {
System.out.println(arg);
}
}

static String[] splitByMatchedGroups(String string,
String patternString) {
List<String> matchList = new ArrayList<>();
Matcher regexMatcher = Pattern.compile(patternString).matcher(string);

while (regexMatcher.find()) {
matchList.add(regexMatcher.group());
}

return matchList.toArray(new String[0]);
}

}

输出:
term1
term2
term3
((term4 term5))
term6

希望这对你有帮助。

请注意以下代码与通常的 split() :
String[] parsedInput = input.split("\\w+|\\(\\([\\w\\s]*\\)\\)");

将不返回任何内容或不返回您想要的内容,因为它只检查分隔符。

关于java - 如何扩展 WhitespaceTokenizer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7546444/

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