小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

520禮包 | 情感分析算法從原理到PaddlePaddle實(shí)戰(zhàn)全解

 taotao_2016 2019-05-20

在自然語言處理中,情感分析一般是指判斷一段文本所表達(dá)的情緒狀態(tài)。其中,一段文本可以是一個(gè)句子,一個(gè)段落或一個(gè)文檔。情緒狀態(tài)可以是兩類,如(正面,負(fù)面),(高興,悲傷);也可以是三類,如(積極,消極,中性)等等。

情感分析的應(yīng)用場景十分廣泛,如把用戶在購物網(wǎng)站(亞馬遜、天貓、淘寶等)、旅游網(wǎng)站、電影評論網(wǎng)站上發(fā)表的評論分成正面評論和負(fù)面評論;或?yàn)榱朔治鲇脩魧τ谀骋划a(chǎn)品的整體使用感受,抓取產(chǎn)品的用戶評論并進(jìn)行情感分析等等。

今天是5月20日,PaddlePaddle教你用情感分析算法體會女神心意。

在下文中,我們將以情感分析為例,介紹使用深度學(xué)習(xí)的方法進(jìn)行端對端的短文本分類,并使用PaddlePaddle完成全部相關(guān)實(shí)驗(yàn)。

項(xiàng)目地址:

https://github.com/PaddlePaddle/book/blob/develop/06.understand_sentiment/README.cn.md

應(yīng)用背景

在自然語言處理中,情感分析屬于典型的文本分類問題,即把需要進(jìn)行情感分析的文本劃分為其所屬類別。文本分類涉及文本表示分類方法兩個(gè)問題。

在深度學(xué)習(xí)的方法出現(xiàn)之前,主流的文本表示方法為詞袋模型BOW(bag of words),話題模型等等;分類方法有SVM(support vector machine), LR(logistic regression)等等。

對于一段文本,BOW表示會忽略其詞順序、語法和句法,將這段文本僅僅看做是一個(gè)詞集合,因此BOW方法并不能充分表示文本的語義信息。

例如,句子“這部電影糟糕透了”和“一個(gè)乏味,空洞,沒有內(nèi)涵的作品”在情感分析中具有很高的語義相似度,但是它們的BOW表示的相似度為0。又如,句子“一個(gè)空洞,沒有內(nèi)涵的作品”和“一個(gè)不空洞而且有內(nèi)涵的作品”的BOW相似度很高,但實(shí)際上它們的意思很不一樣。

在本教程中,我們所要介紹的深度學(xué)習(xí)模型克服了BOW表示的上述缺陷,它在考慮詞順序的基礎(chǔ)上把文本映射到低維度的語義空間,并且以端對端(end to end)的方式進(jìn)行文本表示及分類,其性能相對于傳統(tǒng)方法有顯著的提升[1]。

模型概覽

本教程所使用的文本表示模型為卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks)和循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Networks)及其擴(kuò)展。下面依次介紹這幾個(gè)模型。

文本卷積神經(jīng)網(wǎng)絡(luò)簡介(CNN)

對卷積神經(jīng)網(wǎng)絡(luò)來說,首先使用卷積處理輸入的詞向量序列,產(chǎn)生一個(gè)特征圖(feature map),對特征圖采用時(shí)間維度上的最大池化(max pooling over time)操作得到此卷積核對應(yīng)的整句話的特征,最后,將所有卷積核得到的特征拼接起來即為文本的定長向量表示,對于文本分類問題,將其連接至softmax即構(gòu)建出完整的模型。

在實(shí)際應(yīng)用中,我們會使用多個(gè)卷積核來處理句子,窗口大小相同的卷積核堆疊起來形成一個(gè)矩陣,這樣可以更高效的完成運(yùn)算。另外,我們也可使用窗口大小不同的卷積核來處理句子,圖1表示卷積神經(jīng)網(wǎng)絡(luò)文本分類模型,不同顏色表示不同大小的卷積核操作。

對于一般的短文本分類問題,上文所述的簡單的文本卷積網(wǎng)絡(luò)即可達(dá)到很高的正確率[1]。若想得到更抽象更高級的文本特征表示,可以構(gòu)建深層文本卷積神經(jīng)網(wǎng)絡(luò)[2,3]。

循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)

