在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

金融市場中的NLP 情感分析

深度學習自然語言處理 ? 來源:深度學習自然語言處理 ? 作者:Yuki Takahashi ? 2020-11-02 16:18 ? 次閱讀

自在ImageNet上推出AlexNet以來,計算機視覺深度學習已成功應用于各種應用。相反,NLP在深層神經網絡應用方面一直落后。許多聲稱使用人工智能的應用程序通常使用某種基于規則的算法和傳統的機器學習,而不是使用深層神經網絡。

2018年,在一些NLP任務中,一種名為BERT的最先進(STOA)模型的表現超過了人類的得分。在這里,我將幾個模型應用于情緒分析任務,以了解它們在我所處的金融市場中有多大用處。代碼在jupyter notebook中,在git repo中可用//github.com/yuki678/financial-phrase-bert

介紹

NLP任務可以大致分為以下幾類。

文本分類——過濾垃圾郵件,對文檔進行分類

詞序——詞翻譯,詞性標記,命名實體識別

文本意義——主題模型,搜索,問答

seq2seq——機器翻譯、文本摘要、問答

對話系統

不同的任務需要不同的方法,在大多數情況下是多種NLP技術的組合。在開發機器人時,后端邏輯通常是基于規則的搜索引擎和排名算法,以形成自然的通信

這是有充分理由的。語言有語法和詞序,可以用基于規則的方法更好地處理,而機器學習方法可以更好地學習單詞相似性。向量化技術如word2vec、bag of word幫助模型以數學方式表達文本。最著名的例子是:

King-Man+Woman=Queen Paris-France+UK=London

第一個例子描述了性別關系,第二個例子描述了首都的概念。然而,在這些方法中,由于在任何文本中同一個詞總是由同一個向量表示,因此上下文不能被捕獲,這在許多情況下是不正確的。

循環神經網絡(RNN)結構利用輸入序列的先驗信息,處理時間序列數據,在捕捉和記憶上下文方面表現良好。LSTM是一種典型的結構,它由輸入門、輸出門和遺忘門組成,克服了RNN的梯度問題。有許多基于LSTM的改進模型,例如雙向LSTM,不僅可以從前面的單詞中捕捉上下文,而且可以從后面捕獲上下文。這些方法對于某些特定的任務是有用的,但在實際應用中卻不太適用。

2017年,我們看到了一種新的方法來解決這個問題。BERT是Google在2018年推出的一個多編碼器堆棧的掩碼語言模型,在GLUE、SQuAD和SWAG基準測試中實現了STOA,并有了很大的改進。有很多文章和博客解釋了這種架構,比如Jay Alammar的文章:http://jalammar.github.io/illustrated-bert/

我在金融行業工作,在過去的幾年里,我很難看到我們在NLP上的機器學習模型在交易系統中的生產應用方面有足夠的強勁表現。現在,基于BERT的模型正在變得成熟和易于使用,這要歸功于Huggingface的實現和許多預訓練的模型已經公開。

我的目標是看看這個NLP的最新開發是否達到了在我的領域中使用的良好水平。在這篇文章中,我比較了不同的模型,這是一個相當簡單的任務,即對金融文本的情緒分析,以此作為基線來判斷是否值得在真正的解決方案中嘗試另一個研發。

此處比較的模型有:

基于規則的詞典方法

基于Tfidf的傳統機器學習方法

作為一種循環神經網絡結構的LSTM

BERT(和ALBERT)

輸入數據

在情緒分析任務中,我采用以下兩種輸入來表示行業中的不同語言。

財經新聞標題——正式

來自Stocktwits的Tweets——非正式

