gpt4 book ai didi

python - 使用 python 使用准确的标签将时间范围扩展为更小增量的更多步骤

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

我有一个带有时间戳和标签的文本文件,如下所示:

0.000000    14.463912   tone
14.476425 16.891247 noise
16.891247 21.232923 not_music
21.232923 23.172289 not_music
23.172289 29.128018 not_music

如果我指定步长为 1 秒。我希望这个列表爆炸成持续时间为 1 秒的时间范围但仍携带最近的标签。如何将时间范围分解为更小的步骤但标签准确?

例如,如果我的步数是 1 秒,那么第一行将变成 ~ 14 行,例如:

0.0 1.0 tone
1.0 2.0 tone
.
.
.
13.0 14.0 tone
[14.0 , 14.46] and [14.47, 15.0] #fall in a grey zone , don't know
what to do
15.0 16.0 noise

到目前为止,我已经设法读取文本文件并将它们存储在如下列表中:

my_segments =[]
for line in open('./data/annotate.txt', 'rb').readlines():
start, end, label = line.split("\t")
start = float(start)
end = float(end)
label = label.strip()
my_segments.append((start, end, label))

# print my_segments
for i in range(len(my_segments)):
print my_segments[i]

我看了https://stackoverflow.com/a/18265979/4932791 @Jared 详细介绍了如何使用 numpy 创建具有给定步长的两个数字之间的范围。像这样:

>>> numpy.arange(11, 17, 0.5)
array([ 11. , 11.5, 12. , 12.5, 13. , 13.5, 14. , 14.5, 15. ,
15.5, 16. , 16.5])

无法弄清楚如何在一系列范围内做类似的事情。

我想出的伪代码/算法是:

  • 第 1 步 - 采取步长,
  • 步骤 2- 将步长分配给一个 left_variable 和一个与步长对应的 right_variable
    第 3 步- 像窗口一样在每个范围内移动此步骤并检查如果步骤落在范围内,如果落在范围内,则分配它对应的标签。
  • 第 4 步 - 现在更新左侧和向右走 1 步。
  • 第 5 步 - 从第 3 步重复直到文件结束达到了。

我认为要处理边缘情况,我应该将步长减少到 0.25 秒或类似的大小,并设置一个条件,如果当前步至少有 40% 或 50% 的重叠,然后我相应地分配标签。

更新:我的非工作解决方案:

sliding_window = 0
#st,en = [0.0,1.0]
jumbo= []
for i in range(len(hold_segments)):
if sliding_window > hold_segments[i][0] and sliding_window+1 < hold_segments[i][1]:
jumbo.append((sliding_window,sliding_window+1,hold_segments[i][2]))
sliding_window=sliding_window+1
print hold_segments[i][2]

最佳答案

对于 pandas 这非常简单,假设您已将数据加载到名为 df 的数据框中,例如:

df

value tag
index
0.000000 14.463912 ringtone
14.476425 16.891247 noise
16.891247 21.232923 not_music
21.232923 23.172289 music_B
23.172289 29.128018 music_A


df = df.reindex(
[i + 0.5 for i in range(math.floor(df.index.min()), math.ceil(df.value.max()))],
method='pad'
)

然后恢复范围:

(df.index, df.value) = (df.index - 0.5, df.index + 0.5)

value tag
index
0.0 1.0 ringtone
1.0 2.0 ringtone
2.0 3.0 ringtone
3.0 4.0 ringtone
4.0 5.0 ringtone
5.0 6.0 ringtone
6.0 7.0 ringtone
7.0 8.0 ringtone
8.0 9.0 ringtone
9.0 10.0 ringtone
10.0 11.0 ringtone
11.0 12.0 ringtone
12.0 13.0 ringtone
13.0 14.0 ringtone
14.0 15.0 noise
15.0 16.0 noise
16.0 17.0 noise
17.0 18.0 not_music
18.0 19.0 not_music
19.0 20.0 not_music
20.0 21.0 not_music
21.0 22.0 music_B
22.0 23.0 music_B
23.0 24.0 music_A
24.0 25.0 music_A
25.0 26.0 music_A
26.0 27.0 music_A
27.0 28.0 music_A
28.0 29.0 music_A
29.0 30.0 music_A

关于python - 使用 python 使用准确的标签将时间范围扩展为更小增量的更多步骤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48465407/

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