x = "a b c d"可以使用以下函数(编辑:请参阅最后一个函数以获取更完整的解决方案):
def ngrams(input, n): input = input.split(' ') output = [] for i in range(len(input)-n+1): output.append(input[i:i+n]) return outputngrams('a b c d', 2) # [['a', 'b'], ['b', 'c'], ['c', 'd']]
如果您希望将它们重新连接成字符串,则可以调用以下内容:
[' '.join(x) for x in ngrams('a b c d', 2)] # ['a b', 'b c', 'c d']
最后,这并不能将总和汇总,因此,如果输入为
'a a a a',则需要将它们累加为字典:
for g in (' '.join(x) for x in ngrams(input, 2)): grams.setdefault(g, 0) grams[g] += 1
将所有这些放到一个最终函数中可以得出:
def ngrams(input, n): input = input.split(' ') output = {} for i in range(len(input)-n+1): g = ' '.join(input[i:i+n]) output.setdefault(g, 0) output[g] += 1 return outputngrams('a a a a', 2) # {'a a': 3}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)