gpt4 book ai didi

java - 拼写检查 : Find one-to-one token difference mapping between two strings

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:05:05 25 4
gpt4 key购买 nike

我最近在 Internet 文件中偶然发现了这个问题,并且难以理解它。我想在两个字符串之间的不同标记之间找到所需的映射。输出应该是一个字符串到字符串的映射。

例如:

String1: hewlottpackardenterprise helped american raleways in N Y

String2: hewlett packard enterprise helped american railways in NY

Output:
hewlottpackardenterprise -> hewlett packard enterprise

hewlott -> hewlett

raleways -> railways

N Y -> NY

注意:我已经能够编写一个编辑距离方法,它可以找到所有类型的编辑(按类型分隔,如删除、替换等)并且可以将第一个字符串转换为第二个通过 convert 方法

到目前为止我尝试了什么?

方法 1:我从一种天真的方法开始,即按空格拆分两个字符串,将第一个字符串的标记插入 HashMap 并将另一个字符串的标记与该 HashMap 进行比较。但是,由于相关映射缺失,这种方法很快就会失败。

方法 2:我使用我的covert 方法来查找字符串中的编辑位置和编辑类型。使用空间编辑,我能够创建从 hewlottpackardenterprise -> hewlett packardenterprise 的映射。然而,随着越来越多的事物需要在同一个词中拆分,该方法呈爆炸式增长。

感谢这方面的任何想法!将清除评论中的任何疑问。

public String returnWhiteSpaceEdittoken(EditDone e, List<String> testTokens) {
int pos = e.pos, count=0, i=0;
String resultToken = null;

if (e.type.equals(DeleteEdit)) {
for (i=0;i<testTokens.size();i++) {
count+=testTokens.get(i).length();
if (count==pos) {
break;
}
if (i!=testTokens.size()-1) {
count++;
}
}

resultToken = testTokens.get(i) + " " + testTokens.get(i+1);
} else if (e.type.equals(InsertEdit)) {
for (i=0;i<testTokens.size();i++) {
count+=testTokens.get(i).length();
if (count>pos) {
break;
}
if (i!=testTokens.size()-1) {
count++;
}
}
String token = testTokens.get(i);
resultToken = token.substring(count-token.length(), pos) + token.substring(pos, count);
}
return resultToken;
}

最佳答案

处理此类问题的一种非常常见的方法是在两个字符串之间找到最长的公共(public)子序列(或者它是最短的编辑脚本),然后对输出进行后处理以获得您想要的特定格式;在您的情况下,字符串映射。

维基百科对这个问题有一个相当不错的介绍:https://en.wikipedia.org/wiki/Longest_common_subsequence_problem

Myers 的一篇很棒的论文“An O(ND) Difference Algorithm and Its Variations”可以在这里找到。 http://www.xmailserver.org/diff2.pdf

关于java - 拼写检查 : Find one-to-one token difference mapping between two strings,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45685285/

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