循環(huán)神經(jīng)網(wǎng)絡(luò)是一種能對序列數(shù)據(jù)進(jìn)行精確建模的有力工具。實(shí)際上,循環(huán)神經(jīng)網(wǎng)絡(luò)的理論計(jì)算能力是圖靈完備的[4]。自然語言是一種典型的序列數(shù)據(jù)(詞序列),近年來,循環(huán)神經(jīng)網(wǎng)絡(luò)及其變體(如long short term memory[5]等)在自然語言處理的多個(gè)領(lǐng)域,如語言模型、句法解析、語義角色標(biāo)注(或一般的序列標(biāo)注)、語義表示、圖文生成、對話、機(jī)器翻譯等任務(wù)上均表現(xiàn)優(yōu)異甚至成為目前效果最好的方法。

循環(huán)神經(jīng)網(wǎng)絡(luò)按時(shí)間展開后如圖2所示:在第t時(shí)刻,網(wǎng)絡(luò)讀入第t個(gè)輸入(向量表示)及前一時(shí)刻隱層的狀態(tài)值 (向量表示,一般初始化為0向量),計(jì)算得出本時(shí)刻隱層的狀態(tài)值,重復(fù)這一步驟直至讀完所有輸入。如果將循環(huán)神經(jīng)網(wǎng)絡(luò)所表示的函數(shù)記為f,則其公式可表示為:

其中是輸入到隱層的矩陣參數(shù),是隱層到隱層的矩陣參數(shù),為隱層的偏置向量(bias)參數(shù),σ為sigmoid函數(shù)。

在處理自然語言時(shí),一般會先將詞(one-hot表示)映射為其詞向量表示,然后再作為循環(huán)神經(jīng)網(wǎng)絡(luò)每一時(shí)刻的輸入。此外,可以根據(jù)實(shí)際需要的不同在循環(huán)神經(jīng)網(wǎng)絡(luò)的隱層上連接其它層。如,可以把一個(gè)循環(huán)神經(jīng)網(wǎng)絡(luò)的隱層輸出連接至下一個(gè)循環(huán)神經(jīng)網(wǎng)絡(luò)的輸入構(gòu)建深層(deep or stacked)循環(huán)神經(jīng)網(wǎng)絡(luò),或者提取最后一個(gè)時(shí)刻的隱層狀態(tài)作為句子表示進(jìn)而使用分類模型等等。

長短期記憶網(wǎng)絡(luò)(LSTM)

對于較長的序列數(shù)據(jù),循環(huán)神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程中容易出現(xiàn)梯度消失或爆炸現(xiàn)象[6]。LSTM能夠解決這一問題。相比于簡單的循環(huán)神經(jīng)網(wǎng)絡(luò),LSTM增加了記憶單元c、輸入門i、遺忘門f及輸出門o。這些門及記憶單元組合起來大大提升了循環(huán)神經(jīng)網(wǎng)絡(luò)處理長序列數(shù)據(jù)的能力。若將基于LSTM的循環(huán)神經(jīng)網(wǎng)絡(luò)表示的函數(shù)記為F,則其公式為:

F由下列公式組合而成[7]:

其中,,,分別表示輸入門,遺忘門,記憶單元及輸出門的向量值,帶角標(biāo)的W及b為模型參數(shù),tanh為雙曲正切函數(shù),⊙表示逐元素(elementwise)的乘法操作。輸入門控制著新輸入進(jìn)入記憶單元c的強(qiáng)度,遺忘門控制著記憶單元維持上一時(shí)刻值的強(qiáng)度,輸出門控制著輸出記憶單元的強(qiáng)度。三種門的計(jì)算方式類似,但有著完全不同的參數(shù),它們各自以不同的方式控制著記憶單元c,如圖3所示:

LSTM通過給簡單的循環(huán)神經(jīng)網(wǎng)絡(luò)增加記憶及控制門的方式,增強(qiáng)了其處理遠(yuǎn)距離依賴問題的能力。類似原理的改進(jìn)還有Gated Recurrent Unit (GRU)[8],其設(shè)計(jì)更為簡潔一些。這些改進(jìn)雖然各有不同,但是它們的宏觀描述卻與簡單的循環(huán)神經(jīng)網(wǎng)絡(luò)一樣(如圖2所示),即隱狀態(tài)依據(jù)當(dāng)前輸入及前一時(shí)刻的隱狀態(tài)來改變,不斷地循環(huán)這一過程直至輸入處理完畢:

其中,Recrurent可以表示簡單的循環(huán)神經(jīng)網(wǎng)絡(luò)、GRU或LSTM。

棧式雙向LSTM(Stacked Bidirectional LSTM)

