我有一个序列的数据,我希望建立n克从它。序列外观的摘录如下。 我目前使用ntlk的ngrams()函数从这个数据构建4克 8c b0 00 f0, b0 00 f0 05,00 f0 05 fc…也就是通过一个一个滑动产生4克。但是,我的要求是,在创建n-gram时,不是一个一个地滑动,而是一个一个地滑动。所以预期的8c b0 00 f0, 00 f0 05 fc,05 fc 04 46…等等。我搜索了,但是没有找到任何方法来做这件事,而不是像现在这样一个一个地移动。下面是强调当前工作的4行代码的一部分
s = finalString.lower()
s = re.sub(r'[^a-zA-Z0-9\s]', ' ', s)
tokens = [token for token in s.split(" ") if token != ""]
output = list(ngrams(tokens, 4))
问题来源StackOverflow 地址:/questions/59385419/making-4-gram-data-by-shifting-2-units-of-data-at-a-time
你可以用下面的方法,
s = '8c b0 00 f0 05 fc 04 46 00 f0 fe fb 40 f2 00 05 c2 f2 00 05 28 78 00'
from nltk import ngrams
output = list(ngrams(s.split(), 4))[::2] # Using only alternate records from ngrams,
# Here 2 is the sliding window that you want.
[('8c', 'b0', '00', 'f0'), ('00', 'f0', '05', 'fc'), ('05', 'fc', '04', '46'), ('04', '46', '00', 'f0'), ('00', 'f0', 'fe', 'fb'), ('fe', 'fb', '40', 'f2'), ('40', 'f2', '00', '05'), ('00', '05', 'c2', 'f2'), ('c2', 'f2', '00', '05'), ('00', '05', '28', '78')]
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。