Ventana deslizante flexible (en Python)

Descripción del problema: Me interesa mirar los términos en la ventana de texto de, digamos, 3 palabras a la izquierda y 3 a la derecha. El caso base tiene la forma de w-3 w-2 w-1 término w + 1 w + 2 w + 3. Quiero implementar una ventana deslizante sobre mi texto con la que podré registrar las palabras de contexto de cada término. Entonces, cada palabra se trata como un término, pero cuando la ventana se mueve, se convierte en una palabra de contexto, etc. Sin embargo, cuando el término es la primera palabra en línea, no hay palabras de contexto a la izquierda (t w + 1 w + 2 w + 3), cuando es la segunda palabra en línea, solo hay una palabra de contexto a la izquierda, y así sucesivamente. Por lo tanto, estoy interesado en cualquier sugerencia para implementar esta ventana deslizante flexible (en Python) sin escribir y especificar por separado cada situación posible.

Recordar:

Ejemplo de entrada :

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

Salida :

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.

Mi plan actual es implementar esto con una condición separada para cada línea en la salida.

Si desea una ventana deslizante de n palabras, use una cola de doble final con una longitud máxima n para implementar un búfer.

Esto debería ilustrar el concepto:

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

Salida:

 S St Sta Stac Stack tackO ackOv ckOve kOver Overf verfl erflo rflow