0

SFrame でデータセットをインポートしました。

products = graphlab.SFrame('amazon_baby.gl')
products['word_count'] = graphlab.text_analytics.count_words(products['review'])

以下に示す一連の単語に対して感情分析を行いたいと思います。

selected_words = ['awesome', 'great', 'fantastic', 'amazing', 'love', 'horrible', 'bad', 'terrible', 'awful', 'wow', 'hate']

次に、製品マトリックスで選択した単語ごとに新しい列を作成したいと思います。エントリはそのような単語が出現する回数であるため、「awesome」という単語の関数を作成しました。

def awesome_count(word_count):
    if 'awesome' in product:
        return product['awesome']
    else:
        return 0;

products['awesome'] = products['word_count'].apply(awesome_count)

ここまではうまくいきましたが、この方法で選択した単語ごとに他の関数を手動で作成する必要があります。

4

2 に答える 2

0

私は実際にこれを行うより簡単な方法を見つけました:

def wordCount_select(wc,selectedWord):
    if selectedWord in wc:
        return wc[selectedWord]
    else:
        return 0    


for word in selected_words:
    products[word] = products['word_count'].apply(lambda wc: wordCount_select(wc, word))
于 2016-01-31T18:58:26.557 に答える
0

コマンドでうまくいくと思いますSFrame.unpack。実際、limitパラメーターは選択した単語のリストを受け入れ、これらの結果のみを保持するため、その部分は大幅に簡素化されます。

あなたのレビュー データに何が含まれているのか正確にはわかりません。そのため、おもちゃの例を作成しました。

# Create the data and convert to bag-of-words.
import graphlab
products = graphlab.SFrame({'review':['this book is awesome',
                                      'I hate this book']})

products['word_count'] = \
    graphlab.text_analytics.count_words(products['review'])

# Unpack the bag-of-words into separate columns.
selected_words = ['awesome', 'hate']
products2 = products.unpack('word_count', limit=selected_words)


# Fill in zeros for the missing values.
for word in selected_words:
    col_name = 'word_count.{}'.format(word)
    products2[col_name] = products2[col_name].fillna(value=0)

また、GraphLab Create には独自の感情分析ツールキットがあり、チェックする価値があることを指摘せずにはいられません。

于 2016-01-31T06:57:04.943 に答える