對于正常順序的循環(huán)神經(jīng)網(wǎng)絡(luò),包含了t時(shí)刻之前的輸入信息,也就是上文信息。同樣,為了得到下文信息,我們可以使用反方向(將輸入逆序處理)的循環(huán)神經(jīng)網(wǎng)絡(luò)。結(jié)合構(gòu)建深層循環(huán)神經(jīng)網(wǎng)絡(luò)的方法(深層神經(jīng)網(wǎng)絡(luò)往往能得到更抽象和高級的特征表示),我們可以通過構(gòu)建更加強(qiáng)有力的基于LSTM的棧式雙向循環(huán)神經(jīng)網(wǎng)絡(luò)[9],來對時(shí)序數(shù)據(jù)進(jìn)行建模。

如圖4所示(以三層為例),奇數(shù)層LSTM正向,偶數(shù)層LSTM反向,高一層的LSTM使用低一層LSTM及之前所有層的信息作為輸入,對最高層LSTM序列使用時(shí)間維度上的最大池化即可得到文本的定長向量表示(這一表示充分融合了文本的上下文信息,并且對文本進(jìn)行了深層次抽象),最后我們將文本表示連接至softmax構(gòu)建分類模型。

基于PaddlePaddle的實(shí)戰(zhàn)

PaddlePaddle簡介

PaddlePaddle()是百度研發(fā)的深度學(xué)習(xí)框架。除了核心框架之外,PaddlePaddle還提供了豐富的工具組件。官方開源了多個(gè)工業(yè)級應(yīng)用模型,涵蓋自然語言處理、計(jì)算機(jī)視覺、推薦引擎等多個(gè)領(lǐng)域,并開放了多個(gè)領(lǐng)先的預(yù)訓(xùn)練中文模型。4月23日深度學(xué)習(xí)開發(fā)者峰會上,PaddlePaddle發(fā)布了一系列新特性和應(yīng)用案例。

數(shù)據(jù)集介紹

我們以IMDB情感分析數(shù)據(jù)集為例進(jìn)行介紹。IMDB數(shù)據(jù)集的訓(xùn)練集和測試集分別包含25000個(gè)已標(biāo)注過的電影評論。其中,負(fù)面評論的得分小于等于4,正面評論的得分大于等于7,滿分10分。

aclImdb
|- test
   |-- neg
   |-- pos
|- train
   |-- neg
   |-- pos

PaddlePaddle在 dataset/imdb.py 中實(shí)現(xiàn)了imdb數(shù)據(jù)集的自動下載和讀取,并提供了讀取字典、訓(xùn)練數(shù)據(jù)、測試數(shù)據(jù)等API。

配置模型

在該示例中,我們實(shí)現(xiàn)了兩種文本分類算法,文本卷積神經(jīng)網(wǎng)絡(luò),和棧式雙向LSTM。我們首先引入要用到的庫和定義全局變量:

from __future__ import print_function
import paddle
import paddle.fluid as fluid
import numpy as np
import sys
import math

CLASS_DIM = 2     #情感分類的類別數(shù)
EMB_DIM = 128     #詞向量的維度
HID_DIM = 512     #隱藏層的維度
STACKED_NUM = 3   #LSTM雙向棧的層數(shù)
BATCH_SIZE = 128  #batch的大小

文本卷積神經(jīng)網(wǎng)絡(luò)

我們構(gòu)建神經(jīng)網(wǎng)絡(luò) convolution_net,示例代碼如下。 需要注意的是:fluid.nets.sequence_conv_pool 包含卷積和池化層兩個(gè)操作。

#文本卷積神經(jīng)網(wǎng)絡(luò)
def convolution_net(data, input_dim, class_dim, emb_dim, hid_dim):
    emb = fluid.layers.embedding(
        input=data, size=[input_dim, emb_dim], is_sparse=True)
    conv_3 = fluid.nets.sequence_conv_pool(
        input=emb,
        num_filters=hid_dim,
        filter_size=3,
        act='tanh',
        pool_type='sqrt')
    conv_4 = fluid.nets.sequence_conv_pool(
        input=emb,
        num_filters=hid_dim,
        filter_size=4,
        act='tanh',
        pool_type='sqrt')
    prediction = fluid.layers.fc(
        input=[conv_3, conv_4], size=class_dim, act='softmax')
    return prediction

網(wǎng)絡(luò)的輸入 input_dim 表示的是詞典的大小,class_dim 表示類別數(shù)。這里,我們使用 sequence_conv_pool API實(shí)現(xiàn)了卷積和池化操作。

