灵活的滑动窗口(Python)

sim*_*sim 3 python text iterator text-search sliding-window

问题描述:我有兴趣查看文本窗口中的术语,例如,左边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

__ __等

我目前的计划是为输出中的每一行实现一个单独的条件.

Li-*_*Yip 6

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

这应该说明这个概念:

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

输出:

S
St
Sta
Stac
Stack
tackO
ackOv
ckOve
kOver
Overf
verfl
erflo
rflow
Run Code Online (Sandbox Code Playgroud)