gpt4 book ai didi

java - 从半高亮文本中获取非高亮文本的更好算法

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

上下文:

我有一个文本文档,其中突出显示了一些句子。为了找到突出显示的部分,我有一个列表,其中包含突出显示部分的开始和停止位置。要获得突出显示的部分,可以很容易地使用 Java 的 string.substring(start, stop) 方法。然而,获取未突出显示的部分非常棘手。

问题:

我的最终目标是将文档中的文本标记化,然后为每个标记分配一个标签,以突出显示或不突出显示。因此,我最终需要的是有两个列表:1- 一个包含突出显示文本 block 的列表,2- 另一个包含非突出显示文本 block 的列表。然后,我将简单地在每个列表中分别标记每个 block 。

我面临的问题是找到一个干净的算法来提取非突出显示的文本 block 。正如我所说,获取突出显示的 block 很容易,因为您已经有了它们的开始和结束位置,并且您可以使用 Java 的 string.substring(start, stop) 方法。

例如:

This is a simple text, **this part is highlighted**, this part is not but **this is also highlighted,** but this one is also not.

因此,非高亮文本 block 列表应包含:

1 - 这是一个简单的文本,

2-,这部分不是

3- 但这一个也不是。

我的方法:

我解决这个问题的方法是将突出显示部分的开始和结束位置添加到哈希表中,其中开始位置是键,值是结束位置。然后我开始逐个字符地读取文本文档并检查当前字符的位置是否是哈希表中的键,如果是我将所有已经读取的字符视为非突出显示的文本 block 并将其添加到非 -突出显示的文本 block 列表。

但是,我发现我的方法有点丑陋,我想知道是否有更好的方法来做到这一点。我不擅长 String 算法,并认为可能有更好的方法。

那么我的问题:是否有更好的方法来查找未突出显示的文本 block ?

最佳答案

将所有突出显示位置放在列表中,并按开始位置对它们进行排序。对于列表中除最后一个之外的每个突出显示,都有一个非突出显示区域,该区域从该突出显示的结束位置开始,并在后续突出显示的开始位置结束。另外,除非第一个开始位置为0,否则从0到第一个开始有一个非高亮区域,最后一个高亮也类似。

(假设没有重叠的高亮显示 - 如果有,您首先需要遍历列表并合并重叠的高亮显示。您可以通过检查一个高亮显示的结束是否在后续高亮显示的开始之后来检测重叠.)

关于java - 从半高亮文本中获取非高亮文本的更好算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31034733/

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