Python 如何从这个函数中创建一个n-gram函数?
我有以下函数,它按写入字符串的顺序对字符串中的字符进行计数:Python 如何从这个函数中创建一个n-gram函数?,python,string,n-gram,Python,String,N Gram,我有以下函数,它按写入字符串的顺序对字符串中的字符进行计数: def count_char(s): result = {} for i in range(len(s)): result[s[i]] = s.count(s[i]) return result 比如说。我们有: count_char("practice") {'p' : 1, 'r' : 1, 'a' : 1, 'c' : 2, 't' : 1, 'i' : 1, 'e'
def count_char(s):
result = {}
for i in range(len(s)):
result[s[i]] = s.count(s[i])
return result
比如说。我们有:
count_char("practice")
{'p' : 1, 'r' : 1, 'a' : 1, 'c' : 2, 't' : 1, 'i' : 1, 'e' : 1}
从这个函数中,我如何创建一个函数来计算字符串中每个n-gram出现的次数?比如说,
ngrams("tataki",n=2)
{'ta':2, 'at':1, 'ak':1, 'ki':1}
函数
ngrams
应该是对函数count\u char
的修改,但我不确定此时该如何操作…您可以在函数中添加一个长度参数;然后将切片从1个字符扩展到该长度:
def count_char(s,l=1):
结果={}
对于范围内的i(透镜-l+1):
结果[s[i:i+l]]=s.count(s[i:i+l])
返回结果
打印(计数字符(“实践”))
打印(计数字符('tataki',2))
输出:
{'p':1,'r':1,'a':1,'c':2,'t':1,'i':1,'e':1}
{'ta':2,'at':1,'ak':1,'ki':1}
请注意,只对不重叠的事件计数,因此count\u char('ttt',2)
将返回1,而不是2。如果要计算重叠出现的次数,则需要手动进行。例如:
def count_char(s,l=1):
结果={}
对于范围内的i(透镜-l+1):
sub=s[i:i+l]
如果结果不正确:
结果[sub]=总和(s[j:j+l]==范围内j的sub(len(s)-l+1))
返回结果
当调用此函数时,该函数将返回
2
,称为count\u char('ttt',2)
重叠n-grams
?例如,ngrams('ttt',2)
的输出应该是什么?我认为输出应该是{'tt':2}