python 中的 Ngram 和 start_pad

Ngram in python with start_pad

我知道 python 我了解一些关于列表和元组的基本知识,但我不完全理解我想要创建列表的鳕鱼,每个索引中有三个索引,有元组和拖曳索引,比如这个 [('~','a'),('a','b'),('b','c')] 元组中的第一个索引有两个字符或者像这样的长度上下文 [('~a','a'),('ab','b'),('bc','c')] 可以是任何一个帮助我?她是我的代码


def getNGrams(wordlist, n):
ngrams = []
padded_tokens = "~"*(n) + wordlist
t = tuple(wordlist)
for i in range(3):
  t = tuple(padded_tokens[i:i+n])
  ngrams.append(t)
return ngrams

IIUC,你可以像下面这样改变函数,得到你想要的:

def getNGrams(wordlist, n):
    ngrams = []
    padded_tokens = "~"*n + wordlist
    for idx, i in enumerate(range(len(wordlist))):
        t = tuple((padded_tokens[i:i+n], wordlist[idx]))
        ngrams.append(t)
    return ngrams

print(getNGrams('abc',1))
print(getNGrams('abc',2))
print(getNGrams('abc',3))

输出:

[('~', 'a'), ('a', 'b'), ('b', 'c')]
[('~~', 'a'), ('~a', 'b'), ('ab', 'c')]
[('~~~', 'a'), ('~~a', 'b'), ('~ab', 'c')]