棧式雙向LSTM

棧式雙向神經(jīng)網(wǎng)絡(luò)stacked_lstm_net的代碼片段如下:

#棧式雙向LSTM
def stacked_lstm_net(data, input_dim, class_dim, emb_dim, hid_dim, stacked_num):
    assert stacked_num % 2 == 1
    #計(jì)算詞向量
    emb = fluid.layers.embedding(
        input=data, size=[input_dim, emb_dim], is_sparse=True)

    #第一層棧
    #全連接層
    fc1 = fluid.layers.fc(input=emb, size=hid_dim)
    #lstm層
    lstm1, cell1 = fluid.layers.dynamic_lstm(input=fc1, size=hid_dim)

    inputs = [fc1, lstm1]

    #其余的所有棧結(jié)構(gòu)
    for i in range(2, stacked_num + 1):
        fc = fluid.layers.fc(input=inputs, size=hid_dim)
        lstm, cell = fluid.layers.dynamic_lstm(
            input=fc, size=hid_dim, is_reverse=(i % 2) == 0)
        inputs = [fc, lstm]

    #池化層
    fc_last = fluid.layers.sequence_pool(input=inputs[0], pool_type='max')
    lstm_last = fluid.layers.sequence_pool(input=inputs[1], pool_type='max')

    #全連接層,softmax預(yù)測
    prediction = fluid.layers.fc(
        input=[fc_last, lstm_last], size=class_dim, act='softmax')
return prediction

以上的棧式雙向LSTM抽象出了高級特征并把其映射到和分類類別數(shù)同樣大小的向量上。最后一個(gè)全連接層的’softmax’激活函數(shù)用來計(jì)算分類屬于某個(gè)類別的概率。

重申一下,此處我們可以調(diào)用 convolution_net 或 stacked_lstm_net 的任何一個(gè)網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行訓(xùn)練學(xué)習(xí)。我們以 convolution_net 為例。

接下來我們定義預(yù)測程序(inference_program)。預(yù)測程序使用convolution_net 來對 fluid.layer.data 的輸入進(jìn)行預(yù)測。

def inference_program(word_dict):
    data = fluid.layers.data(
        name='words', shape=[1], dtype='int64', lod_level=1)

    dict_dim = len(word_dict)
    net = convolution_net(data, dict_dim, CLASS_DIM, EMB_DIM, HID_DIM)
    # net = stacked_lstm_net(data, dict_dim, CLASS_DIM, EMB_DIM, HID_DIM, STACKED_NUM)
return net

我們這里定義了 training_program。它使用了從 inference_program 返回的結(jié)果來計(jì)算誤差。我們同時(shí)定義了優(yōu)化函數(shù) optimizer_func 。

因?yàn)槭怯斜O(jiān)督的學(xué)習(xí),訓(xùn)練集的標(biāo)簽也在fluid.layers.data中定義了。在訓(xùn)練過程中,交叉熵用來在fluid.layer.cross_entropy中作為損失函數(shù)。

在測試過程中,分類器會計(jì)算各個(gè)輸出的概率。第一個(gè)返回的數(shù)值規(guī)定為cost。

def train_program(prediction):
    label = fluid.layers.data(name='label', shape=[1], dtype='int64')
    cost = fluid.layers.cross_entropy(input=prediction, label=label)
    avg_cost = fluid.layers.mean(cost)
    accuracy = fluid.layers.accuracy(input=prediction, label=label)
    return [avg_cost, accuracy]   #返回平均cost和準(zhǔn)確率acc

#優(yōu)化函數(shù)
def optimizer_func():
    return fluid.optimizer.Adagrad(learning_rate=0.002)

訓(xùn)練模型

定義訓(xùn)練環(huán)境

定義你的訓(xùn)練是在CPU上還是在GPU上:

use_cuda = False  #在cpu上進(jìn)行訓(xùn)練
place = fluid.CUDAPlace(0) if use_cuda else fluid.CPUPlace()

定義數(shù)據(jù)提供器

下一步是為訓(xùn)練和測試定義數(shù)據(jù)提供器。提供器讀入一個(gè)大小為 BATCH_SIZE的數(shù)據(jù)。paddle.dataset.imdb.word_dict 每次會在亂序化后提供一個(gè)大小為BATCH_SIZE的數(shù)據(jù),亂序化的大小為緩存大小buf_size。

注意:讀取IMDB的數(shù)據(jù)可能會花費(fèi)幾分鐘的時(shí)間,請耐心等待。

