gpt4 book ai didi

java - 使用 HashMap 用名词替换数字

转载 作者:行者123 更新时间:2023-11-30 11:33:09 25 4
gpt4 key购买 nike

我输入的句子是:

ram where are you

之后我将得到这个解析树:

' 2|TYPE|nx0e-VPadjn-Vnx1 1|RPron|nx-RP-S 0|NOUN|NXN 3|NOUN|NXN ', '1'

我想将 2 替换为“are”,将 1 替换为“where”,将 ram 替换为 0。

我应该如何使用散列映射来做到这一点?

最佳答案

这个答案是基于很多假设,因为你的问题不够清楚。但我没有足够的代表发表评论。

如果您使用 String.split()输入句子为:

String[] words = "ram where are you".split(" ");
// words[0] => ram
// words[1] => where
// words[2] => are
// words[3] => you

您的解析树似乎是通过解析输入句子生成的。
解析树第一部分中的每个条目对应于您输入句子中的一个词。
解析条目中的第一个数字似乎对应于输入句子中每个单词的索引。

所以一个解析条目可以分解为:<word index>|<word category>|<something not clear>

看来是这样

2|TYPE|nx0e-VPadjn-Vnx1 => are
1|RPron|nx-RP-S => where
0|NOUN|NXN => ram
3|NOUN|NXN => you

基于这些假设,可以使用使用解析树条目构建的 HashMap 。
您需要使用 key = <word index>; value = <parse entry> 将解析条目放入 map 中.
这可以通过将解析树分离到条目然后检索 <word index> 来完成。来自每个条目。

构建该映射后,您可以处理输入句子并将树条目解析为:

String[] words = "ram where are you".split(" ");

Map<Integer, String> entriesMap = getEntriesMap(parseTree); // assuming parseTree is just a String

for(int i = 0; i < words.length; i++) {
String x = entriesMap.get(i).replaceAll("^" + i + "|", words[i]);
}

填充 map 的方法。有多种方法可以做到这一点。
使用PatternMatcher具有适当正则表达式的类可能是最好的方法。

private Map<Integer, String> getEntriesMap(String parseTree) {
Map<Integer, String> entriesMap = new LinkedHashMap<Integer, String>();

// assuming parseTree format as: '<parse entries separated by spaces>', '1'
// use String.split() to split the parseTree by single quote (')
// first element in returning array would contain the <parse entries separated by spaces>
// use String.split() again on that element with space to separate parse entries
// for each <entry> in <parse entries>
// split <entry> with pipe (|) and use first element in resulting array as the key and <entry> as the value to put in entriesMap

return entriesMap;
}

想不通是什么,'1'在解析树的末尾对应。

关于java - 使用 HashMap 用名词替换数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16213638/

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