人到中年有点甜
你并不是真的想要一个skipgram本身,但你想要一个按大小划分的块,试试这个:from lazyme import per_chunktokens = "my name is John".split()list(per_chunk(tokens, 2))[出去]:[('my', 'name'), ('is', 'John')]如果你想要一个滚动窗口,即ngrams:from lazyme import per_windowtokens = "my name is John".split()list(per_window(tokens, 2))[出去]:[('my', 'name'), ('name', 'is'), ('is', 'John')]同样在 ngrams 的 NLTK 中:from nltk import ngramstokens = "my name is John".split()list(ngrams(tokens, 2))[出去]:[('my', 'name'), ('name', 'is'), ('is', 'John')]如果你想要实际的skipgrams,如何在python中计算skipgrams?from nltk import skipgramstokens = "my name is John".split()list(skipgrams(tokens, n=2, k=1))[出去]:[('my', 'name'), ('my', 'is'), ('name', 'is'), ('name', 'John'), ('is', 'John')]
慕村225694
尝试这个!from nltk import ngramsdef generate_ngrams(sentences,window_size =3): for sentence in sentences: yield from ngrams(sentence[0].split(), window_size)sentences= [["my name is John"] , ["This PC is black"]]for c in generate_ngrams(sentences,3): print (c)#output:('my', 'name', 'is')('name', 'is', 'John')('This', 'PC', 'is')('PC', 'is', 'black')