print('Loading IMDB word dict....')
word_dict = paddle.dataset.imdb.word_dict()

print ('Reading training data....')
train_reader = paddle.batch(
    paddle.reader.shuffle(
        paddle.dataset.imdb.train(word_dict), buf_size=25000),
    batch_size=BATCH_SIZE)
print('Reading testing data....')
test_reader = paddle.batch(
paddle.dataset.imdb.test(word_dict), batch_size=BATCH_SIZE)

feed_order = ['words', 'label']
pass_num = 1

word_dict 是一個(gè)字典序列,是詞和label的對應(yīng)關(guān)系,運(yùn)行下一行可以看到具體內(nèi)容:

word_dict

每行是如(’limited’: 1726)的對應(yīng)關(guān)系,該行表示單詞limited所對應(yīng)的label是1726。

構(gòu)造訓(xùn)練器

訓(xùn)練器需要一個(gè)訓(xùn)練程序和一個(gè)訓(xùn)練優(yōu)化函數(shù)。

main_program = fluid.default_main_program()
star_program = fluid.default_startup_program()
prediction = inference_program(word_dict)
train_func_outputs = train_program(prediction)
avg_cost = train_func_outputs[0]

test_program = main_program.clone(for_test=True)

sgd_optimizer = optimizer_func()
sgd_optimizer.minimize(avg_cost)
exe = fluid.Executor(place)

該函數(shù)用來計(jì)算訓(xùn)練中模型在test數(shù)據(jù)集上的結(jié)果

def train_test(program, reader):
    count = 0
    feed_var_list = [
        program.global_block().var(var_name) for var_name in feed_order
    ]
    feeder_test = fluid.DataFeeder(feed_list=feed_var_list, place=place)
    test_exe = fluid.Executor(place)
    accumulated = len([avg_cost, accuracy]) * [0]
    for test_data in reader():
        avg_cost_np = test_exe.run(
            program=program,
            feed=feeder_test.feed(test_data),
            fetch_list=[avg_cost, accuracy])
        accumulated = [
            x[0] + x[1][0] for x in zip(accumulated, avg_cost_np)
        ]
        count += 1
    return [x / count for x in accumulated]

提供數(shù)據(jù)并構(gòu)建主訓(xùn)練循環(huán)

feed_order 用來定義每條產(chǎn)生的數(shù)據(jù)和 fluid.layers.data 之間的映射關(guān)系。比如,imdb.train 產(chǎn)生的第一列的數(shù)據(jù)對應(yīng)的是words這個(gè)特征。

# Specify the directory path to save the parameters
params_dirname = 'understand_sentiment_conv.inference.model'

feed_order = ['words', 'label']
pass_num = 1  #訓(xùn)練循環(huán)的輪數(shù)

#程序主循環(huán)部分
def train_loop():
#啟動上文構(gòu)建的訓(xùn)練器
feed_var_list_loop = [
    main_program.global_block().var(var_name) for var_name in feed_order
]
feeder = fluid.DataFeeder(feed_list=feed_var_list_loop,place=place) 
exe.run(star_program)

    #訓(xùn)練循環(huán)
    for epoch_id in range(pass_num):
        for step_id, data in enumerate(train_reader()):
            #運(yùn)行訓(xùn)練器  
            metrics = exe.run(main_program,
                              feed=feeder.feed(data),
                              fetch_list=[var.name for var in train_func_outputs])

            #測試結(jié)果
    print('step: {0}, Metrics {1}'.format(
                    step_id, list(map(np.array, metrics))))
    if (step_id + 1) % 10 == 0:
                    avg_cost_test, acc_test = train_test(test_program,
                                                         test_reader)
                    print('Step {0}, Test Loss {1:0.2}, Acc {2:0.2}'.format(
                        step_id, avg_cost_test, acc_test))

                    print('Step {0}, Epoch {1} Metrics {2}'.format(
                        step_id, epoch_id, list(map(np.array, metrics))))
                if math.isnan(float(metrics[0])):
                    sys.exit('got NaN loss, training failed.')
            if params_dirname is not None:
                fluid.io.save_inference_model(params_dirname, ['words'],
                                              prediction, exe) #保存模型
train_loop()

訓(xùn)練過程處理

我們在訓(xùn)練主循環(huán)里打印了每一步輸出,可以觀察訓(xùn)練情況。

開始訓(xùn)練

