3

问题描述:我有兴趣查看文本窗口中的术语,例如左侧 3 个单词和右侧 3 个单词。基本情况的形式为 w-3 w-2 w-1 项 w+1 w+2 w+3。我想在我的文本上实现一个滑动窗口,我可以用它来记录每个术语的上下文单词。所以,每一个词都曾经被当作一个词条,但是当窗口移动时,它就变成了一个上下文词,等等。但是,当词条是第一个词时,左边没有上下文词(t w+1 w+2 w+3),当它是第二个单词时,左边只有一个上下文单词,以此类推。因此,我对实现这个灵活的滑动窗口(在 Python 中)的任何提示感兴趣,而无需分别编写和指定每种可能的情况。

回顾一下:

输入示例

[“w1”、“w2”、“w3”、“w4”、“w5”、“w6”、“w7”、“w8”、“w9”、“w10”]

输出

t1 w2 w3 w4

w1 t2 w3 w4 w5

w1 w2 t3 w4 w5 w6

w1 w2 w3 t4 w5 w6 w7

__ w2 w3 w4 t5 w6 w7 w8

__ __ ETC。

我目前的计划是为输出中的每一行设置一个单独的条件来实现这一点。

4

1 回答 1

7

如果您想要n单词的滑动窗口,请使用最大长度的双端队列n来实现缓冲区。

这应该说明这个概念:

mystr = "StackOverflow"    
from collections import deque    
window = deque(maxlen=5)
for char in mystr:
    window.append(char)
    print ( ''.join(list(window)) )

输出:

S
St
Sta
Stac
Stack
tackO
ackOv
ckOve
kOver
Overf
verfl
erflo
rflow
于 2012-05-08T11:49:56.120 回答