我想用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: 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)
1条答案
按热度按时间wz8daaqr1#
我发现了我的错误。下面是指descrflat中的第一列,而实际上应该是指第二列(
$1
),其中包含单词。此外,删除不必要的标点符号也有帮助。