apache pig:从标记元组包中删除stopwords?

yshpjwxd  于 2021-06-21  发布在  Pig
关注(0)|答案(1)|浏览(259)

我想用pig从工作描述的关系中删除stopwords。然而,我无法连接两个关系来匹配我的文本中的停止词。
我的数据是一个csv文件,每行有两个条目:

我还有一个630个英文停止词的列表:

在pig中,我将加载这两个文件并按以下方式转换第一个文件:

jobs10 = load 'data/hw4/jobs/20140213_descriptions10.csv' using PigStorage(',') as (id:chararray,descr:chararray);
 descrFlat = foreach jobs10 generate id,flatten(TOKENIZE(descr));
 stopwords = load 'data/hw4/stopwords-en.txt' using PigStorage('\n') as (word:chararray);
``` `descrFlat` 现在看起来像这样:

grunt> describe descrFlat
descrFlat: {id: chararray,bag_of_tokenTuples_from_descr::token: chararray}

与此和此示例类似,我现在尝试将两个文件连接起来。。。

J = JOIN stopwords BY $0 RIGHT OUTER, descrFlat BY $0;

…导致以下结构 `J` :

grunt> describe J
J: {stopwords::word: chararray,descrFlat:emoji symbols:id chararray,descrFlat::bag_of_tokenTuples_from_descr::token: chararray}

但这并不是理想的结果 `K = FILTER J BY $0 IS NULL;` 开;数据只是胡言乱语:

grunt> dump J

这可能是因为我使用的是一包标记元组,而不是上述示例中的简单元组。
![](https://i.stack.imgur.com/hW3Ki.png)
wz8daaqr

wz8daaqr1#

我发现了我的错误。下面是指descrflat中的第一列,而实际上应该是指第二列( $1 ),其中包含单词。此外,删除不必要的标点符号也有帮助。

J = JOIN stopwords BY $0 RIGHT OUTER, descrFlat BY $0;

相关问题