You don't really want a skipgram
per se but you want a chunk by size, try this:
from lazyme import per_chunk
tokens = "my name is John".split()
list(per_chunk(tokens, 2))
[out]:
[('my', 'name'), ('is', 'John')]
If you want a rolling window, i.e. ngrams
:
from lazyme import per_window
tokens = "my name is John".split()
list(per_window(tokens, 2))
[out]:
[('my', 'name'), ('name', 'is'), ('is', 'John')]
Similarly in NLTK for ngrams:
from nltk import ngrams
tokens = "my name is John".split()
list(ngrams(tokens, 2))
[out]:
[('my', 'name'), ('name', 'is'), ('is', 'John')]
If you want actual skipgrams, How to compute skipgrams in python?
from nltk import skipgrams
tokens = "my name is John".split()
list(skipgrams(tokens, n=2, k=1))
[out]:
[('my', 'name'),
('my', 'is'),
('name', 'is'),
('name', 'John'),
('is', 'John')]