Python – 字符串中的 Bigrams 频率
有时在使用Python Data 时,我们可能会遇到需要从字符串中提取二元组的问题。这在 NLP 领域有应用。但有时,我们需要计算唯一二元组的频率以进行数据收集。这个问题的解决方案可能很有用。让我们讨论可以执行此任务的某些方式。
方法 #1:使用Counter()
+ 生成器表达式
上述功能的组合可以用来解决这个问题。在此,我们使用 Counter() 计算频率,并使用生成器表达式和字符串切片进行二元计算。
# Python3 code to demonstrate working of
# Bigrams Frequency in String
# Using Counter() + generator expression
from collections import Counter
# initializing string
test_str = 'geeksforgeeks'
# printing original string
print("The original string is : " + str(test_str))
# Bigrams Frequency in String
# Using Counter() + generator expression
res = Counter(test_str[idx : idx + 2] for idx in range(len(test_str) - 1))
# printing result
print("The Bigrams Frequency is : " + str(dict(res)))
输出 :
The original string is : geeksforgeeks
The Bigrams Frequency is : {‘ee’: 2, ‘ks’: 2, ‘ek’: 2, ‘sf’: 1, ‘fo’: 1, ‘ge’: 2, ‘rg’: 1, ‘or’: 1}
方法#2:使用Counter() + zip() + map() + join
上述功能的组合也可以用来解决这个问题。在此,我们使用 zip() + map() + join 执行构建二元组的任务。
# Python3 code to demonstrate working of
# Bigrams Frequency in String
# Using Counter() + zip() + map() + join
from collections import Counter
# initializing string
test_str = 'geeksforgeeks'
# printing original string
print("The original string is : " + str(test_str))
# Bigrams Frequency in String
# Using Counter() + zip() + map() + join
res = Counter(map(''.join, zip(test_str, test_str[1:])))
# printing result
print("The Bigrams Frequency is : " + str(dict(res)))
输出 :
The original string is : geeksforgeeks
The Bigrams Frequency is : {‘ee’: 2, ‘ks’: 2, ‘ek’: 2, ‘sf’: 1, ‘fo’: 1, ‘ge’: 2, ‘rg’: 1, ‘or’: 1}