繁体   English   中英

如何在Hive中生成所有n-gram

How to generate all n-grams in Hive

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我想使用HiveQL创建一个n-gram列表。 我的想法是使用具有前瞻和拆分功能的正则表达式 - 但这不起作用:

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-gram udf,但函数直接计算n-gram的频率 - 我希望得到所有n-gram的列表。

非常感谢提前!

1 个回复

这可能不是最优化但非常有效的解决方案。 用分隔符分割句子(在我的例子中它是一个或多个空格或逗号),然后爆炸并连接以获得n-gram,然后使用collect_set (如果你需要唯一的n-gram)或collect_list n-gram collect_list

with src as 
(
select source_data.sentence, words.pos, words.word
  from
      (--Replace this subquery (source_data) with your table
       select stack (2,
                     'This is my sentence', 
                     'This is another sentence'
                     ) as sentence
      ) source_data 
        --split and explode words
        lateral view posexplode(split(sentence, '[ ,]+')) words as pos, word
)

select s1.sentence, collect_set(concat_ws(' ',s1.word, s2.word)) as ngrams 
      from src s1 
           inner join src s2 on s1.sentence=s2.sentence and s1.pos+1=s2.pos              
group by s1.sentence;

结果:

OK
This is another sentence        ["This is","is another","another sentence"]
This is my sentence             ["This is","is my","my sentence"]
Time taken: 67.832 seconds, Fetched: 2 row(s)
1 如何在Hive中生成n-gram

如何在Hive中生成n-gram? 我只知道1克是 输出为[“ a”,“ b”,“ c”,“ d”,“”] 我知道如何在Hive中生成所有n-gram可以用单词做n-gram。 但是我想用只包含'a'-'z'且没有空格或逗号的字符串做n-gram 例如输入字符串“ a ...

2019-10-18 13:13:40 0 24   sql/ hive
2 如何在scala中生成n元语法?

我正在尝试在Scala中编写基于n-gram的解压新闻算法。 如何为大型文件生成n元语法:例如,对于包含“蜜蜂是蜜蜂的蜜蜂”的文件。 首先,它必须选择一个随机的n-gram。 例如,蜜蜂。 然后,它必须寻找以(n-1)个单词开头的n-gram。 例如,蜜蜂。 它打 ...

3 zip(*) 如何生成 n-gram?

我正在查看有关 n-gram 的一些笔记,并且遇到了几个有趣的函数。 首先是这个生成二元组: 在自己阅读和使用 Python 进行一些阅读后,我明白了为什么会这样。 然而,在查看这个函数时,我对这里使用zip(*word[i:])感到非常困惑。 据我所知, *是拆包经营者(如解释在这里),但我真 ...

4 如何计算N克

尝试弄清楚如何计算n-gram时遇到问题。 我想知道在计算n-gram(不是频率)时,可以交换公共元素的位置吗? 这些是几个示例: (假设在开头和结尾处添加了额外的符号) 1。 v_是否应视为一个公共元素? 2。 应该将gr和ew都视为共同要素吗? ...

2013-04-17 09:42:33 0 273   n-gram
5 如何嵌入N-gram

为了改进我的模型,我使用了基于字符的3- Gram而不是word :)代码段如下: def MakeNGram(sent_list, N, vocab_size, seq_size): NGramList = [] for sent in sent_list: # ...

6 RapidMiner:如何有效地生成n-gram?

就我的论文而言,我正在尝试使用带有文本挖掘扩展程序的RapidMiner Community Edition对更大(最大2GB)的文本文档(产品评论)文件进行情感分析。 我想为此生成二元组。 但是,对于一个甚至只有不到100.000个文档的70MB的小型csv文件,在8核32GB RAM ...

9 使用Keras Tokenizer生成n-gram

可以在Keras中使用n-gram吗? 例如,句子在X_train数据帧中包含“句子”列。 我以下列方式使用Keras的tokenizer: 然后我填写句子: 我还使用一个简单的LSTM网络: 在这种情况下,tokenizer执行。 在Keras docs: ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM