我想使用hiveql创建一个n-gram列表。我的想法是使用一个具有前瞻性和split函数的正则表达式-但是这不起作用:
select split('This is my sentence', '(\\S+) +(?=(\\S+))');
输入是表单的一列
|sentence |
|-------------------------|
|This is my sentence |
|This is another sentence |
输出应该是:
["This is","is my","my sentence"]
["This is","is another","another sentence"]
在hive中有一个n-grams自定义项,但是这个函数直接计算n-grams的频率-我想要一个所有n-grams的列表。
提前多谢了!
1条答案
按热度按时间hjqgdpho1#
这也许不是最理想的解决方案,但非常有效。用分隔符拆分句子(在我的例子中是一个或多个空格或逗号),然后分解并连接得到n-gram,然后使用
collect_set
(如果您需要唯一的n-grams)或collect_list
:结果: