情感人工智能計劃:情感分析與狀態(tài)轉(zhuǎn)換

[User Query] -> [Sentiment Analysis] -> [Software Response Array] -> [Neutral Response] [Positive Response] -> [Automatic Query for Additional Data] [Locate Positive Data] [Activate or Skip Response] [Negative Response] -> [Automatic Query for Additional Data] [Locate Tempering Data] [Activate or Skip Response]

對用戶查詢的每個回復(fù)都由一系列句子甚至操作組成。這些額外的操作會根據(jù)情感狀態(tài)觸發(fā),代表用戶獲取額外的數(shù)據(jù),只有在認(rèn)為有利的情況下才返回給用戶。 當(dāng)然,用戶仍然可以明確要求獲得這些數(shù)據(jù),但關(guān)鍵在于讓軟件與用戶產(chǎn)生共鳴,通過積極的數(shù)據(jù)點(diǎn)為對話 “加油打氣”。

軟件情感實(shí)例:股票圖表

讓我們舉一個例子,用戶要求查看當(dāng)天的股票圖表。數(shù)據(jù)看起來令人失望。 用戶可能會說 “我對這些財務(wù)數(shù)據(jù)很不滿意 “或 “哦,太好了”。對于當(dāng)前狀態(tài),軟件可以包含三種可能的回復(fù),如下圖所示:

用戶詢問:”我對這些財務(wù)數(shù)據(jù)真的很不滿意”。 情感情緒:消極 軟件狀態(tài):已向用戶提供股票價格。 可提供的答復(fù): “請說出股票代碼” “雖然數(shù)字有所下降,但 30 天移動平均線仍處于正值范圍內(nèi)”。 “數(shù)字確實(shí)是積極的,我們是否也應(yīng)該審查一下數(shù)量?”

在上面的例子中,由于用戶在購買股票時出現(xiàn)了虧損,軟件判斷出了用戶的負(fù)面情緒。對話式用戶界面的典型反應(yīng)可能是簡單地提示用戶詢問另一個股票代碼。 不過,一旦確定了情緒,軟件就可以主動獲取股票的 30 天移動平均線,如果是正面的,就會讓用戶知道這一利好消息。 如果附加指標(biāo)是負(fù)值,軟件可以搜索另一個指標(biāo)(60 天移動平均線、成交量、YTD 漲幅等),直到找到正值指標(biāo)或搜索完畢。 同樣,如果用戶對股價表達(dá)了明顯的積極情緒,軟件或許也會主動要求查看股票成交量。

綜上所述,情感顯然在形成情緒反應(yīng)方面發(fā)揮著重要作用。讓我們來詳細(xì)了解一下。

防止對話式用戶界面中的挫敗感

在對話式用戶界面中測量情緒的首要條件是檢測特定對話中的積極或消極情緒。具體來說,我們要檢測的是人與計算機(jī)之間的對話。 在這種情況下,簡短的鍵入命令已被流暢的句子所取代。因此,用戶在與軟件對話的同時,也在為某個目標(biāo)執(zhí)行任務(wù)。

如果用戶說了一個聽不清或無效的短語,計算機(jī)通常會用一個 “包羅萬象 “的短語來回應(yīng),要求用戶重復(fù)問題或提供一個選項(xiàng)列表。這可能是不必要的,甚至?xí)鹩脩舻牟粷M。 提前發(fā)現(xiàn)用戶的挫敗感,并為用戶提供完成任務(wù)的替代方案,可能會更有優(yōu)勢。

要檢測用戶的挫敗感,我們可以利用情感分析。具體來說,我們可以嘗試測量句子中的積極程度,并在整個對話過程中跟蹤這種情緒水平。 如果水平低于某個閾值,軟件就會采取糾正措施,以友好的方式為用戶提供幫助,或者至少表示出同情。

軟件情感實(shí)例:音樂播放器 1.0

下面是一個比較傳統(tǒng)的軟件交互示例。請注意用戶是如何在電腦播放了錯誤的歌曲后表示沮喪的。然而,電腦并沒有識別出用戶的命令,只是沒有回復(fù)。

Hello, what song would you like to play? > Play a random song from Britney Spears. Playing music from Green Day. > No, I said Britney Spears. … [unrecognized phrase, no response from computer] … > Play Britney Spears. Please state the name of a song. > Play Toxic from Britney Spears. Ok, playing Toxic from Britney Spears.

在上述對話中,計算機(jī)不再回復(fù)帶負(fù)電荷的口語短語,原因很簡單,沒有一個詞與程序的任何關(guān)鍵短語相匹配。我們很幸運(yùn),在這種情況下,用戶會再次嘗試,并以不同的形式重新發(fā)出新的詢問。 對于某些用戶來說,我們可能就沒那么幸運(yùn)了,在這種情況下,用戶會直接退出軟件并放棄。計算機(jī)會識別新的短語,推進(jìn)其內(nèi)部狀態(tài)(以確定一首特定的歌曲),并要求用戶說出要播放的歌曲。

軟件情感實(shí)例:音樂播放器 2.0

試想一下,如果把對話改成這樣

Hello, what song would you like to play? > Play a random song from Britney Spears. Playing music from Green Day. > No, I said Britney Spears. I’m sorry, could you repeat the name of the song? > Toxic. Ok, playing Toxic from Britney Spears.

在上面的對話中,我們可以看到更加流暢的交互。事實(shí)上,當(dāng)用戶第一次表示沮喪時,電腦甚至表現(xiàn)出了同理心。 通過更像人類的方式做出反應(yīng),用戶會感到安心,甚至?xí)X得使用軟件更愉快。

此外,請注意計算機(jī)是如何跟蹤對話上下文的。在用戶發(fā)出播放歌曲的請求后,對話用戶界面將其上下文設(shè)置為 “播放歌曲”。 雖然播放的是錯誤的歌曲(來自 Green Day 而不是 Britney Spears),但 “播放歌曲 “的語境仍然有效。 當(dāng)用戶做出 “不,我說的是布蘭妮-斯皮爾斯 “的否定回答時,軟件就會理解用戶想要播放一首歌(這就是我們當(dāng)前的狀態(tài)),并將上下文主題從 “綠日 “更新為 “布蘭妮-斯皮爾斯”。 現(xiàn)在,計算機(jī)可以詢問是哪首歌曲,因?yàn)樗呀?jīng)知道歌手和任務(wù),用戶只需說出歌名即可。

對話式用戶界面狀態(tài)轉(zhuǎn)換

我們可以深入研究上述示例場景的狀態(tài)機(jī)轉(zhuǎn)換。軟件狀態(tài)可能如下所示:

{ sentiment: neutral, action: null, subject: null, song: null } Hello, what song would you like to play? > Play a random song from Britney Spears. { sentiment: neutral, action: playing_a_song, subject: “Green Day”, song: “random” } Playing music from Green Day. > No, I said Britney Spears. { sentiment: negative, action: playing_a_song, subject: “Britney Spears”, song: null } I am sorry, could you repeat the name of the song? > Toxic. { sentiment: neutral, action: playing_a_song, subject: “Britney Spears”, song: “Toxic” } Ok, playing Toxic from Britney Spears.

在上述狀態(tài)流程中,請注意軟件的內(nèi)部變量是如何根據(jù)情感觸發(fā)進(jìn)行轉(zhuǎn)換的。 最初,內(nèi)部狀態(tài)被設(shè)置為播放某位藝術(shù)家的歌曲。當(dāng)用戶表示對歌手的理解有誤時(通過語音識別失?。?,負(fù)面情緒就會被檢測到,并導(dǎo)致主題的轉(zhuǎn)換。 此外,歌曲值被設(shè)置為空?,F(xiàn)在軟件會要求用戶提供歌曲值,此時狀態(tài)轉(zhuǎn)換就可以完成了。

既然我們已經(jīng)了解了情感分析對于確定人與計算機(jī)之間對話的狀態(tài)有多么重要,那么讓我們來深入了解一下計算情感的細(xì)節(jié)。

用情感分析衡量積極性

很明顯,有些關(guān)鍵詞和短語會讓人產(chǎn)生消極或沮喪的情緒。如果我們能從這些短語中找到關(guān)鍵字,就能檢測到用戶的情緒變化,并做出更恰當(dāng)?shù)幕貞?yīng),幫助引導(dǎo)用戶完成任務(wù)。

測量對話情感的一種方法是通過人工智能和自然語言處理,以及機(jī)器學(xué)習(xí)和情感分析。

情感分析有多種不同的方法,每種方法的準(zhǔn)確度各不相同?;炯夹g(shù)包括簡單的關(guān)鍵詞搜索,如使用 AFINN 詞表或其他基于詞典的算法?;谌斯ぶ悄艿募夹g(shù)包括訓(xùn)練有素的情感分析,其準(zhǔn)確度往往高于非人工智能技術(shù)。

? 請注意,我們即將進(jìn)入一些細(xì)枝末節(jié)的數(shù)據(jù)科學(xué)內(nèi)容!如果你愿意,可以 直接跳到 演示!

情感分析:基于關(guān)鍵詞與機(jī)器學(xué)習(xí)

舉例說明基于關(guān)鍵詞的情感分析與人工智能機(jī)器學(xué)習(xí)模型之間的區(qū)別,我們可以在一個大型 Twitter 數(shù)據(jù)集上 進(jìn)行一些簡單的準(zhǔn)確性測試。

該數(shù)據(jù)集包含特定時間內(nèi)記錄的 160 萬條推文。通過檢測推文正文中的快樂 ?? 或悲傷 ?? 表情符號,每條推文都會被自動 評分 為具有積極或消極情緒。

下表顯示了使用不同算法進(jìn)行的情感分析準(zhǔn)確性測量結(jié)果。

算法準(zhǔn)確性
nrc *58%
Syuzhet *63%
Bing *63%
AFINN *65%
邏輯回歸67%
XGBoost67%
SVM80%

情感分析的準(zhǔn)確性很難做到恰到好處。 標(biāo)準(zhǔn)的基于關(guān)鍵字的方法由于只考慮了一系列情感化的術(shù)語,因此準(zhǔn)確率較低。此外,基于非機(jī)器學(xué)習(xí)的算法無法通過從訓(xùn)練集中學(xué)習(xí)更多特征來提高準(zhǔn)確率。 相比之下,機(jī)器學(xué)習(xí)算法能夠在更大的數(shù)據(jù)集中識別更多的特征,從而在更大的數(shù)據(jù)量中提高 準(zhǔn)確性 。

使用 AFINN 進(jìn)行情感分析

讓我們來看看 AFINN 詞表在情感分析方面的準(zhǔn)確性如何。AFINN 是一個英文單詞列表,它為不同的情感詞匯設(shè)定了 -5 到 +5 之間的分?jǐn)?shù)。這些詞語都是人工標(biāo)注的。

我們可以使用 R 來加載 Twitter 數(shù)據(jù)集,并處理一小部分?jǐn)?shù)據(jù)子集,以進(jìn)行情感分析的準(zhǔn)確性評分。

首先,我們將使用以下 R 軟件包:

packages <- c(‘syuzhet’, ‘data.table’, ‘caTools’, ‘slam’, ‘tm’, ‘SnowballC’, ‘randomForest’, ‘xgboost’) if (length(setdiff(packages, rownames(installed.packages()))) > 0) { install.packages(setdiff(packages, rownames(installed.packages())), dependencies=T) } library(syuzhet) library(data.table) library(caTools) library(tm) library(randomForest) library(xgboost)

接下來,我們可以使用以下代碼讀取 Twitter 數(shù)據(jù)集,進(jìn)行情感分析和準(zhǔn)確性測量。

data <- fread(‘training.csv’, header=F) names(data) <- c(‘sentiment’, ‘id’, ‘date’, ‘query’, ‘user’, ‘text’) data$sentiment <- as.factor(data$sentiment) set.seed(777) spl <- sample.split(data$sentiment, 0.05) mdata <- subset(data, spl == TRUE) spl <- sample.split(mdata$sentiment, 0.7) train <- subset(mdata, spl == TRUE) test <- subset(mdata, spl == FALSE) train$sentimentp <- train$sentiment == 4 test$sentimentp <- test$sentiment == 4 train$afinn <- apply(train, 1, function(row) { get_sentiment(row[“text”], method=’afinn’) }) train$positive <- train$afinn >= 0 table(train$sentimentp, train$positive) (10952 + 25244) / nrow(train)

運(yùn)行上述代碼后,我們發(fā)現(xiàn) AFINN 對 Twitter 數(shù)據(jù)集進(jìn)行情感分析的準(zhǔn)確率為 64.64%。這當(dāng)然比隨機(jī)概率要好,但還有待提高。

使用機(jī)器學(xué)習(xí)進(jìn)行情感分析

我們還可以使用機(jī)器學(xué)習(xí)人工智能方法檢查 Twitter 數(shù)據(jù)集的情感分析準(zhǔn)確性。為此,我們首先要為數(shù)據(jù)集中的術(shù)語建立一個語料庫。 這實(shí)際上就是我們的術(shù)語詞典。然后,我們刪除標(biāo)點(diǎn)符號、停止詞和數(shù)字,并使用詞干法使同一詞的變體變得常見。 最后,我們使用稀疏術(shù)語縮小字典范圍,只保留在所有文檔中出現(xiàn)頻率較高的術(shù)語。這有助于加快機(jī)器學(xué)習(xí)算法的訓(xùn)練時間。

我們的最終結(jié)果是一個文檔術(shù)語矩陣,由語料庫中每個術(shù)語的列和每個文檔的行組成。每個單元格中的值與該術(shù)語在文檔中出現(xiàn)的頻率相對應(yīng)。 文檔術(shù)語矩陣是一種有用的文本編碼方式,可用于各種自然語言處理任務(wù),如 流行話題 、 文檔分類 、 關(guān)鍵詞搜索 ,甚至 檢測黑客推文 。

下面是一個建立語料庫的例子。

corpus <- Corpus(VectorSource(train$text)) tdm <- DocumentTermMatrix(corpus, list(removePunctuation = TRUE, stopwords = TRUE, stemming = TRUE, removeNumbers = TRUE)) sparse <- removeSparseTerms(tdm, 0.9997) tdmtrain <- as.matrix(sparse) tdmtrain <- as.data.frame(tdmtrain) tdmtrain$y <- as.numeric(train$sentimentp) corpusTest <- Corpus(VectorSource(test$text)) tdmtest <- DocumentTermMatrix(corpusTest, control = list(dictionary = Terms(sparse))) tdmtest <- as.matrix(tdmtest) tdmtest <- as.data.frame(tdmtest) tdmtest$y <- as.numeric(test$sentimentp)

在上面的代碼中,你可以看到我們是如何從 Twitter 數(shù)據(jù)集創(chuàng)建文檔術(shù)語矩陣的,這實(shí)際上是將推文編碼為每個術(shù)語的數(shù)字?jǐn)?shù)組。 由于每個文檔現(xiàn)在都是一行,列數(shù)相同(每個術(shù)語一列),因此我們的數(shù)組可以很好地用于機(jī)器學(xué)習(xí)算法的處理。

我們還設(shè)置了一個測試文檔術(shù)語矩陣,它使用與訓(xùn)練集相同的單詞字典。這意味著測試數(shù)組將包含與訓(xùn)練數(shù)組相同的列數(shù),因此可用于我們創(chuàng)建的任何訓(xùn)練有素的機(jī)器學(xué)習(xí)模型。

讓我們從邏輯回歸模型開始。

邏輯回歸

對于我們首次嘗試的情感傾向分析準(zhǔn)確性,我們可以嘗試一個簡單的邏輯回歸模型。我們將把文檔術(shù)語矩陣的所有列(所有術(shù)語)傳入該算法,并根據(jù) “y “值(表示正面情感)進(jìn)行訓(xùn)練。代碼如下所示。

sentimentLog <- glm(y ~ ., data=tdmtrain, family=’binomial’) predictLog <- predict(sentimentLog, type=’response’) c <- table(train$sentimentp, predictLog >= 0.5) (c[1,1] + c[2,2]) / nrow(train) predictLog <- predict(sentimentLog, type=’response’, newdata=tdmtest) c <- table(test$sentimentp, predictLog >= 0.5) (c[1,1] + c[2,2]) / nrow(test)

在訓(xùn)練邏輯回歸模型后,我們發(fā)現(xiàn)訓(xùn)練集的準(zhǔn)確率為 76%,測試集的準(zhǔn)確率為 67%。這與 AFINN 相比,雖然進(jìn)步很小,但也是一種進(jìn)步。

XGBoost

對于下一步的情感分析準(zhǔn)確性測量,我們可以嘗試使用 XGBoost 算法。下面是代碼示例。

n <- ncol(tdmtrain) set.seed(777) t <- as.matrix(tdmtrain) t2 <- as.matrix(tdmtest) sentimentXG <- xgboost(data = t[,-n], label = t[,n], eta=0.2, nround = 5000, subsample = 0.5, colsample_bytree = 0.5, objective = “binary:logistic”) results <- predict(sentimentXG, t) c <- table(t[,n], results >= 0.5) (c[1,1] + c[2,2]) / nrow(train) results <- predict(sentimentXG, t2) c <- table(t2[,n], results >= 0.5) (c[1,1] + c[2,2]) / nrow(test)

