久久精品国产亚洲5555_久久精品国产精品亜洲毛片_亚AV无码乱码在线观看富二代_一本色综合网久久_免费黄色视频在线播放_亚洲视频日本欧美在线观看_欧美午夜伦理视频_第九影院实时更新高清电影_91精品啪在线观看国产_北条麻妃被两个黑人玩

檢信專注心理
用技術(shù)創(chuàng)新 做行業(yè)先驅(qū)
檢信ALLEMOTION
  • 檢信智能 Allemotion OS 介紹 語音識(shí)別技術(shù)的發(fā)展現(xiàn)狀
    讓機(jī)器聽懂人聲,這是人們長(zhǎng)久以來的夢(mèng)想。語音識(shí)別是一門交叉學(xué)科,涉及多學(xué)科研究領(lǐng)域。不同領(lǐng)域的研究成果為語音識(shí)別的發(fā)展做出了貢獻(xiàn)。語音識(shí)別技術(shù)是一種高科技,它可以讓機(jī)器通過識(shí)別和理解的過程將語音信號(hào)轉(zhuǎn)換成相應(yīng)的文本或命令。計(jì)算機(jī)語音識(shí)別過程與人類語音識(shí)別過程基本相同。當(dāng)前主流的語音識(shí)別技術(shù)是基于統(tǒng)計(jì)模式識(shí)別的基本理論。一個(gè)完整的語音識(shí)別系統(tǒng)大致可以分為三個(gè)部分:(1)語音特征提取:目的是從語音波形中提取隨時(shí)間變化的語音特征序列。(2)聲學(xué)模型與模式匹配(識(shí)別算法):聲學(xué)模型是識(shí)別系統(tǒng)的底層模型,也是語音識(shí)別系統(tǒng)中關(guān)鍵的部分。聲學(xué)模型通常是從獲得的語音特征中訓(xùn)練生成的,目的是為每個(gè)發(fā)音建立一個(gè)發(fā)音模板。在識(shí)別過程中,將未知語音特征與聲學(xué)模型(模式)進(jìn)行匹配和比較,計(jì)算未知語音的特征向量序列與每個(gè)發(fā)音模板的距離。聲學(xué)模型的設(shè)計(jì)與語言發(fā)音的特點(diǎn)密切相關(guān)。聲學(xué)模型單元大小對(duì)語音訓(xùn)練數(shù)據(jù)的大小、語音識(shí)別系統(tǒng)的識(shí)別率和靈活性有很大影響。(3)語義理解:計(jì)算機(jī)對(duì)語音識(shí)別結(jié)果的語法和語義進(jìn)行分析。理解語言的含義,以便做出相應(yīng)的反應(yīng)。它通常是通過語言模型來實(shí)現(xiàn)的。語音識(shí)別技術(shù)的應(yīng)用:語音識(shí)別過程實(shí)際上就是一個(gè)識(shí)別過程。就像人們?cè)诼犝Z音時(shí),不會(huì)將語音與語言的語法結(jié)構(gòu)和語義結(jié)構(gòu)分開,因?yàn)楫?dāng)語音的發(fā)音模糊時(shí),人們可以利用這些知識(shí)來指導(dǎo)理解語言的過程。對(duì)于機(jī)器來說,語音識(shí)別系統(tǒng)也需要使用這些知識(shí),但鑒于語音信號(hào)的可變性、動(dòng)態(tài)性和瞬態(tài)性,語音識(shí)別技術(shù)與人腦仍有一定差距。因此,在語音識(shí)別技術(shù)的選擇、應(yīng)用模式和系統(tǒng)開發(fā)等方面都需要專業(yè)的設(shè)計(jì)和調(diào)試,以達(dá)到良好的應(yīng)用效果。
    2021-09-27
  • 檢信智能 Allemotion OS 對(duì)語音識(shí)別的簡(jiǎn)單介紹
    語言作為人類交流的基本方式,在幾千年的歷史長(zhǎng)河中不斷傳承。近年來,隨著語音識(shí)別技術(shù)的不斷成熟,它在我們的生活中得到了廣泛的應(yīng)用,成為通過自然語言進(jìn)行人機(jī)交互的重要方式之一。語音識(shí)別技術(shù)如何讓機(jī)器“理解”人類語言?隨著計(jì)算機(jī)技術(shù)的快速發(fā)展,人們對(duì)機(jī)器的依賴已經(jīng)達(dá)到了一個(gè)非常高的水平。語音識(shí)別技術(shù)使人和機(jī)器通過自然語言進(jìn)行交互成為可能。通過語音識(shí)別控制房間照明、空調(diào)溫度和電視相關(guān)操作是很常見的。根據(jù)識(shí)別對(duì)象的不同,語音識(shí)別任務(wù)大致可以分為三類,即孤立詞識(shí)別、關(guān)鍵詞識(shí)別(或關(guān)鍵詞檢測(cè))和連續(xù)語音識(shí)別。其中,孤立詞識(shí)別的任務(wù)是識(shí)別先前已知的孤立詞,如“開放”和“封閉”。連續(xù)語音識(shí)別的任務(wù)是識(shí)別任何連續(xù)的語音,如句子或段落。連續(xù)語音流中的關(guān)鍵詞檢測(cè)針對(duì)的是連續(xù)語音,但它并不識(shí)別所有的文本,只檢測(cè)一些已知關(guān)鍵詞出現(xiàn)的位置。根據(jù)目標(biāo)說話人,語音識(shí)別技術(shù)可以分為特定人語音識(shí)別和非特定人語音識(shí)別。前者只能識(shí)別一個(gè)或幾個(gè)人的聲音,而后者可以被任何人使用。顯然,獨(dú)立于人的語音識(shí)別系統(tǒng)更符合實(shí)際需求,但比識(shí)別特定的人要困難得多。此外,根據(jù)語音設(shè)備和渠道,可分為桌面(PC)語音識(shí)別、電話語音識(shí)別和嵌入式設(shè)備(手機(jī)、PDA等)語音識(shí)別。不同的采集通道會(huì)扭曲人類發(fā)音的聲學(xué)特征,因此我們需要構(gòu)建自己的識(shí)別系統(tǒng)。語音識(shí)別應(yīng)用廣泛。常見的應(yīng)用系統(tǒng)包括:語音輸入系統(tǒng),比鍵盤輸入更符合人們的日常習(xí)慣,也更自然;語音控制系統(tǒng),即使用語音識(shí)別控制設(shè)備比手動(dòng)控制更快更方便,可應(yīng)用于工業(yè)控制、語音撥號(hào)系統(tǒng)、智能家電、聲控智能玩具等諸多領(lǐng)域。
    2021-09-24
  • Tensorboard可視化:基于LeNet5進(jìn)行面部表情分類
    面部表情分類面部表情是面部肌肉的一個(gè)或多個(gè)動(dòng)作或狀態(tài)的結(jié)果。這些運(yùn)動(dòng)表達(dá)了個(gè)體對(duì)觀察者的情緒狀態(tài)。面部表情是非語言交際的一種形式。它是表達(dá)人類之間的社會(huì)信息的主要手段,不過也發(fā)生在大多數(shù)其他哺乳動(dòng)物和其他一些動(dòng)物物種中。人類的面部表情至少有21種,除了常見的高興、吃驚、悲傷、憤怒、厭惡和恐懼6種,還有驚喜(高興+吃驚)、悲憤(悲傷+憤怒)等15種可被區(qū)分的復(fù)合表情。面部表情識(shí)別技術(shù)主要的應(yīng)用領(lǐng)域包括人機(jī)交互、智能控制、安全、醫(yī)療、通信等領(lǐng)域。網(wǎng)絡(luò)架構(gòu)LeNet-5出自論文Gradient-Based Learning Applied to Document Recognition,是一種用于手寫體字符識(shí)別的非常高效的卷積神經(jīng)網(wǎng)絡(luò)。LeNet5的網(wǎng)絡(luò)架構(gòu)如下:但是因?yàn)槲覀円龅氖敲娌勘砬榉诸?,而且CK+數(shù)據(jù)集樣本大小是48*48,因此需要對(duì)LeNet5網(wǎng)絡(luò)進(jìn)行微調(diào)。網(wǎng)絡(luò)架構(gòu)如下: 網(wǎng)絡(luò)結(jié)構(gòu)如下:計(jì)算圖如下:代碼實(shí)現(xiàn)預(yù)處理數(shù)據(jù)集加載,并進(jìn)行預(yù)處理,同時(shí)將測(cè)試集的前225張樣本拼接成15張*15張的大圖片,用于Tensorboard可視化。%matplotlib inlineimport matplotlib.pyplot as pltimport osimport cv2import numpy as npfrom tensorflow import name_scope as namespacefrom tensorflow.contrib.tensorboard.plugins import projectorNUM_PIC_SHOW=225base_filedir='D:/CV/datasets/facial_exp/CK+'dict_str2int={'anger':0,'contempt':1,'disgust':2,'fear':3,'happy':4,'sadness':5,'surprise':6}labels=[]data=[]#讀取圖片并將其保存至datafor expdir in os.listdir(base_filedir): base_expdir=os.path.join(base_filedir,expdir) for name in os.listdir(base_expdir): labels.append(dict_str2int[expdir]) path=os.path.join(base_expdir,name) path=path.replace('\\','/') #將\替換為/ img = cv2.imread(path,0) data.append(img)data=np.array(data)labels=np.array(labels)#將data打亂permutation = np.random.permutation(data.shape[0])data = data[permutation,:,:]labels = labels[permutation]#取前225個(gè)圖片拼成一張大圖片,用于tensorboard可視化img_set=data[:NUM_PIC_SHOW]#前225的數(shù)據(jù)用于顯示label_set=labels[:NUM_PIC_SHOW]big_pic=Noneindex=0for row in range(15): row_vector=img_set[index] index+=1 for col in range(1,15): img=img_set[index] row_vector=np.hstack([row_vector,img]) index+=1 if(row==0): big_pic=row_vector else: big_pic=np.vstack([big_pic,row_vector])plt.imshow(big_pic, cmap='gray')plt.show()#寫入大圖片cv2.imwrite(D:/Jupyter/TensorflowLearning/facial_expression_cnn_projector/data/faces.png,big_pic)#轉(zhuǎn)換數(shù)據(jù)格式和形狀data=data.reshape(-1,48*48).astype('float32')/255.0labels=labels.astype('float32')#0.3的比例測(cè)試scale=0.3test_data=data[:int(scale*data.shape[0])]test_labels=labels[:int(scale*data.shape[0])]train_data=data[int(scale*data.shape[0]):]train_labels=labels[int(scale*data.shape[0]):]print(train_data.shape)print(train_labels.shape)print(test_data.shape)print(test_labels.shape)#將標(biāo)簽one-hottrain_labels_onehot=np.zeros((train_labels.shape[0],7))test_labels_onehot=np.zeros((test_labels.shape[0],7))for i,label in enumerate(train_labels): train_labels_onehot[i,int(label)]=1for i,label in enumerate(test_labels): test_labels_onehot[i,int(label)]=1print(train_labels_onehot.shape)print(test_labels_onehot.shape)2.定義前向網(wǎng)絡(luò)import tensorflow as tfIMAGE_SIZE=48 #圖片大小NUM_CHANNELS=1 #圖片通道CONV1_SIZE=5CONV1_KERNEL_NUM=32CONV2_SIZE=5CONV2_KERNEL_NUM=64FC_SIZE=512 #隱層大小OUTPUT_NODE=7 #輸出大小#參數(shù)概要,用于tensorboard實(shí)時(shí)查看訓(xùn)練過程def variable_summaries(var): with namespace('summaries'): mean=tf.reduce_mean(var) tf.summary.scalar('mean',mean) #平均值 with namespace('stddev'): stddev=tf.sqrt(tf.reduce_mean(tf.square(var-mean))) tf.summary.scalar('stddev',stddev) #標(biāo)準(zhǔn)差 tf.summary.scalar('max',tf.reduce_max(var))#最大值 tf.summary.scalar('min',tf.reduce_min(var))#最小值 tf.summary.histogram('histogram',var)#直方圖#獲取權(quán)重def get_weight(shape,regularizer,name=None): w=tf.Variable(tf.truncated_normal(shape,stddev=0.1),name=name) #variable_summaries(w) if(regularizer!=None): tf.add_to_collection('losses',tf.contrib.layers.l2_regularizer(regularizer)(w)) return w#獲取偏置def get_bias(shape,name=None): b=tf.Variable(tf.zeros(shape),name=name) #variable_summaries(b) return b #定義前向網(wǎng)絡(luò)def forward(x,train,regularizer): with tf.name_scope('layer'): #把輸入reshape with namespace('reshape_input'): x_reshaped=tf.reshape(x,[-1,IMAGE_SIZE,IMAGE_SIZE,NUM_CHANNELS]) with tf.name_scope('conv1'): #定義兩個(gè)卷積層 conv1_w=get_weight([CONV1_SIZE,CONV1_SIZE,NUM_CHANNELS,CONV1_KERNEL_NUM],regularizer=regularizer,name='conv1_w') conv1_b=get_bias([CONV1_KERNEL_NUM],name='conv1_b') conv1=tf.nn.conv2d(x_reshaped,conv1_w,strides=[1,1,1,1],padding='SAME') relu1=tf.nn.relu(tf.nn.bias_add(conv1,conv1_b)) pool1=tf.nn.max_pool(relu1,ksize=[1,2,2,1],strides=[1,2,2,1],padding='SAME') with tf.name_scope('conv2'): conv2_w=get_weight([CONV2_SIZE,CONV2_SIZE,CONV1_KERNEL_NUM,CONV2_KERNEL_NUM],regularizer=regularizer,name='conv2_w') conv2_b=get_bias([CONV2_KERNEL_NUM],name='conv2_b') conv2=tf.nn.conv2d(pool1,conv2_w,strides=[1,1,1,1],padding='SAME') relu2=tf.nn.relu(tf.nn.bias_add(conv2,conv2_b)) #對(duì)卷機(jī)后的輸出添加偏置,并通過relu完成非線性激活 pool2=tf.nn.max_pool(relu2,ksize=[1,2,2,1],strides=[1,2,2,1],padding='SAME') with tf.name_scope('flatten'): #定義reshape層 pool_shape=pool2.get_shape().as_list() #獲得張量的維度并轉(zhuǎn)換為列表 nodes=pool_shape[1]*pool_shape[2]*pool_shape[3] #[0]為batch值,[1][2][3]分別為長(zhǎng)寬和深度 #print(type(pool2)) reshaped=tf.reshape(pool2,[-1,nodes]) with tf.name_scope('fc1'): #定義兩層全連接層 fc1_w=get_weight([nodes,FC_SIZE],regularizer,name='fc1_w') fc1_b=get_bias([FC_SIZE],name='fc1_b') fc1=tf.nn.relu(tf.matmul(reshaped,fc1_w)+fc1_b) if(train): fc1=tf.nn.dropout(fc1,0.5) with tf.name_scope('fc2'): fc2_w=get_weight([FC_SIZE,OUTPUT_NODE],regularizer,name='fc2_w') fc2_b=get_bias([OUTPUT_NODE],name='fc2_b') y=tf.matmul(fc1,fc2_w)+fc2_b return y3.定義反向傳播 ,可視化設(shè)置,并進(jìn)行訓(xùn)練,BATCH_SIZE=100 #每次樣本數(shù)LEARNING_RATE_BASE=0.005 #基本學(xué)習(xí)率LEARNING_RATE_DECAY=0.99 #學(xué)習(xí)率衰減率REGULARIZER=0.0001 #正則化系數(shù)STEPS=2500 #訓(xùn)練次數(shù)MOVING_AVERAGE_DECAY=0.99 #滑動(dòng)平均衰減系數(shù)SAVE_PATH='.\\facial_expression_cnn_projector\\' #參數(shù)保存路徑data_len=train_data.shape[0]#將拼接為big_pic的測(cè)試樣本保存至標(biāo)量,用于訓(xùn)練過程可視化pic_stack=tf.stack(test_data[:NUM_PIC_SHOW]) #stack拼接圖片張量embedding=tf.Variable(pic_stack,trainable=False,name='embedding')if(tf.gfile.Exists(os.path.join(SAVE_PATH,'projector'))==False): tf.gfile.MkDir(os.path.join(SAVE_PATH,'projector'))#創(chuàng)建metadata文件,存放可視化圖片的labelif(tf.gfile.Exists(os.path.join(SAVE_PATH,'projector','metadata.tsv'))==True): tf.gfile.DeleteRecursively(os.path.join(SAVE_PATH,'projector')) tf.gfile.MkDir(os.path.join(SAVE_PATH,'projector'))#將可視化圖片的標(biāo)簽寫入with open(os.path.join(SAVE_PATH,'projector','metadata.tsv'),'w') as f: for i in range(NUM_PIC_SHOW): f.write(str(label_set[i])+'\n')with tf.Session() as sess: with tf.name_scope('input'): #x=tf.placeholder(tf.float32,[BATCH_SIZE,IMAGE_SIZE,IMAGE_SIZE,NUM_CHANNELS],name='x_input') x=tf.placeholder(tf.float32,[None,IMAGE_SIZE*IMAGE_SIZE*NUM_CHANNELS],name='x_input') y_=tf.placeholder(tf.float32,[None,OUTPUT_NODE],name='y_input') #reshape可視化圖片 with namespace('input_reshape'): image_shaped_input=tf.reshape(x,[-1,IMAGE_SIZE,IMAGE_SIZE,1]) #把輸入reshape tf.summary.image('input',image_shaped_input,7) #添加到tensorboard中顯示 y=forward(x,True,REGULARIZER) global_step=tf.Variable(0,trainable=False) with namespace('loss'): #softmax并計(jì)算交叉熵 ce=tf.nn.sparse_softmax_cross_entropy_with_logits(logits=y,labels=tf.argmax(y_,1)) cem=tf.reduce_mean(ce) #求每個(gè)樣本的交叉熵 loss=cem+tf.add_n(tf.get_collection('losses')) tf.summary.scalar('loss',loss) #loss只有一個(gè)值,就直接輸出 learning_rate=tf.train.exponential_decay( LEARNING_RATE_BASE, global_step, data_len/BATCH_SIZE, LEARNING_RATE_DECAY, staircase=True ) with namespace('train'): train_step=tf.train.GradientDescentOptimizer(learning_rate).minimize(loss,global_step=global_step) ema=tf.train.ExponentialMovingAverage(MOVING_AVERAGE_DECAY,global_step) ema_op=ema.apply(tf.trainable_variables()) with namespace('accuracy'): correct_prediction=tf.equal(tf.argmax(y,1),tf.argmax(y_,1)) accuracy=tf.reduce_mean(tf.cast(correct_prediction,tf.float32)) tf.summary.scalar('accuracy',accuracy) with tf.control_dependencies([train_step,ema_op]): train_op=tf.no_op(name='train') init_op=tf.global_variables_initializer() sess.run(init_op) #合并所有的summary merged=tf.summary.merge_all() #寫入圖結(jié)構(gòu) writer=tf.summary.FileWriter(os.path.join(SAVE_PATH,'projector'),sess.graph) saver=tf.train.Saver() #保存網(wǎng)絡(luò)的模型 #配置可視化 config=projector.ProjectorConfig() #tensorboard配置對(duì)象 embed=config.embeddings.add() #增加一項(xiàng) embed.tensor_name=embedding.name #指定可視化的變量 embed.metadata_path='D:/Jupyter/TensorflowLearning/facial_expression_cnn_projector/projector/metadata.tsv' #路徑 embed.sprite.image_path='D:/Jupyter/TensorflowLearning/facial_expression_cnn_projector/data/faces.png' embed.sprite.single_image_dim.extend([IMAGE_SIZE,IMAGE_SIZE])#可視化圖片大小 projector.visualize_embeddings(writer,config) #斷點(diǎn)續(xù)訓(xùn) #ckpt=tf.train.get_checkpoint_state(MODEL_SAVE_PATH) #if(ckpt and ckpt.model_checkpoint_path): # saver.restore(sess,ckpt.model_checkpoint_path) for i in range(STEPS): run_option=tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE) run_metadata=tf.RunMetadata() start=(i*BATCH_SIZE)%(data_len-BATCH_SIZE) end=start+BATCH_SIZE summary,_,loss_value,step=sess.run([merged,train_op,loss,global_step], feed_dict={x:train_data[start:end],y_:train_labels_onehot[start:end]}, options=run_option, run_metadata=run_metadata) writer.add_run_metadata(run_metadata,'step%03d'%i) writer.add_summary(summary,i)#寫summary和i到文件 if(i%100==0): acc=sess.run(accuracy,feed_dict={x:test_data,y_:test_labels_onehot}) print('%d %g'%(step,loss_value)) print('acc:%f'%(acc)) saver.save(sess,os.path.join(SAVE_PATH,'projector','model'),global_step=global_step) writer.close()可視化訓(xùn)練過程執(zhí)行上面的代碼,打開tensorboard,可以看到訓(xùn)練精度和交叉熵?fù)p失如下:由于只有六百多的訓(xùn)練樣本,故得到曲線抖動(dòng)很大,訓(xùn)練精度大概在百分之八九十多浮動(dòng),測(cè)試精度在百分之七八十浮動(dòng),可見精度不高。下面使用Tensorboard將訓(xùn)練過程可視化(圖片是用Power Point錄頻然后用迅雷應(yīng)用截取gif得到的): ————————————————版權(quán)聲明:本文為CSDN博主「陳建驅(qū)」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
    2021-09-20
  • 檢信智能ALLEMOTION OS 語音情感識(shí)別——語音(聲音的預(yù)處理)
    1. 語音信號(hào)(聲音是什么)聲音是由物體振動(dòng)產(chǎn)生的聲波,是通過介質(zhì)(空氣或固體、液體)傳播并能被人或動(dòng)物聽覺器官所感知的波動(dòng)現(xiàn)象,最初發(fā)出振動(dòng)的物體叫聲源。聲音(語音消息)的基本模擬形式是一種稱為語音信號(hào)的聲學(xué)波。語音信號(hào)可以通過麥克風(fēng)轉(zhuǎn)化成電信號(hào),轉(zhuǎn)換成語音波形圖,如下圖為消息should we chase的波形圖。橫坐標(biāo)表示時(shí)間,縱坐標(biāo)表示振幅。文本should we chase按照發(fā)音可以表示成音素的形式[SH UH D - W IY - CH EY S],聲波圖中的每一段表示一個(gè)音素,在ARBAbet音素集中包含近64 = 2^6個(gè)符號(hào)。聲音作為波的一種,頻率(聲源在一秒內(nèi)振動(dòng)的次數(shù))和振幅是描述波的重要屬性,頻率的大小與我們通常所說的音高對(duì)應(yīng),而振幅影響聲音的大小。聲音可以被分解為不同頻率不同強(qiáng)度正弦波的疊加,正弦波是頻率成分最為單一的一種信號(hào),任何復(fù)雜信號(hào)都可以看成由許許多多頻率不同、大小不等的正弦波復(fù)合而成。這種變換(或分解)的過程,稱為傅立葉變換,通過這種分解我們可以把時(shí)域圖轉(zhuǎn)為頻域圖。正弦信號(hào)表達(dá)式為y=Asin(ωx+φ)y=Asin?(ωx+φ)。其中A表示振幅。ω/2πω/2π表示頻率。對(duì)于(空氣中的)聲振動(dòng)而言,振幅是聲壓與靜止壓強(qiáng)之差的最大值。其中聲壓是聲波在空氣中傳播時(shí)形成壓縮和稀疏交替變化的壓力增值。麥克風(fēng)錄制聲音的原理就是將空氣中的壓力變動(dòng)波轉(zhuǎn)化成電信號(hào)的變動(dòng)。而我們平常說的聲音強(qiáng)度(響亮程度)就是由振幅決定的,聲音強(qiáng)度的單位是分貝(dB),計(jì)算公式如下,用實(shí)測(cè)聲壓和參考聲壓之比的常用對(duì)數(shù)(常用對(duì)數(shù)lg以10為底,自然對(duì)數(shù)ln以e為底)的20倍來表示。下式中分母是參考值的聲壓,通常為20微帕,人類能聽到的最小聲壓。分貝表示功率量之比時(shí),等于功率強(qiáng)度之比的常用對(duì)數(shù)的10倍。分貝表示場(chǎng)量之比時(shí),等于場(chǎng)強(qiáng)幅值之比的常用對(duì)數(shù)的20倍。語音鏈(聲音是怎么發(fā)出的)從語音信號(hào)的產(chǎn)生到感知的過程稱為語音鏈,如下圖所示:2 下面是語音信號(hào)產(chǎn)生的四個(gè)步驟:文本:消息以某種形式出現(xiàn)在說話者的大腦中,消息攜帶的信息可認(rèn)為有著不同的表示形式,例如最初可能以英語文本的形式表示。假設(shè)書面語有32個(gè)符號(hào),也就是2^5,用5個(gè)bit表示一個(gè)符號(hào)。正常的平均說話速率為15個(gè)符號(hào)每秒。上圖例子中有15個(gè)字母“should we chase”,持續(xù)了0.6秒,信息流的速率為15x5/0.6 = 125 bps。音素:為了說出這條消息,說話者隱式地將文本轉(zhuǎn)換成對(duì)應(yīng)口語形式的聲音序列的符號(hào)表示,即文本符號(hào)轉(zhuǎn)成音素符號(hào),音素符號(hào)用來描述口語形式消息的基本聲音及聲音發(fā)生的方式(即語速和語調(diào))。ARBAbet音素集中包含近64 = 2^6個(gè)符號(hào),用6個(gè)bit表示一個(gè)音素,上圖例子中有8個(gè)音素,持續(xù)了0.6秒,信息流的速率為8x6/0.6 = 80 bps,考慮描述信號(hào)韻律特征的額外信息(比如段長(zhǎng),音高,響度),文本信息編碼成語音信號(hào)后,總信息速率需要再加上100bps。發(fā)音:神經(jīng)肌肉系統(tǒng)以一種與產(chǎn)生口語形式消息及其語調(diào)相一致的方式,移動(dòng)舌頭,唇,牙齒,頜,軟腭,使這些聲道發(fā)聲器官按規(guī)定的方式移動(dòng),進(jìn)而發(fā)出期望的聲音。刺激共振:聲道系統(tǒng)產(chǎn)生物理生源和恰當(dāng)?shù)臅r(shí)變聲道形狀,產(chǎn)生上圖所示的聲學(xué)波形。前兩個(gè)階段的信息表示是離散的,用一些簡(jiǎn)單假設(shè)就可以估計(jì)信息流的速率。但是后兩個(gè)階段信息是連續(xù)的,以關(guān)節(jié)運(yùn)動(dòng)的形式發(fā)出,想要度量這些連續(xù)信息,需要進(jìn)行恰當(dāng)?shù)牟蓸雍土炕@得等效的數(shù)字信號(hào),才能估計(jì)出數(shù)據(jù)的速率。事實(shí)上,因?yàn)檫B續(xù)的模擬信號(hào)容易收到噪聲的影響,抗噪能力弱,通常會(huì)轉(zhuǎn)為離散的數(shù)字信號(hào)。在第三階段,進(jìn)行采樣和量化后得到的數(shù)據(jù)率約為2000bps。在最后一個(gè)階段,數(shù)字語音波形的數(shù)據(jù)率可以從64kbps變化到700kbps。該數(shù)據(jù)是通過測(cè)量“表示語音信號(hào)時(shí)為達(dá)到想要的感知保真度”所需要的采樣率和量化計(jì)算得到的。比如,“電話質(zhì)量”的語音處理需要保證寬帶為0~4kHz,這意味著采樣率為8000個(gè)樣本每秒(根據(jù)香農(nóng)采樣定理,為了不失真地恢復(fù)模擬信號(hào),采樣頻率應(yīng)該不小于模擬信號(hào)頻譜中最高頻率的2倍),每個(gè)樣本可以量化成8比特,從而得到數(shù)據(jù)率64000bps。這種表示方式很容易聽懂,但對(duì)于大多數(shù)傾聽者來說,語音聽起來與說話者發(fā)出的原始語音會(huì)有不同。另一方面,語音波形可以表示成“CD質(zhì)量”,采用44100個(gè)樣本每秒的采樣率,每個(gè)樣本16比特,總數(shù)據(jù)率為705600bps,此時(shí)復(fù)原的聲學(xué)波聽起來和原始信號(hào)幾乎沒有區(qū)別?,F(xiàn)在在音樂app上下載歌曲的時(shí)一般有四種音樂品質(zhì)選擇,標(biāo)準(zhǔn)(128kbps),較高(192kbps),極高(320kbps),無損品質(zhì)。將消息從文本表示轉(zhuǎn)換成采樣的語音波形時(shí),數(shù)據(jù)率會(huì)增大10000倍。這些額外信息的一部分能夠代表說話者的一些特征比如情緒狀態(tài),說話習(xí)慣等,但主要是由簡(jiǎn)單采樣和對(duì)模擬信號(hào)進(jìn)行精細(xì)量化的低效性導(dǎo)致的。因此,處于語音信號(hào)固有的低信息速率考慮,很多數(shù)字語音處理的重點(diǎn)是用更低的數(shù)據(jù)率對(duì)語音進(jìn)行數(shù)字表示(通常希望數(shù)據(jù)率越低越好,同時(shí)保證重現(xiàn)語音信號(hào)的感知質(zhì)量滿足需要的水平)。3 語音信號(hào)中的Analog-Digital Converter,“模-數(shù)”變換(聲音是怎么保存的)預(yù)濾波(反混疊濾波):語音信號(hào)在采樣之前要進(jìn)行預(yù)濾波處理。目的有兩個(gè),一是抑制輸入信號(hào)各頻率分量中頻率超過fs/2的所有分量(fs為采樣頻率),以防止混疊干擾;二是抑制50Hz的電源工頻干擾。1.采樣:原始的語音信號(hào)是連續(xù)的模擬信號(hào),需要對(duì)語音進(jìn)行采樣,轉(zhuǎn)化為時(shí)間軸上離散的數(shù)據(jù)。采樣后,模擬信號(hào)被等間隔地取樣,這時(shí)信號(hào)在時(shí)間上就不再連續(xù)了,但在幅度上還是連續(xù)的。經(jīng)過采樣處理之后,模擬信號(hào)變成了離散時(shí)間信號(hào)。采樣頻率是指一秒鐘內(nèi)對(duì)聲音信號(hào)的采樣次數(shù),采樣頻率越高聲音的還原就越真實(shí)越自然。在當(dāng)今的主流采集卡上,采樣頻率一般共分為22.05KHz、44.1KHz、48KHz三個(gè)等級(jí),22.05KHz只能達(dá)到FM廣播的聲音品質(zhì),44.1KHz則是理論上的CD音質(zhì)界限(人耳一般可以感覺到20-20K Hz的聲音,根據(jù)香農(nóng)采樣定理,采樣頻率應(yīng)該不小于最高頻率的兩倍,所以40KHz是能夠?qū)⑷硕犚姷穆曇暨M(jìn)行很好的還原的一個(gè)數(shù)值,于是CD公司把采樣率定為44.1KHz),48KHz則更加精確一些。對(duì)于高于48KHz的采樣頻率人耳已無法辨別出來了,所以在電腦上沒有多少使用價(jià)值。2.量化:進(jìn)行分級(jí)量化,將信號(hào)采樣的幅度劃分成幾個(gè)區(qū)段,把落在某區(qū)段的采樣到的樣品值歸成一類,并給出相應(yīng)的量化值。根據(jù)量化間隔是否均勻劃分,又分為均勻量化和非均勻量化。均勻量化的特點(diǎn)為“大信號(hào)的信噪比大,小信號(hào)的信噪比小”。缺點(diǎn)為“為了保證信噪比要求,編碼位數(shù)必須足夠大,但是這樣導(dǎo)致了信道利用率低,如果減少編碼位數(shù)又不能滿足信噪比的要求”(根據(jù)信噪比公式,編碼位數(shù)越大,信噪比越大,通信質(zhì)量越好)。通常對(duì)語音信號(hào)采用非均勻量化,基本方法是對(duì)大信號(hào)使用大的量化間隔,對(duì)小信號(hào)使用小的量化間隔。由于小信號(hào)時(shí)量化間隔變小,其相應(yīng)的量化噪聲功率也減?。ǜ鶕?jù)量化噪聲功率公式),從而使小信號(hào)時(shí)的量化信噪比增大,改善了小信號(hào)時(shí)的信噪比。量化后,信號(hào)不僅在時(shí)間上不再連續(xù),在幅度上也不連續(xù)了。經(jīng)過量化處理之后,離散時(shí)間信號(hào)變成了數(shù)字信號(hào)。3.編碼:在量化之后信號(hào)已經(jīng)變成了數(shù)字信號(hào),需要將數(shù)字信號(hào)編碼成二進(jìn)制。“CD質(zhì)量”的語音采用44100個(gè)樣本每秒的采樣率,每個(gè)樣本16比特,這個(gè)16比特就是編碼的位數(shù)。采樣,量化,編碼的過程稱為A/D轉(zhuǎn)換,如下圖所示。反過程為D/A轉(zhuǎn)換,因?yàn)锳/D之前進(jìn)行了預(yù)濾波,D/A轉(zhuǎn)換后面還需要加一個(gè)平滑濾波器。A/D轉(zhuǎn)換,D/A轉(zhuǎn)換,濾波這些功能都可以用一塊芯片來完成,在市面上能買到各種這樣的芯片。4 語音信號(hào)的預(yù)處理(聲音的預(yù)處理)語音信號(hào)的預(yù)處理一般包括預(yù)加重,分幀,加窗,端點(diǎn)檢測(cè)。預(yù)加重:求語音信號(hào)頻譜(頻譜是指時(shí)域信號(hào)在頻域下的表示方式,關(guān)于頻域和時(shí)域的理解如下圖所示),頻率越高相應(yīng)的成分越小,高頻部分的頻譜比低頻部分的難求,為此要在預(yù)處理中進(jìn)行預(yù)加重(Pre-emphasis)處理。預(yù)加重的目的是提高高頻部分,使信號(hào)的頻譜變得平坦,以便于頻譜分析或者聲道參數(shù)分析。預(yù)加重可在語音信號(hào)數(shù)字化時(shí)在反混疊濾波器之前進(jìn)行,但一般是在語音信號(hào)數(shù)字化之后。短時(shí)分析:語音信號(hào)從整體來看是隨時(shí)間變化的,是一個(gè)非平穩(wěn)過程,不能用處理平穩(wěn)信號(hào)的數(shù)字信號(hào)處理技術(shù)對(duì)其進(jìn)行分析處理。但是,由于不同的語音是由人的口腔肌肉運(yùn)動(dòng)構(gòu)成聲道某種形狀而產(chǎn)生的響應(yīng),這種運(yùn)動(dòng)對(duì)于語音頻率來說是非常緩慢的,所以從另一方面看,雖然語音信號(hào)具有時(shí)變特性,但是在一個(gè)短時(shí)間范圍內(nèi)(一般認(rèn)為在10-30ms)其特性基本保持相對(duì)穩(wěn)定,即語音具有短時(shí)平穩(wěn)性。所以任何語音信號(hào)的分析和處理必須建立在“短時(shí)”的基礎(chǔ)上,即進(jìn)行“短時(shí)分析”。分幀:為了進(jìn)行短時(shí)分析,將語音信號(hào)分為一段一段,其中每一段稱為一幀,一般取10-30ms,為了使幀與幀之間平滑過渡,保持連續(xù)性,使用交疊分段的方法,可以想成一個(gè)指針p從頭開始,截取一段頭為p,長(zhǎng)度為幀長(zhǎng)的片段,然后指針p移動(dòng),移動(dòng)的步長(zhǎng)就稱為幀移,每移動(dòng)一次都截取一段,這樣就得到很多幀。加窗:加窗就是用一定的窗函數(shù)w(n)來乘s(n),從而形成加窗語音信號(hào)sw(n)=s(n)?w(n),常用的窗函數(shù)是矩形窗和漢明窗,用矩形窗其實(shí)就是不加窗,窗函數(shù)中有個(gè)N,指的是窗口長(zhǎng)度(樣本點(diǎn)個(gè)數(shù)),對(duì)應(yīng)一幀,通常在8kHz取樣頻率下,N折中選擇為80-160(即10-20ms持續(xù)時(shí)間)。端點(diǎn)檢測(cè):從一段語音信號(hào)中準(zhǔn)確地找出語音信號(hào)的起始點(diǎn)和結(jié)束點(diǎn),它的目的是為了使有效的語音信號(hào)和無用的噪聲信號(hào)得以分離。對(duì)于一些公共的語音數(shù)據(jù)集可以不做這步操作,因?yàn)檫@些語音的內(nèi)容就是有效的語音信號(hào)(可以認(rèn)為研究人員已經(jīng)對(duì)數(shù)據(jù)做過端點(diǎn)檢測(cè))。語音信號(hào)的特征(聲音的特征)特征的選取是語音處理的關(guān)鍵問題,特征的好壞直接影響到語音處理(比如語音識(shí)別)的精度。然而在語音領(lǐng)域中,沒有一個(gè)所謂的標(biāo)準(zhǔn)特征集,不同的語音系統(tǒng)選取的特征組合不盡相同。語音的特征一般是由信號(hào)處理專家定義的,比較流行的特征是MFCC(梅爾頻率倒譜系數(shù))。5 語音情感識(shí)別算法常用的機(jī)器學(xué)習(xí)分類器:模式識(shí)別領(lǐng)域的諸多算法(傳統(tǒng))都曾用于語音情感識(shí)別的研究,比如GMM(高斯混合模型),SVM,KNN,HMM(隱馬爾可夫模型)。用LLDs(low level descriptors)和HSFs(high level statistics functions)這些手工設(shè)計(jì)特征去訓(xùn)練。聲譜圖+CRNN:最近很多人用聲譜圖加上CNN,LSTM這些深度學(xué)習(xí)模型來做。還有手工特征加聲譜圖一起作為特征放進(jìn)深度學(xué)習(xí)模型。也有人用DBN,但是不多。3.手工特征+CRNN:也有人用手工特征加CRNN做。————————————————版權(quán)聲明:本文為CSDN博主「醒了的追夢(mèng)人」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
    2021-09-20
  • 檢信智能ALLEMOTION OS推薦免費(fèi)下載的語音情感數(shù)據(jù)庫
    檢信智能ALLEMOTION OS推薦免費(fèi)下載的語音情感數(shù)據(jù)庫計(jì)算機(jī)對(duì)從傳感器采集來的信號(hào)進(jìn)行分析和處理,得出對(duì)方正處在的情感狀態(tài),這種行為叫作情感識(shí)別。目前對(duì)于情感識(shí)別有兩種方式,一種是檢測(cè)生理信號(hào)如呼吸,心律和體溫等,另一種是檢測(cè)情感行為如面部表情識(shí)別,語音情感識(shí)別和姿態(tài)識(shí)別。語音情感數(shù)據(jù)集是研究語音情感識(shí)別的重要基礎(chǔ),按照情感描述類型可將數(shù)據(jù)集分為離散情感數(shù)據(jù)庫和維度情感數(shù)據(jù)庫,前者以離散的語言標(biāo)簽(如高興,悲傷等)作為情感標(biāo)注,后者以連續(xù)的實(shí)數(shù)坐標(biāo)值表示情感。下面介紹一些離散語音情感數(shù)據(jù)集:Belfast英語情感數(shù)據(jù)庫:40位錄音者(20男20女,18-69歲),對(duì)五個(gè)段落(每個(gè)段落7-8個(gè)句子)進(jìn)行演講錄制,演講者按照五種情感傾向進(jìn)行演講:生氣(anger),悲傷(sadness),高興(happiniess),害怕(fear),中性(neutral)。柏林Emo-DB情感數(shù)據(jù)庫:德國柏林工業(yè)大學(xué)錄制,10位演員(5男5女),對(duì)10個(gè)德語語音進(jìn)行表演,包含了七種情感:生氣(anger),悲傷(sadness),高興(happiniess),害怕(fear),中性(neutral),厭惡(disgust),無聊(boredom)。共包含800句語料(10 位演員 x10 句話 x7 種情感+100 條某些語句的二次版本),后經(jīng)過篩選得到500多條,采樣率為 48kHz (后壓縮至 16kHz),16bit 量化。語料文本的選取遵從語義中性、無情感傾向的原則,且為日??谡Z化風(fēng)格,無過多的書面語修飾。語音的錄制在專業(yè)錄音室中完成,要求演員在表演某個(gè)特定情感片段前通過回憶自身真實(shí)經(jīng)歷或體驗(yàn)進(jìn)行情緒的醞釀,來增強(qiáng)情緒的真實(shí)感。FAU AIBO兒童德語情感數(shù)據(jù)庫:2009年在Interspeech會(huì)議上舉辦Emotion Challenge評(píng)比中指定的語音情感數(shù)據(jù)庫。通過兒童與索尼公司的AIBO機(jī)器狗進(jìn)行自然交互,從而進(jìn)行情感數(shù)據(jù)的采集。說話人由51名兒童組成,年齡段為10-13歲,其中30個(gè)為女性。語料庫包含9.2小時(shí)的語音,48401個(gè)單詞。采樣頻率為48kHz(后壓縮至 16kHz),16比特量化。該數(shù)據(jù)庫中情感數(shù)據(jù)的自然度高,數(shù)據(jù)量足夠大,是較為流行的一個(gè)語音情感數(shù)據(jù)庫。CASIA漢語情感數(shù)據(jù)庫:中科院自動(dòng)化所錄制,兩男兩女錄制500句不同的文本,通過演講者不同的感情演講得出,最后的語音又人工篩選,得到了大約9600條語句。分為六類情感。ACCorpus系列漢語情感數(shù)據(jù)庫:清華大學(xué)和中科院心理研究所合作錄制,相對(duì)于CASIA錄制工作者更多,代表性更強(qiáng)。包含如下 5 個(gè)相關(guān)子庫:ACCorpus_M(jìn)M 多模態(tài)、多通道的情感數(shù)據(jù)庫;ACCorpus_SR 情感語音識(shí)別數(shù)據(jù)庫;ACCorpus_SA 漢語普通話情感分析數(shù)據(jù)庫;ACCorpus_FV 人臉表情視頻數(shù)據(jù)庫;ACCorpus_FI 人臉表情圖像數(shù)據(jù)庫。以 ACCorpus_SR 為例,該子庫是由 50 位錄音人(25 男25女)對(duì) 5類情感(中性、高興、生氣、恐懼和悲傷)各自表演得到,16kHz 采樣,16bit 量化。IEMOCAP: 南加利福尼亞大學(xué)錄制的,10個(gè)演員,1男1女演繹一個(gè)session,共5個(gè)session。錄制了將近12小時(shí)的數(shù)據(jù),有視頻,語音,人臉的變動(dòng)捕捉和文本。包括即興自發(fā)的和照著稿子念的。每個(gè)utterance至少三個(gè)人評(píng)估。包括9種情感(anger,happiness,excitement,sadness,frustration,fear,surprise,other和neural)的離散標(biāo)簽,以及三個(gè)維度的維度標(biāo)簽(valence, activation and dominance)?!鏅?quán)聲明:本文為CSDN博主「醒了的追夢(mèng)人」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。原文鏈接:https://blog.csdn.net/qq_33472146/article/details/96433766
    2021-09-20
  • 檢信智能ALLEMOTION OS 語義文本情感識(shí)別原理
    首先,當(dāng)然是文本預(yù)處理輸入文本,在將輸入文本轉(zhuǎn)化成向量之前,我們需要將標(biāo)點(diǎn)符號(hào)、括號(hào)、問號(hào)等刪去,只留下字母、數(shù)字和字符, 同時(shí)將大寫字母轉(zhuǎn)化為小寫,去除停用詞。效果如下圖然后就是將文本轉(zhuǎn)化為詞向量(即漢字要轉(zhuǎn)化為計(jì)算機(jī)能識(shí)別的數(shù)字類(矩陣啥的))在將深度學(xué)習(xí)運(yùn)用于文本情感分析的過程中,我們需要考慮網(wǎng)絡(luò)模型的輸入數(shù)據(jù)的形式。在其他例子中,卷積神經(jīng)網(wǎng)絡(luò)(CNN)使用像素值作為輸入,logistic回歸使用一些可以量化的特征值作為輸入,強(qiáng)化學(xué)習(xí)模型使用獎(jiǎng)勵(lì)信號(hào)來進(jìn)行更新。通常的輸入數(shù)據(jù)是需要被標(biāo)記的標(biāo)量值。當(dāng)我們處理文本任務(wù)時(shí),可能會(huì)想到利用這樣的數(shù)據(jù)管道。但是,這樣的處理方式存在著很多問題。我們不能像點(diǎn)積或者反向傳播那樣在一個(gè)字符串上執(zhí)行普通的運(yùn)算操作。所以在這里我們不能將字符串作為輸入,而是需要將文本轉(zhuǎn)換成計(jì)算機(jī)可識(shí)別的格式,由于計(jì)算機(jī)只能識(shí)別數(shù)字,因此我們可以將文本中的每一個(gè)詞都轉(zhuǎn)化為一個(gè)向量,也稱作詞向量。詞向量是用一個(gè)向量的形式表示文本中的一個(gè)詞,通過這種轉(zhuǎn)化方式就能采用機(jī)器學(xué)習(xí)來把任何輸入量化成我們需要的數(shù)值表示,然后就可以充分利用計(jì)算機(jī)的計(jì)算能力,計(jì)算得出最終想要的結(jié)果,保證了操作的可行性。如圖所示,我們可以將上面的這段文本輸入數(shù)據(jù)轉(zhuǎn)化成一個(gè) 16*D 的輸入矩陣。我們希望創(chuàng)建這種詞向量的方式是可以表示單詞及其在上下文中意義的。例如,我們希望單詞 “l(fā)ove” 和 “adore” 這兩個(gè)詞在向量空間中是有一定的相關(guān)性的,因?yàn)樗麄兊囊馑枷嗨?,而且都在類似的上下文中使用,因此他們的空間相距距離會(huì)相對(duì)較小。而“l(fā)ove”、“adore”這兩個(gè)單詞與單詞“baseball”的意思有很大的不同,詞性也不相同,那么“l(fā)ove”、“adore”這兩個(gè)單詞的向量與單詞“baseball”的向量相距距離就會(huì)相對(duì)較大。單詞的向量表示也被稱之為詞嵌入。特征提取:為了得到這些詞嵌入,我們采用一個(gè)很著名的模型 “Word2Vec”?!癢ord2Vec”是近幾年很火的算法,它通過神經(jīng)網(wǎng)絡(luò)機(jī)器學(xué)習(xí)算法來訓(xùn)練N-gram 語言模型,并在訓(xùn)練過程中求出word所對(duì)應(yīng)的vector的方法。它是將詞表征為實(shí)數(shù)值向量的一種高效的算法模型,其利用深度學(xué)習(xí)的思想,可以通過訓(xùn)練,把對(duì)文本內(nèi)容的處理簡(jiǎn)化為 K 維向量空間中的向量運(yùn)算,而向量空間上的相似度可以用來表示文本語義上的相似。在這個(gè)模型中,每個(gè)詞的詞向量是根據(jù)上下文的語境來進(jìn)行推斷的,如果兩個(gè)詞在上下文的語境中可以被互換,那么這就表示這兩個(gè)詞的意思相似,詞性相似,那么他們的詞向量中相距距離就非常近。在自然語言中,上下文的語境對(duì)分析詞語的意義是非常重要的。簡(jiǎn)單來說,Word2Vec這個(gè)模型的作用就是從一大堆句子(以 Wikipedia 為例)中為每個(gè)獨(dú)一無二的單詞進(jìn)行建模,并且輸出一個(gè)唯一的向量,Word2Vec 模型的輸出被稱為一個(gè)嵌入矩陣。該嵌入矩陣將包含訓(xùn)練語料庫中每個(gè)不同單詞的向量。 傳統(tǒng)上,嵌入矩陣可以包含超過300萬個(gè)單詞向量。Word2Vec模型是通過對(duì)數(shù)據(jù)集中的每個(gè)句子進(jìn)行訓(xùn)練,在其上滑動(dòng)一個(gè)固定大小的窗口,并試圖預(yù)測(cè)窗口的中心詞,給出其他詞。使用損失函數(shù)和優(yōu)化程序,該模型為每個(gè)唯一字生成向量。這個(gè)訓(xùn)練過程的細(xì)節(jié)可能會(huì)變得有點(diǎn)復(fù)雜,所以我們現(xiàn)在要跳過細(xì)節(jié),但這里主要的一點(diǎn)是,任何深度學(xué)習(xí)方法對(duì)于NLP任務(wù)的輸入可能都會(huì)有單詞向量作為輸入。后面特征提取這一塊,應(yīng)該會(huì)將用word2vec提取的方式改為用doc2vec來提取,不過具體修改時(shí)間待定,得看我啥時(shí)候能將這一操作學(xué)會(huì)(哈哈噠)。Google 已經(jīng)幫助我們?cè)诖笠?guī)模數(shù)據(jù)集上訓(xùn)練出來了 Word2Vec 模型,它包括 1000 億個(gè)不同的詞,在這個(gè)模型中,谷歌能創(chuàng)建300萬個(gè)詞向量,每個(gè)向量維度為 300。在理想情況下,我們將使用這些向量來構(gòu)建模型,但是因?yàn)檫@個(gè)單詞向量矩陣太大了(3.6G),因此在此次研究中我們將使用一個(gè)更加易于管理的矩陣,該矩陣由 GloVe 進(jìn)行訓(xùn)練得到。矩陣將包含 400000 個(gè)詞向量,每個(gè)向量的維數(shù)為 50。這里有用到一些.npy文件,是通過glove已經(jīng)轉(zhuǎn)好的,存為了npy文件。我們將導(dǎo)入兩個(gè)不同的數(shù)據(jù)結(jié)構(gòu),一個(gè)是包含 400000 個(gè)單詞的 Python 列表,一個(gè)是包含所有單詞向量值的 400000*50 維的嵌入矩陣。結(jié)果對(duì)比:CNN網(wǎng)絡(luò)層數(shù)包括:卷積層,池化層,全連接層。CNN神經(jīng)網(wǎng)絡(luò)模型運(yùn)用于文本情感分析時(shí)效果不如LSTM神經(jīng)網(wǎng)絡(luò)模型效果好,經(jīng)典的CNN模型在文本情感分析正確率只有71.2%,而對(duì)經(jīng)典進(jìn)行改進(jìn)之后,增加了卷積層和池化層,CNN模型的正確率得到了提高,但正確率也是只有77.25%,仍然比不上只用了一層LSTM網(wǎng)絡(luò)的正確率高。從結(jié)果對(duì)比中我們可以知道,CNN不光可以應(yīng)用于圖像處理領(lǐng)域,也能成功有效地對(duì)文本信息進(jìn)行分析,但LSTM在解決文本情感分析的問題時(shí)效果要比CNN好。下面是一些運(yùn)行結(jié)果:訓(xùn)練數(shù)據(jù)集的結(jié)果嗯…,訓(xùn)練了800多個(gè)數(shù)據(jù),發(fā)現(xiàn)最高的時(shí)候準(zhǔn)確率在百分之七十幾,但是絕大多數(shù)穩(wěn)定在百分之五十左右,這個(gè)準(zhǔn)確度還是有點(diǎn)低的,后面加強(qiáng)學(xué)習(xí),改進(jìn)代碼,應(yīng)該可以將準(zhǔn)確度提高。(方法推薦:改改epoch可能會(huì)提高準(zhǔn)確度,模型收斂+準(zhǔn)確率)輸出詞列表的長(zhǎng)度,詞向量的維數(shù)維度的個(gè)數(shù)這個(gè)項(xiàng)目采用的數(shù)據(jù)集是IMDB數(shù)據(jù)集,這個(gè)數(shù)據(jù)集是一個(gè)關(guān)于電影評(píng)論的數(shù)據(jù)集,在這個(gè)數(shù)據(jù)集上做訓(xùn)練和測(cè)試。這個(gè)數(shù)據(jù)集包含 25000 條電影數(shù)據(jù),其中 12500 條正向數(shù)據(jù),12500 條負(fù)向數(shù)據(jù)。將其中的23000個(gè)文本評(píng)論作為訓(xùn)練集,將剩下的2000個(gè)文本評(píng)論作為測(cè)試集。下面為正面評(píng)價(jià)文本和負(fù)面評(píng)價(jià)文本示例總結(jié):將CNN與LSTM兩種神經(jīng)網(wǎng)絡(luò)模型應(yīng)用到了文本情感分析的問題當(dāng)中,使用Word2Vec模型及它的子矩陣GloVe來將文本信息進(jìn)行預(yù)處理,轉(zhuǎn)換成了詞向量及向量矩陣,使用了IMDB數(shù)據(jù)集來對(duì)模型進(jìn)行訓(xùn)練,并用TensorFlow進(jìn)行建模、訓(xùn)練。版權(quán)聲明:本文為CSDN博主「醒了的追夢(mèng)人」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
    2021-09-20