我將為后者寫另一篇文章,所以這里關注前者的數據。這是一個包含更正式的金融領域特定語言的文本示例,我使用了Malo等人的FinancialPhraseBank(https://www.researchgate.net/publication/251231107_Good_Debt_or_Bad_Debt_Detecting_Semantic_Orientations_in_Economic_Texts)包括4845篇由16人手寫的標題文本,并提供同意等級。我使用了75%的同意等級和3448個文本作為訓練數據。

##輸入文本示例 positive"FinnishsteelmakerRautaruukkiOyj(Ruukki)saidonJuly7,2008thatitwona9.0mlneuro($14.1mln)contracttosupplyandinstallsteelsuperstructuresforPartihallsforbindelsenbridgeprojectinGothenburg,westernSweden." neutral"In2008,thesteelindustryaccountedfor64percentofthecargovolumestransported,whereastheenergyindustryaccountedfor28percentandotherindustriesfor8percent." negative"Theperiod-endcashandcashequivalentstotaledEUR6.5m,comparedtoEUR10.5minthepreviousyear."

請注意,所有數據都屬于來源,用戶必須遵守其版權和許可條款。

模型

下面是我比較了四款模型的性能。

A、 基于詞匯的方法

創建特定于領域的詞典是一種傳統的方法,在某些情況下,如果源代碼來自特定的個人或媒體,則這種方法簡單而強大。Loughran和McDonald情感詞列表。這個列表包含超過4k個單詞,這些單詞出現在帶有情緒標簽的財務報表上。注:此數據需要許可證才能用于商業應用。請在使用前檢查他們的網站。

##樣本 negative:ABANDON negative:ABANDONED constraining:STRICTLY

我用了2355個消極單詞和354個積極單詞。它包含單詞形式,因此不要對輸入執行詞干分析和詞干化。對于這種方法,考慮否定形式是很重要的。比如not,no,don,等等。這些詞會把否定詞的意思改為肯定的,如果前面三個詞中有否定詞,這里我簡單地把否定詞的意思轉換成肯定詞。

然后,情感得分定義如下。

tone_score=100*(pos_count—neg_count)/word_count

用默認參數訓練14個不同的分類器,然后用網格搜索交叉驗證法對隨機森林進行超參數整定。

classifiers=[] classifiers.append(("SVC",SVC(random_state=random_state))) classifiers.append(("DecisionTree",DecisionTreeClassifier(random_state=random_state))) classifiers.append(("AdaBoost",AdaBoostClassifier(DecisionTreeClassifier(random_state=random_state),random_state=random_state,learning_rate=0.1))) classifiers.append(("RandomForest",RandomForestClassifier(random_state=random_state,n_estimators=100))) classifiers.append(("ExtraTrees",ExtraTreesClassifier(random_state=random_state))) classifiers.append(("GradientBoosting",GradientBoostingClassifier(random_state=random_state))) classifiers.append(("MultipleLayerPerceptron",MLPClassifier(random_state=random_state))) classifiers.append(("KNeighboors",KNeighborsClassifier(n_neighbors=3))) classifiers.append(("LogisticRegression",LogisticRegression(random_state=random_state))) classifiers.append(("LinearDiscriminantAnalysis",LinearDiscriminantAnalysis())) classifiers.append(("GaussianNB",GaussianNB())) classifiers.append(("Perceptron",Perceptron())) classifiers.append(("LinearSVC",LinearSVC())) classifiers.append(("SGD",SGDClassifier())) cv_results=[] forclassifierinclassifiers: cv_results.append(cross_validate(classifier[1],X_train,y=Y_train,scoring=scoring,cv=kfold,n_jobs=-1))#使用隨機森林分類器 rf_clf=RandomForestClassifier() #執行網格搜索 param_grid={'n_estimators':np.linspace(1,60,10,dtype=int), 'min_samples_split':[1,3,5,10], 'min_samples_leaf':[1,2,3,5], 'max_features':[1,2,3], 'max_depth':[None], 'criterion':['gini'], 'bootstrap':[False]} model=GridSearchCV(rf_clf,param_grid=param_grid,cv=kfold,scoring=scoring,verbose=verbose,refit=refit,n_jobs=-1,return_train_score=True) model.fit(X_train,Y_train) rf_best=model.best_estimator_

B、 基于Tfidf向量的傳統機器學習

輸入被NLTK word_tokenize()標記化,然后詞干化和刪除停用詞。然后輸入到TfidfVectorizer ,通過Logistic回歸和隨機森林分類器進行分類。

###邏輯回歸 pipeline1=Pipeline([ ('vec',TfidfVectorizer(analyzer='word')), ('clf',LogisticRegression())]) pipeline1.fit(X_train,Y_train) ###隨機森林與網格搜索 pipeline2=Pipeline([ ('vec',TfidfVectorizer(analyzer='word')), ('clf',RandomForestClassifier())]) param_grid={'clf__n_estimators':[10,50,100,150,200], 'clf__min_samples_leaf':[1,2], 'clf__min_samples_split':[4,6], 'clf__max_features':['auto'] } model=GridSearchCV(pipeline2,param_grid=param_grid,cv=kfold,scoring=scoring,verbose=verbose,refit=refit,n_jobs=-1,return_train_score=True) model.fit(X_train,Y_train) tfidf_best=model.best_estimator_

C、 LSTM

由于LSTM被設計用來記憶表達上下文的長期記憶,因此使用自定義的tokenizer并且輸入是字符而不是單詞,所以不需要詞干化或輸出停用詞。輸入先到一個嵌入層,然后是兩個lstm層。為了避免過擬合,應用dropout,然后是全連接層,最后采用log softmax。

classTextClassifier(nn.Module): def__init__(self,vocab_size,embed_size,lstm_size,dense_size,output_size,lstm_layers=2,dropout=0.1): """ 初始化模型 """ super().__init__() self.vocab_size=vocab_size self.embed_size=embed_size self.lstm_size=lstm_size self.dense_size=dense_size self.output_size=output_size self.lstm_layers=lstm_layers self.dropout=dropout self.embedding=nn.Embedding(vocab_size,embed_size) self.lstm=nn.LSTM(embed_size,lstm_size,lstm_layers,dropout=dropout,batch_first=False) self.dropout=nn.Dropout(dropout) ifdense_size==0: self.fc=nn.Linear(lstm_size,output_size) else: self.fc1=nn.Linear(lstm_size,dense_size) self.fc2=nn.Linear(dense_size,output_size) self.softmax=nn.LogSoftmax(dim=1) definit_hidden(self,batch_size): """ 初始化隱藏狀態 """ weight=next(self.parameters()).data hidden=(weight.new(self.lstm_layers,batch_size,self.lstm_size).zero_(), weight.new(self.lstm_layers,batch_size,self.lstm_size).zero_()) returnhidden defforward(self,nn_input_text,hidden_state): """ 在nn_input上執行模型的前項傳播 """ batch_size=nn_input_text.size(0) nn_input_text=nn_input_text.long() embeds=self.embedding(nn_input_text) lstm_out,hidden_state=self.lstm(embeds,hidden_state) #堆疊LSTM輸出,應用dropout lstm_out=lstm_out[-1,:,:] lstm_out=self.dropout(lstm_out) #全連接層 ifself.dense_size==0: out=self.fc(lstm_out) else: dense_out=self.fc1(lstm_out) out=self.fc2(dense_out) #Softmax logps=self.softmax(out) returnlogps,hidden_state

作為替代,還嘗試了斯坦福大學的GloVe詞嵌入,這是一種無監督的學習算法,用于獲取單詞的向量表示。在這里,用6百萬個標識、40萬個詞匯和300維向量對Wikipedia和Gigawords進行了預訓練。在我們的詞匯表中,大約90%的單詞都是在這個GloVe里找到的,其余的都是隨機初始化的。

D、 BERT和ALBERT

我使用了Huggingface中的transformer實現BERT模型。現在他們提供了tokenizer和編碼器,可以生成文本id、pad掩碼和段id,可以直接在BertModel中使用,我們使用標準訓練過程。

與LSTM模型類似,BERT的輸出隨后被傳遞到dropout,全連接層,然后應用log softmax。如果沒有足夠的計算資源預算和足夠的數據,從頭開始訓練模型不是一個選擇,所以我使用了預訓練的模型并進行了微調。預訓練的模型如下所示:

BERT:bert-base-uncased

ALBERT:albert-base-v2

預訓練過的bert的訓練過程如下所示。

tokenizer=BertTokenizer.from_pretrained('bert-base-uncased',do_lower_case=True) model=BertForSequenceClassification.from_pretrained('bert-base-uncased',num_labels=3) deftrain_bert(model,tokenizer) #移動模型到GUP/CPU設備 device='cuda:0'iftorch.cuda.is_available()else'cpu' model=model.to(device) #將數據加載到SimpleDataset(自定義數據集類) train_ds=SimpleDataset(x_train,y_train) valid_ds=SimpleDataset(x_valid,y_valid) #使用DataLoader批量加載數據集中的數據 train_loader=torch.utils.data.DataLoader(train_ds,batch_size=batch_size,shuffle=True) valid_loader=torch.utils.data.DataLoader(valid_ds,batch_size=batch_size,shuffle=False) #優化器和學習率衰減 num_total_opt_steps=int(len(train_loader)*num_epochs) optimizer=AdamW_HF(model.parameters(),lr=learning_rate,correct_bias=False) scheduler=get_linear_schedule_with_warmup(optimizer,num_warmup_steps=num_total_opt_steps*warm_up_proportion,num_training_steps=num_total_opt_steps)#PyTorchscheduler #訓練 model.train() #Tokenizer參數 param_tk={ 'return_tensors':"pt", 'padding':'max_length', 'max_length':max_seq_length, 'add_special_tokens':True, 'truncation':True } #初始化 best_f1=0. early_stop=0 train_losses=[] valid_losses=[] forepochintqdm(range(num_epochs),desc="Epoch"): #print('================epoch{}==============='.format(epoch+1)) train_loss=0. fori,batchinenumerate(train_loader): #傳輸到設備 x_train_bt,y_train_bt=batch x_train_bt=tokenizer(x_train_bt,**param_tk).to(device) y_train_bt=torch.tensor(y_train_bt,dtype=torch.long).to(device) #重設梯度 optimizer.zero_grad() #前饋預測 loss,logits=model(**x_train_bt,labels=y_train_bt) #反向傳播 loss.backward() #損失 train_loss+=loss.item()/len(train_loader) #梯度剪切 torch.nn.utils.clip_grad_norm_(model.parameters(),max_grad_norm) #更新權重和學習率 optimizer.step() scheduler.step() train_losses.append(train_loss) #評估模式 model.eval() #初始化 val_loss=0. y_valid_pred=np.zeros((len(y_valid),3)) withtorch.no_grad(): fori,batchinenumerate(valid_loader): #傳輸到設備 x_valid_bt,y_valid_bt=batch x_valid_bt=tokenizer(x_valid_bt,**param_tk).to(device) y_valid_bt=torch.tensor(y_valid_bt,dtype=torch.long).to(device) loss,logits=model(**x_valid_bt,labels=y_valid_bt) val_loss+=loss.item()/len(valid_loader) valid_losses.append(val_loss) #計算指標 acc,f1=metric(y_valid,np.argmax(y_valid_pred,axis=1)) #如果改進了,保存模型。如果沒有,那就提前停止 ifbest_f1=patience: break #返回訓練模式 model.train() returnmodel

評估

首先,輸入數據以8:2分為訓練組和測試集。測試集保持不變,直到所有參數都固定下來,并且每個模型只使用一次。由于數據集不用于計算交叉集,因此驗證集不用于計算。此外,為了克服數據集不平衡和數據集較小的問題,采用分層K-Fold交叉驗證進行超參數整定。

由于輸入數據不平衡,因此評估以F1分數為基礎,同時也參考了準確性。

defmetric(y_true,y_pred): acc=accuracy_score(y_true,y_pred) f1=f1_score(y_true,y_pred,average='macro') returnacc,f1 scoring={'Accuracy':'accuracy','F1':'f1_macro'} refit='F1' kfold=StratifiedKFold(n_splits=5)

模型A和B使用網格搜索交叉驗證,而C和D的深層神經網絡模型使用自定義交叉驗證。

#分層KFold skf=StratifiedKFold(n_splits=5,shuffle=True,random_state=rand_seed) #循環 forn_fold,(train_indices,valid_indices)inenumerate(skf.split(y_train,y_train)): #模型 model=BertForSequenceClassification.from_pretrained('bert-base-uncased',num_labels=3) #輸入數據 x_train_fold=x_train[train_indices] y_train_fold=y_train[train_indices] x_valid_fold=x_train[valid_indices] y_valid_fold=y_train[valid_indices] #訓練 train_bert(model,x_train_fold,y_train_fold,x_valid_fold,y_valid_fold)

結果

基于BERT的微調模型在花費了或多或少相似的超參數調整時間之后,明顯優于其他模型。

模型A表現不佳,因為輸入過于簡化為情感得分,情感分數是判斷情緒的單一值,而隨機森林模型最終將大多數數據標記為中性。簡單的線性模型只需對情感評分應用閾值就可以獲得更好的效果,但在準確度和f1評分方面仍然很低。

我們沒有使用欠采樣/過采樣或SMOTE等方法來平衡輸入數據,因為它可以糾正這個問題,但會偏離存在不平衡的實際情況。如果可以證明為每個要解決的問題建立一個詞典的成本是合理的,這個模型的潛在改進是建立一個自定義詞典,而不是L-M詞典。

模型B比前一個模型好得多,但是它以幾乎100%的準確率和f1分數擬合了訓練集,但是沒有被泛化。我試圖降低模型的復雜度以避免過擬合,但最終在驗證集中的得分較低。平衡數據可以幫助解決這個問題或收集更多的數據。

模型C產生了與前一個模型相似的結果,但改進不大。事實上,訓練數據的數量不足以從零開始訓練神經網絡,需要訓練到多個epoch,這往往會過擬合。預訓練的GloVe并不能改善結果。對后一種模型的一個可能的改進是使用類似領域的大量文本(如10K、10Q財務報表)來訓練GloVe,而不是使用維基百科中預訓練過的模型。

模型D在交叉驗證和最終測試中的準確率和f1分數均達到90%以上。它正確地將負面文本分類為84%,而正面文本正確分類為94%,這可能是由于輸入的數量,但最好仔細觀察以進一步提高性能。這表明,由于遷移學習和語言模型,預訓練模型的微調在這個小數據集上表現良好。

結論

這個實驗展示了基于BERT的模型在我的領域中應用的潛力,以前的模型沒有產生足夠的性能。然而,結果不是確定性的,如果調整下超參數,結果可能會有所不同。

值得注意的是,在實際應用中,獲取正確的輸入數據也相當重要。沒有高質量的數據(通常被稱為“垃圾輸入,垃圾輸出”)就不能很好地訓練模型。

我下次再談這些問題。這里使用的所有代碼都可以在git repo中找到:https://github.com/yuki678/financial-phrase-bert

原文鏈接:https://towardsdatascience.com/nlp-in-the-financial-market-sentiment-analysis-9de0dda95dc

責任編輯:xj

原文標題:金融市場中的NLP——情感分析

文章出處:【微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 深度學習
    +關注

    關注

    73

    文章

    5503

    瀏覽量

    121170
  • 情感分析
    +關注

    關注

    0

    文章

    14

    瀏覽量

    5239
  • nlp
    nlp
    +關注

    關注

    1

    文章

    488

    瀏覽量

    22038

原文標題:金融市場中的NLP——情感分析

文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    基于LSTM神經網絡的情感分析方法

    情感分析是自然語言處理(NLP)領域的一項重要任務,旨在識別和提取文本的主觀信息,如情感傾向、情感
    的頭像 發表于 11-13 10:15 ?524次閱讀

    soc在人工智能的創新應用

    的應用變得越來越廣泛和深入。 1. 社交媒體分析 社交媒體平臺已經成為人們交流和分享信息的主要渠道。AI技術,特別是自然語言處理(NLP)和機器學習(ML),在分析社交媒體數據方面發揮著重要作用。 創新應用:
    的頭像 發表于 11-10 09:30 ?389次閱讀

    AI Market引領全球金融新紀元:革新技術與投資策略的結合

    2024年9月24日,AI Market正式宣布脫離其母公司ICE,成為獨立運營的金融科技平臺,這一舉動無疑為全球金融市場注入了新的活力。雖然ICE不再直接參與AI Market的日常決策與運營
    的頭像 發表于 09-27 09:47 ?223次閱讀

    nlp邏輯層次模型的特點

    NLP(自然語言處理)邏輯層次模型是一種用于理解和生成自然語言文本的計算模型。它將自然語言文本分解為不同的層次,以便于計算機更好地處理和理解。以下是對NLP邏輯層次模型特點的分析: 詞匯層次 詞匯
    的頭像 發表于 07-09 10:39 ?396次閱讀

    nlp神經語言和NLP自然語言的區別和聯系

    來改變我們的行為和情感NLP的目標是幫助人們實現自我改進,提高溝通技巧,增強領導力和解決問題的能力。 NLP的主要組成部分包括: 感知:了解我們如何接收和處理信息。 語言:研究我們如何使用語言來表達我們的思想和
    的頭像 發表于 07-09 10:35 ?779次閱讀

    nlp自然語言處理基本概念及關鍵技術

    自然語言處理(Natural Language Processing,簡稱NLP)是人工智能領域的一個重要分支,它致力于使計算機能夠理解、解釋和生成人類語言。NLP技術在機器翻譯、情感分析
    的頭像 發表于 07-09 10:32 ?611次閱讀

    nlp自然語言處理的主要任務及技術方法

    的應用,如搜索引擎、機器翻譯、語音識別、情感分析等。 NLP的主要任務 NLP的主要任務可以分為以下幾個方面: 1.1 詞法分析(Lexic
    的頭像 發表于 07-09 10:26 ?1132次閱讀

    nlp自然語言處理模型怎么做

    的進展。本文將詳細介紹NLP模型的構建過程,包括數據預處理、模型選擇、訓練與優化等方面。 數據預處理 數據預處理是NLP模型構建的第一步,其目的是將原始文本數據轉換為模型能夠處理的格式。數據預處理主要包括以下幾個步驟: 1.1 文本清洗 文本清洗是去除文本
    的頭像 發表于 07-05 09:59 ?637次閱讀

    NLP技術在人工智能領域的重要性

    在自然語言處理(Natural Language Processing, NLP)與人工智能(Artificial Intelligence, AI)的交織發展NLP技術作為連接人類語言與機器
    的頭像 發表于 07-04 16:03 ?543次閱讀

    自然語言處理技術在計算機系統的應用

    已經在許多領域展現出廣泛的應用價值,從機器翻譯、語音識別到情感分析、智能客服等,無一不體現著NLP技術的強大能力。本文將深入探討NLP技術在計算機系統
    的頭像 發表于 07-04 14:35 ?524次閱讀

    NLP模型RNN與CNN的選擇

    NLP的應用場景、工作原理、優缺點,以及在選擇時應考慮的關鍵因素,以期為讀者提供一個全面而深入的理解。
    的頭像 發表于 07-03 15:59 ?539次閱讀

    什么是自然語言處理 (NLP)

    理解和處理自然語言文本,從而實現人機交互的流暢和自然。NLP不僅關注理論框架的建立,還側重于實際技術的開發和應用,廣泛應用于法律、醫療、教育、安全、工業、金融等多個領域。
    的頭像 發表于 07-02 18:16 ?1186次閱讀

    神經網絡在預測分析的作用

    在數據驅動的時代,預測分析已經成為各行各業不可或缺的一部分。從金融市場的預測到醫療健康的診斷,再到日常生活的推薦系統,預測分析都在發揮著
    的頭像 發表于 07-01 11:53 ?722次閱讀

    名單公布!【書籍評測活動NO.35】如何用「時間序列與機器學習」解鎖未來?

    的火熱,全球金融市場金融時間序列(如黃金價格、股票、期貨等)也應用以深度學習(DL)為首的現代人工智能模型不斷進行分析和預測。 越來越多的專業和非專業公司,以及一些主要金融機構(銀行
    發表于 06-25 15:00

    NLP領域的語言偏置問題分析

    摘要進行全面的統計分析,發現不同語言背景的作者在寫作的詞匯、形態、句法和連貫性方面有明顯的差異,這表明NLP領域存在語言偏置的可能性。因此,我們提出了一系列建議,以幫助學術期刊和會議的出版社改進他們對論文作者的指南和資源,以增
    的頭像 發表于 01-03 11:00 ?440次閱讀
    <b class='flag-5'>NLP</b>領域的語言偏置問題<b class='flag-5'>分析</b>
    主站蜘蛛池模板: 免费不卡毛片| 欧美三级在线视频| 精品一区二区三区免费毛片爱| 成人女人a毛片在线看| 美女操出水| 久久99久久99精品免观看| 欧美成人精品一区二区| 偷自在线| 久色中文| 国产一卡二卡3卡4卡四卡在线视频 | 天天摸天天做天天爽| 激情五月开心网| 国产午夜精品久久久久免费视小说| 国产精品久久久久久久久齐齐| 日本久操| 国产精品久久女同磨豆腐| 亚洲成人在线免费观看| 4hc44四虎www亚洲| 一区二区不卡免费视频| 欧美日韩在线一本卡| 九九精品国产兔费观看久久| 亚洲欧美一区二区久久香蕉| xxxx欧美69免费| 亚欧乱色束缚一区二区三区| 猛操女人| free chinese 国产精品| 日本美女中出| 高清成年美女黄网站色大| 四虎国产一区二区三区| 特黄特黄一级高清免费大片| 永久免费看mv网站入口| 亚洲精品福利视频| 一级毛片一级毛片一级毛片| 夜福利视频| 亚洲精品黄色| 加勒比精品视频| 欧美一级免费在线观看| 欧美五月| 777国产精品永久免费观看| 尤物视频黄| 久久久久久夜精品精品免费|