在對模型進(jìn)行訓(xùn)練后,我們發(fā)現(xiàn)訓(xùn)練集的準(zhǔn)確率為 84%,測試集的準(zhǔn)確率為 67%。這略高于邏輯回歸模型

支持向量機(jī) (SVM)

利用支持向量機(jī)(SVM)模型,我們可以進(jìn)一步提高情感分析的準(zhǔn)確率。使用更大的訓(xùn)練數(shù)據(jù)集,在交叉驗(yàn)證集上可以達(dá)到約 82% 的準(zhǔn)確率。

通過更大的數(shù)據(jù)集和更長時間的訓(xùn)練,可以進(jìn)一步提高準(zhǔn)確率。其他技術(shù)還包括使用 遞歸神經(jīng)網(wǎng)絡(luò) 來考慮情感重要術(shù)語在句子中的位置。

編寫響應(yīng)情感的軟件

既然我們已經(jīng)解決了如何檢測對話情緒的問題,那么我們就可以開始討論幫助用戶的解決方案了。 情緒分析為我們提供了中性、積極或消極情緒的指標(biāo),可用作觸發(fā)機(jī)制,推進(jìn)對話式用戶界面或人工智能例程的內(nèi)部狀態(tài)。

我們在上面已經(jīng)看到了一些例子,說明這樣的狀態(tài)機(jī)可能是什么樣子的。讓我們試著實(shí)現(xiàn)一個!

軟件情感實(shí)例:書評 1.0

作為書評應(yīng)用程序簡單對話式用戶界面的首次嘗試,我們將實(shí)現(xiàn)一個基本的聊天機(jī)器人界面。 為了保持代碼簡潔易懂,我們將只使用少量硬編碼的關(guān)鍵字和回復(fù),聊天機(jī)器人對話式用戶界面將識別并作出回應(yīng)。

以下主題將引起回應(yīng):

hello Alice in wonderland Pemberley Bye Help

我們將在一個鍵/值對中存儲關(guān)鍵詞及其相關(guān)回復(fù),我們稱之為 “大腦”。我們只需比較用戶的文本(或語音,如果使用語音識別),即可在機(jī)器人大腦中找到任何匹配的關(guān)鍵詞。 如果發(fā)現(xiàn)匹配,機(jī)器人只需回復(fù)結(jié)果值即可。

與書評聊天 1.0

下面是使用書評對話式用戶界面 1.0 版聊天的示例會話。

> hello Hello, please say the name of a book to get a review. > how about Alice in Wonderland? The book Alice in Wonderland has a rating of 4 stars. > I love Alice in Wonderland! The book Alice in Wonderland has a rating of 4 stars. > What about Pemberley? The book Pemberley has a rating of 2 stars. > Hm, Pemberley sounds like a book I would dislike. The book Pemberley has a rating of 2 stars. > You’re not much help, pretty sad! Please say the name of a book to get a review.

請注意,在上述與聊天機(jī)器人的對話中,用戶一開始只是說 “你好 “來問候機(jī)器人。機(jī)器人會識別這個關(guān)鍵詞,因?yàn)樗c大腦中的一個硬編碼術(shù)語相匹配,并輸出相關(guān)的回復(fù)。 指導(dǎo)用戶如何與機(jī)器人互動以獲取書評。

接下來,用戶詢問《愛麗絲夢游仙境》這本書的內(nèi)容,聊天機(jī)器人會簡單明了地回答這本書的評分。接下來是最重要的部分!

當(dāng)用戶發(fā)出 “我喜歡《愛麗絲夢游仙境》!”的感嘆時,聊天機(jī)器人只是簡單地回復(fù)了這本書的評分。這是意料之中的,因?yàn)檐浖倪\(yùn)行完全符合預(yù)期。 它只是簡單地匹配一個關(guān)鍵詞并給出一個值,并沒有進(jìn)一步確定用戶的情感傾向特征。

同樣,第二個書評請求包含一個負(fù)面評價。同樣,聊天機(jī)器人沒有任何明顯的表情,只是簡單地回復(fù)了書的評分。毫無疑問,用戶對軟件感到不滿,于是說出了自己的感受并終止了應(yīng)用。

