Python 为后续字母的三元组创建计数器
我试图得到一个计数器,它可以查看文本并返回一个字母相对于前一对字母的频率。 例如,部分输出为:Python 为后续字母的三元组创建计数器,python,counter,Python,Counter,我试图得到一个计数器,它可以查看文本并返回一个字母相对于前一对字母的频率。 例如,部分输出为: 'th' : Counter ({'e':119, 'a':145 etc... }) 我希望它迭代所有可能的小写字符对 到目前为止,我一直在使用以下代码获得只考虑上一个字母的输出: def pairwise(iterable): it = iter(iterable) last = next(it) for curr in it: yield last, c
'th' : Counter ({'e':119, 'a':145 etc... })
我希望它迭代所有可能的小写字符对
到目前为止,我一直在使用以下代码获得只考虑上一个字母的输出:
def pairwise(iterable):
it = iter(iterable)
last = next(it)
for curr in it:
yield last, curr
last = curr
valid = set('abcdefghijklmnopqrstuvwxyz ')
def valid_pair((last, curr)):
return last in valid and curr in valid
def make_markov(text):
markov = defaultdict(Counter)
lowercased = (c.lower() for c in text)
for p, q in ifilter(valid_pair, pairwise(lowercased)):
markov[p][q] += 1
return markov
未经测试:
def pairwise(iterable):
it = iter(iterable)
last = next(it)+next(it)
for curr in it:
yield last, curr
last = last[1]+curr
def valid_pair((last, curr)):
return last[0] in valid and last[1] in valid and curr in valid
你能修正代码上的缩进吗?