最后,我們啟動訓(xùn)練主循環(huán)來開始訓(xùn)練。訓(xùn)練時(shí)間較長,如果為了更快的返回結(jié)果,可以通過調(diào)整損耗值范圍或者訓(xùn)練步數(shù),以減少準(zhǔn)確率的代價(jià)來縮短訓(xùn)練時(shí)間。

train_loop(fluid.default_main_program())

應(yīng)用模型

構(gòu)建預(yù)測器

和訓(xùn)練過程一樣,我們需要?jiǎng)?chuàng)建一個(gè)預(yù)測過程,并使用訓(xùn)練得到的模型和參數(shù)來進(jìn)行預(yù)測,params_dirname 用來存放訓(xùn)練過程中的各個(gè)參數(shù)。

place = fluid.CUDAPlace(0) if use_cuda else fluid.CPUPlace()
exe = fluid.Executor(place)
inference_scope = fluid.core.Scope()

生成測試用輸入數(shù)據(jù)

為了進(jìn)行預(yù)測,我們?nèi)我膺x取3個(gè)評論。請隨意選取您看好的3個(gè)。我們把評論中的每個(gè)詞對應(yīng)到word_dict中的id。如果詞典中沒有這個(gè)詞,則設(shè)為unknown。 然后我們用create_lod_tensor來創(chuàng)建細(xì)節(jié)層次的張量

reviews_str = [
    'read the book forget the movie', 'this is a great movie', 'this is very bad'
]
reviews = [c.split() for c in reviews_str]

UNK = word_dict['<unk>']
lod = []
for c in reviews:
    lod.append([word_dict.get(words, UNK) for words in c])

base_shape = [[len(c) for c in lod]]

tensor_words = fluid.create_lod_tensor(lod, base_shape, place)

應(yīng)用模型并進(jìn)行預(yù)測

現(xiàn)在我們可以對每一條評論進(jìn)行正面或者負(fù)面的預(yù)測啦。

with fluid.scope_guard(inference_scope):

    [inferencer, feed_target_names,
     fetch_targets] = fluid.io.load_inference_model(params_dirname, exe)

reviews_str = [
    'read the book forget the moive’,’this is a great moive',
    'this is very bad'
]
reviews = [c.split() for c in reviews_str]

UNK = word_dict['<unk>']
lod = []
for c in reviews:
    lod.append([np.int64(word_dict.get(words, UNK)) for words in c])

base_shape = [[len(c) for c in lod]]

tensor_words = fluid.create_lod_tensor(lod, base_shape,place)
assert feed_target_names[0] == 'words'
results = exe.run(inferencer,
                      feed={feed_target_names[0]: tensor_words},
                      fetch_list=fetch_targets,
                      return_numpy=False)
    np_data = np.array(results[0])
    for i, r in enumerate(np_data):
        print('Predict probability of ', r[0], ' to be positive and ', r[1],
              ' to be negative for review \'', reviews_str[i], '\'')

感興趣的小伙伴可以在PaddlePaddle官網(wǎng)上閱讀其他相關(guān)文檔內(nèi)容:http://www./

參考文獻(xiàn):

  1. Kim Y. Convolutional neural networks for sentence classification[J]. arXiv preprint arXiv:1408.5882, 2014.

  2. Kalchbrenner N, Grefenstette E, Blunsom P. A convolutional neural network for modelling sentences[J]. arXiv preprint arXiv:1404.2188, 2014.

  3. Yann N. Dauphin, et al. Language Modeling with Gated Convolutional Networks[J] arXiv preprint arXiv:1612.08083, 2016.

  4. Siegelmann H T, Sontag E D. On the computational power of neural nets[C]//Proceedings of the fifth annual workshop on Computational learning theory. ACM, 1992: 440-449.

  5. Hochreiter S, Schmidhuber J. Long short-term memory[J]. Neural computation, 1997, 9(8): 1735-1780.

  6. Bengio Y, Simard P, Frasconi P. Learning long-term dependencies with gradient descent is difficult[J]. IEEE transactions on neural networks, 1994, 5(2): 157-166.

  7. Graves A. Generating sequences with recurrent neural networks[J]. arXiv preprint arXiv:1308.0850, 2013.

  8. Cho K, Van Merri?nboer B, Gulcehre C, et al. Learning phrase representations using RNN encoder-decoder for statistical machine translation[J]. arXiv preprint arXiv:1406.1078, 2014.

  9. Zhou J, Xu W. End-to-end learning of semantic role labeling using recurrent neural networks[C]//Proceedings of the Annual Meeting of the Association for Computational Linguistics. 2015.

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多