开发者社区> 问答> 正文

通过每次移动2个数据单位来生成4克数据

我有一个序列的数据,我希望建立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

展开
收起
kun坤 2019-12-25 22:20:32 311 0
1 条回答
写回答
取消 提交回答
  • 你可以用下面的方法,

    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')]
    2019-12-25 22:20:37
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载