2016-05-19 40 views
0

我試圖從使用Pig的工作描述關係中移除停用詞。然而,我無法加入兩個關係來將停用詞匹配到我的文本。阿帕奇豬:從袋子令牌元組中去除停用詞?

我的數據是每行有兩個條目csv文件: Job Descriptions

我也有630英語列表禁用詞:

Stopwords

豬,我加載這兩個文件並按以下方式轉換第一個:

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 n流量是這樣的:

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

類似thisthis例子,我現在想OUTER JOIN兩個文件...

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

...導致下列結構J

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

然而,這不是使用K = FILTER J BY $0 IS NULL;所需的結果;數據只是廢話

grunt> dump J 

這可能是由於我與令牌元組,而不是在上述例子中的簡單元組的包工作的事實。

Gibberish

回答

0

我發現我錯了。以下是descrFlat中的第一列,而它應該是指第二列($1),它包含這些詞。另外,刪除不必要的標點符號也有幫助。

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