稍后,我們將把 “書評 “應(yīng)用程序升級到 2.0 版本。在那里,我們將添加情感!不過,首先讓我們快速瀏覽一下原始版本的代碼。

書評內(nèi)參 1.0

如果你好奇,第一個書評應(yīng)用程序的代碼如下所示。你可以看到大腦的請求和響應(yīng)模型是多么簡單。 我們只需存儲鍵/值對,并使用簡單的 indexOf() 命令與用戶輸入進(jìn)行匹配。雖然這款軟件可能不會贏得任何獎項(xiàng),但它卻能讓人明白,我們要實(shí)現(xiàn)的是一款簡單的對話式用戶界面應(yīng)用程序。

var brain = [ { key: “hello”, value: “Hello, please say the name of a book to get a review.” }, { key: “alice in wonderland”, value: “The book Alice in Wonderland has a rating of 4 stars.” }, { key: “pemberley”, value: “The book Pemberley has a rating of 2 stars.” }, { key: “bye”, value: “Goodbye.” }, { key: “help”, value: “Please say the name of a book to get a review.” } ]; function respond(input) { var result = “Sorry, I don’t understand.”; input = input.toLowerCase().replace(/[.,\/#!$%\^&\*;:{}=\-_`~()]/g, ”); for (var i in brain) { var response = brain[i]; if (input.indexOf(response.key.toLowerCase()) != -1) { result = response.value; break; } } return result; }

您可以在 https://jsfiddle.net/dbyzztxp/1/ 上找到該聊天機(jī)器人的完整代碼和演示。

軟件情感實(shí)例:書評 2.0

我們剛剛看到的書評應(yīng)用程序就是一個簡單的例子,它利用對話式用戶界面與用戶聊天。機(jī)器人沒有任何情緒表達(dá),只是以簡單的方式回答用戶的詢問。 由于軟件只需匹配關(guān)鍵字并做出響應(yīng),因此沒有對用戶的輸入特征或情緒傾向進(jìn)行測量。

現(xiàn)在,我們要給機(jī)器人升級,讓它擁有一些內(nèi)在情感!

與書評 2.0 對話

下面是使用書評會話用戶界面 2.0 版聊天的示例會話,其中使用了情感反應(yīng)。請注意,對話變得多么不同,甚至可以說是親密無間。

> hello Hello, please say the name of a book to get a review. > Hello, the other version of you was quite bad. Perhaps, a good book would cheer you up. Please say the name of a book to get a review. > Ok, how about Alice in Wonderland? The book Alice in Wonderland has a rating of 4 stars. > I love Alice in Wonderland! That’s great to hear that you enjoy the book. You might also like “The Annotated Alice: The Definitive Edition” by the same author, with a rating of 4.5. Would you like to hear about it? > No thanks. What about Pemberley? The book Pemberley has a rating of 2 stars. > That’s too bad. Pemberley doesn’t sound too good. Although this book has quite a low rating, you might enjoy “Mrs Darcy’s Dilemma”, by Diana Birchall, with a rating of 3.4. Would you like to hear about it? > I dislike that book too. Can you help? Retrieving book reviews can actually be quite easy! Just say the name of a book to get a review. > This is great! But, time to go. Bye. I’m glad to have helped! Please come back soon. Goodbye.

和以前一樣,用戶以 “你好 “的問候語開始與聊天機(jī)器人對話。聊天機(jī)器人檢測不到用戶的任何情緒,只是簡單地回復(fù)了一句標(biāo)準(zhǔn)問候語。到目前為止,這與我們的第一個版本沒有什么不同。

接下來,用戶對上一版本軟件的不良功能提出了意見。 具體來說,用戶在信息中再次使用了 “hello”(發(fā)起另一次問候),但同時也使用了 “bad”(這恰好是我們的機(jī)器人大腦中用于衡量情感的一個關(guān)鍵詞短語),表達(dá)了明顯的負(fù)面情緒。

聊天機(jī)器人匹配了 “hello “一詞,但它并沒有簡單地回復(fù)默認(rèn)值,而是對句子進(jìn)行了情感測量。檢測到情緒是負(fù)面的,機(jī)器人就會做出回應(yīng),提供一篇書評來幫助用戶振作起來。酷斃了

接下來,用戶要求對 “愛麗絲夢游仙境 “進(jìn)行評論。聊天機(jī)器人會再次進(jìn)行情感測量,檢測出中性回復(fù),并回復(fù)該情感的相關(guān)值。 這恰好是一個標(biāo)準(zhǔn)的中性回復(fù),與第一版應(yīng)用程序相同。不過,在聽到 4 星好評后,用戶會感嘆道:”我喜歡《愛麗絲夢游仙境》!” (就像上一個例子中的用戶一樣)。(就像上一個例子一樣)。 這就是情感真正發(fā)揮作用的地方!

對話式用戶界面中的人工智能會對用戶輸入的句子進(jìn)行情感測量。由于 “愛 “這個詞對應(yīng)的是積極情緒,因此聊天機(jī)器人會做出積極的回應(yīng)。 在這種情況下,回復(fù)是推薦同一作者的類似書籍。讓我們考慮一下這樣做的后果。

軟件中情感人工智能的真正力量

聊天機(jī)器人剛剛成功測量了用戶回復(fù)的情緒,并將其確定為積極的。這與剛剛檢索到的某本書的評論相關(guān)聯(lián)。 軟件可以推斷出用戶可能喜歡這本書(也喜歡作者),從而推薦同一作者的類似書籍。

用戶并沒有明確要求提供類似書籍。我們也沒有在網(wǎng)頁用戶界面上添加可能會分散注意力的信息,如相關(guān)書籍、類似書籍和他人已購買書籍的列表。 相反,我們專門針對用戶表達(dá)的積極情感情緒,并根據(jù)這一指標(biāo)推薦同一作者的另一本書。

通過調(diào)整用戶的情感傾向,我們可能剛剛提高了軟件的使用價值(更不用說圖書銷售了?。?。

用書評 2.0 繼續(xù)對話

您可以跟進(jìn)聊天機(jī)器人會話對話的其余部分。用戶詢問另一篇書評,這次是關(guān)于 “彭伯里 “的(就像第一個版本的例子一樣)。聊天機(jī)器人會檢測到中性情緒,并回復(fù)該書的普通評分。 不過,這次當(dāng)用戶對評論表達(dá)負(fù)面情緒時(因?yàn)檫@本書只有 2 星評論),聊天機(jī)器人就能根據(jù)檢測到的負(fù)面情緒做出相應(yīng)的回應(yīng)。

在檢測到負(fù)面情緒后,對話式用戶界面會檢索與該主題相關(guān)的負(fù)面反應(yīng),即向用戶提供由不同作者撰寫的評分較高但類似的書籍。

我們再次挖掘用戶情感的隱藏價值,利用潛在機(jī)會。 此時,用戶可能會直接退出應(yīng)用程序(負(fù)面情緒有可能會導(dǎo)致這種情況?。鴻C(jī)器人則試圖通過提供另一本書來重新確定對話的語境。 這可以提高應(yīng)用程序的用戶留存率,并通過推薦相關(guān)(和情感主題)書籍促進(jìn)圖書銷售!

在結(jié)束對話時,用戶表示他們也不喜歡推薦的書(這讓我們很失望),并向應(yīng)用程序?qū)で髱椭?。聊天機(jī)器人再次檢測到了用戶求助中的負(fù)面情緒。 機(jī)器人與用戶產(chǎn)生共鳴,試圖讓用戶的情緒變得更積極,提醒用戶檢索其他書評很容易。隨后,機(jī)器人還提供了檢索另一篇書評的說明。

書評內(nèi)幕 2.0

在我們的書評對話式用戶界面聊天機(jī)器人中加入情感元素后,我們剛剛看到了一些非常有趣的結(jié)果。讓我們看看這一切是如何實(shí)現(xiàn)的。

與第一個版本一樣,我們也有一個包含鍵/值對響應(yīng)的大腦數(shù)據(jù)庫。但這次不同的是,對于每個匹配的關(guān)鍵詞,我們都提供了三個不同的對應(yīng)值。每個值之間用情感分隔。

下面是這種簡單數(shù)據(jù)結(jié)構(gòu)的示例。

var brain = [ { key: “hello”, value: { neutral: “Hello, please say the name of a book to get a review.”, positive: “Hello, please say the name of a book to get a review.”, negative: “Perhaps, a good book would cheer you up. Please say the name of a book to get a review.” } }, { key: “alice in wonderland”, value: { neutral: “The book Alice in Wonderland has a rating of 4 stars.”, positive: “That’s great to hear that you enjoy the book. You might also like \”The Annotated Alice: The Definitive Edition\” by the same author, with a rating of 4.5. Would you like to hear about it?”, negative: “Although this book might be disappointing, you might enjoy \”The House at Pooh Corner\”, by A.A. Milne, with a rating of 4.3. Would you like to hear about it?” } } … ];

請注意,每個術(shù)語都有多個回復(fù),并根據(jù)檢測到的情緒加以區(qū)分。 雖然此示例中的響應(yīng)是針對特定書籍硬編碼的,但我們可以很容易地看到如何動態(tài)查詢 API,并將這些結(jié)果納入針對特定情感的響應(yīng)中。

主要的 respond() 方法與第一個版本幾乎完全相同,但包括了情感測量。

function respond(input) { var result = “Sorry, I don’t understand.”; input = input.toLowerCase().replace(/[.,\/#!$%\^&\*;:{}=\-_`~()]/g, ”); for (var i in brain) { var response = brain[i]; if (input.indexOf(response.key.toLowerCase()) != -1) { var sentiment = getSentiment(input); result = response.value[sentiment]; break; } } return result; }

上述方法雖然與原始版本相似,但現(xiàn)在增加了一行來確定情感。它使用得出的情感值來檢索與匹配關(guān)鍵詞相關(guān)的回復(fù)。 這樣,任何一個主題都可以找到多個潛在的答案。

計算 情感的代碼只是一個硬編碼的關(guān)鍵詞列表,其中包含了一些帶有情感色彩的術(shù)語(與前面討論過的 AFINN 情感測量模型不太一樣)。這樣做是為了保持演示的簡單性。 不過,正如我們前面所展示的,使用人工智能機(jī)器學(xué)習(xí)模型可以進(jìn)行更精確的情感計算。

您可以在 https://jsfiddle.net/z0rkyq4L/2/ 上找到該聊天機(jī)器人的完整代碼和演示。

結(jié)論

很顯然,除了簡單的關(guān)鍵詞和短語匹配之外,對話式用戶界面還有更多需要識別的地方。畢竟,在考慮用戶與軟件對話時的情感傾向時,我們剛剛看到了情感的強(qiáng)大作用。

傳統(tǒng)的對話式用戶界面會忽略情感等上下文屬性,并傾向于通過簡單的語句匹配對用戶的詢問做出簡單的回復(fù),而情感則能將聊天機(jī)器人的對話提升到一個全新的水平。

通過添加情感檢測功能,我們能夠增強(qiáng)對話式用戶界面,與用戶更緊密地結(jié)合在一起,對他們的情緒狀態(tài)感同身受,并做出相應(yīng)的反應(yīng)。 通過使用情感識別回復(fù),對話式用戶界面能夠根據(jù)用戶對主題的情感推斷推薦產(chǎn)品,從而挖掘潛在的錯失機(jī)會。

當(dāng)檢測到積極情緒時,聊天機(jī)器人會選擇特定的回復(fù)類型和產(chǎn)品推薦。同樣,負(fù)面情緒會幫助聊天機(jī)器人將對話引向其他方向,為用戶提供其他產(chǎn)品推薦和幫助。

考慮到情感分析在對話式用戶界面中的效果,我們或許可以進(jìn)一步考慮傳統(tǒng)上隱藏的屬性。 通過認(rèn)識到更多語音特征(包括情感、情緒、語調(diào)、響度、性別和其他各種指標(biāo))的重要性和機(jī)遇,我們有望在計算機(jī)與人類交互之間建立更緊密的聯(lián)系。

下載 @ GitHub

該項(xiàng)目的 源代碼 可在 GitHub 上獲取。

原文鏈接: https://www.primaryobjects.com/2016/10/24/emotional-artificial-intelligence/

上一篇:

使用人工智能編碼:開發(fā)人員的工具

下一篇:

利用機(jī)器學(xué)習(xí)進(jìn)行時尚圖像識別
#你可能也喜歡這些API文章!

我們有何不同?

API服務(wù)商零注冊

多API并行試用

數(shù)據(jù)驅(qū)動選型,提升決策效率

查看全部API→
??

熱門場景實(shí)測,選對API

#AI文本生成大模型API

對比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力

25個渠道
一鍵對比試用API 限時免費(fèi)

#AI深度推理大模型API

對比大模型API的邏輯推理準(zhǔn)確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費(fèi)