耿 琦,張文凱,李衛(wèi)巍
(江蘇金盾檢測(cè)技術(shù)有限公司, 江蘇 南京 210042)
用戶畫(huà)像又稱用戶角色,是根據(jù)用戶在網(wǎng)絡(luò)上留下的各種個(gè)人信息而制作的由詞匯組成的畫(huà)像。作為一種描述用戶自身情況、了解用戶訴求與其思考方向的工具,用戶畫(huà)像在各種互聯(lián)網(wǎng)服務(wù)業(yè)中得到了廣泛的應(yīng)用。在實(shí)際繪制過(guò)程中,畫(huà)像者往往會(huì)以最為簡(jiǎn)潔明了與接近現(xiàn)實(shí)的語(yǔ)言將用戶的各種心理上的屬性與實(shí)際行為形成映射。作為用戶的虛擬形象,用戶畫(huà)像會(huì)根據(jù)用戶社交狀態(tài)、日常習(xí)慣以及消費(fèi)偏好等信息描繪出一個(gè)由標(biāo)簽組成的用戶形象。標(biāo)簽,是對(duì)某一類指定群體或個(gè)體其中的某種特征進(jìn)行分類概括所得的文字。用戶畫(huà)像的核心與基礎(chǔ)組成就是標(biāo)簽。通過(guò)標(biāo)簽,用戶畫(huà)像能夠?qū)τ脩舻奶卣鬟M(jìn)行具體又多樣的描述,同時(shí)又具有對(duì)指定特征的針對(duì)性,從而以此作為心理分析的一種依據(jù)。標(biāo)簽的定義需要對(duì)用戶的數(shù)據(jù)進(jìn)行分析與篩選而得到。
用戶畫(huà)像主要用于對(duì)用戶的網(wǎng)絡(luò)行為進(jìn)行心理分析。網(wǎng)絡(luò)行為是指人們直接或間接借助互聯(lián)網(wǎng)所做出的現(xiàn)實(shí)行為。用戶在進(jìn)行自己的個(gè)人網(wǎng)絡(luò)行為時(shí)會(huì)在運(yùn)行這些功能的網(wǎng)絡(luò)應(yīng)用上留下自己的使用痕跡,即行為記錄。包括購(gòu)買記錄、支付記錄、觀看記錄等。這些記錄能夠充分反映個(gè)人的起居習(xí)慣、工作習(xí)慣、娛樂(lè)習(xí)慣等個(gè)人心理的展示媒介,用戶畫(huà)像對(duì)他們的總結(jié)與分析能允許研究者進(jìn)一步對(duì)用戶的心理進(jìn)行充分的了解。
用戶畫(huà)像的關(guān)鍵就是標(biāo)簽,通過(guò)對(duì)個(gè)人形象的標(biāo)簽化處理,它可以描摹出一個(gè)用戶的信息“輪廓”,來(lái)大致了解用戶的行為、消費(fèi)習(xí)慣等可以用于分析用戶心理的重要個(gè)人信息。且易于及時(shí)修改,無(wú)須在出現(xiàn)重大變動(dòng)后重新對(duì)用戶進(jìn)行實(shí)際調(diào)查,而是在用戶數(shù)據(jù)中修改變動(dòng)后重新繪制即可。同時(shí),用戶畫(huà)像的標(biāo)簽是由用戶的海量歷史數(shù)據(jù)中分析所得的,可以較為準(zhǔn)確地反映不同的時(shí)間與空間下用戶的屬性與行為,受用戶個(gè)體的自身當(dāng)前喜惡、心情等精神狀態(tài)影響較?。ㄈ鐔?wèn)卷受此影響就較大),使得心理刻畫(huà)更為準(zhǔn)確。此外,用戶本身的標(biāo)簽“畫(huà)像”是心理刻畫(huà)的優(yōu)秀媒介,它能夠較為直觀地展示用戶的需求與行為,成功刻畫(huà)用戶心理。
同時(shí),在對(duì)個(gè)人用戶進(jìn)行心理分析時(shí),若采用傳統(tǒng)的問(wèn)卷調(diào)查等人工方式,不僅因?yàn)榧堎|(zhì)媒介的局限性而使搜集到的個(gè)人數(shù)據(jù)有限,而且由于個(gè)人對(duì)他人了解自己日常生活行為或多或少的抵觸感,被調(diào)查者往往不會(huì)對(duì)自己的個(gè)人行為進(jìn)行完全詳細(xì)且準(zhǔn)確的描述,從而使得個(gè)人心理分析出現(xiàn)一定量的偏差。而用戶畫(huà)像是對(duì)用戶自己獨(dú)自進(jìn)行的網(wǎng)絡(luò)行為進(jìn)行分析,能夠在用戶不產(chǎn)生抵觸感的情況下真實(shí)反映其心理情況,并且由于行為記錄的多渠道與多方面,網(wǎng)絡(luò)行為對(duì)個(gè)人心理情況的反饋是多樣的,因此用戶畫(huà)像的心理分析能夠更加全面且準(zhǔn)確。除此之外,用戶畫(huà)像的研究是基于計(jì)算機(jī)的,計(jì)算機(jī)的強(qiáng)大處理能力使得它進(jìn)行數(shù)據(jù)處理的效率大大提高,從而在心理分析方面具有更大優(yōu)勢(shì)。
在用戶畫(huà)像的定義與構(gòu)成方面,國(guó)外研究者D. Travis[1]提出了7個(gè)用戶畫(huà)像的基本特征: 基本性、情感性、真實(shí)性、獨(dú)特性、目標(biāo)性、數(shù)量性和應(yīng)用性,并將這7個(gè)特性的英文首字母組合后即成為“用戶畫(huà)像”這個(gè)名稱。而T. Lafouge[2]等認(rèn)為用于對(duì)用戶的特征信息進(jìn)行分析的因素主要包括兩個(gè)方面:與用戶個(gè)人相關(guān)的靜態(tài)因素(如該用戶的個(gè)人基本信息、日常行為以及習(xí)慣等不易改變的因素) 與用戶外部的動(dòng)態(tài)因素(如機(jī)進(jìn)行分析時(shí)所處的網(wǎng)絡(luò)環(huán)境、搜索的目標(biāo)等可變的因素)。國(guó)內(nèi)研究者中,曾建勛[3]提出從用戶的專業(yè)知識(shí)、興趣、工作等方面提取用戶畫(huà)像標(biāo)簽。李映坤[4]對(duì)用戶畫(huà)像的基本構(gòu)成進(jìn)行了拓展,提出了基于自然屬性、關(guān)系屬性、興趣屬性、能力屬性、行為屬性與信用屬性的用戶畫(huà)像構(gòu)建方法。劉海鷗等[5]在研究中對(duì)用戶自身的情境要素進(jìn)行了探究,將用戶畫(huà)像的構(gòu)成劃分為自然屬性、社交屬性、興趣屬性和能力屬性。
在用戶畫(huà)像的具體方法上,國(guó)外研究者Nasraoui.O等[6]提出可以利用數(shù)據(jù)挖掘技術(shù)從網(wǎng)站日志中發(fā)現(xiàn)用戶的行為模式,并采用K-Means聚類算法將用戶分成不同的集群,構(gòu)建集群的用戶畫(huà)像;而Q. Liu 等[7]通過(guò)隱含狄利克雷分布模型對(duì)用戶社交中感興趣的話題進(jìn)行分析,由此構(gòu)建融合了用戶的興趣的畫(huà)像模型。而在國(guó)內(nèi)研究者中,王洋等[8]通過(guò)廣泛研究發(fā)現(xiàn),可將用戶在互聯(lián)網(wǎng)上的訪問(wèn)記錄以及用爬蟲(chóng)獲取的數(shù)據(jù)作為用戶畫(huà)像構(gòu)建的基礎(chǔ),并通過(guò)大數(shù)據(jù)技術(shù)對(duì)用戶網(wǎng)絡(luò)行為數(shù)據(jù)進(jìn)行處理,以此構(gòu)建的用戶畫(huà)像在準(zhǔn)確度方面得到了明顯改善。
盡管目前的用戶畫(huà)像方法已經(jīng)在用戶心理分析方面取得顯著效果并被廣泛應(yīng)用于實(shí)際推薦系統(tǒng)中,這些方法仍然存在一定的缺陷:首先,這些已有的方法大多數(shù)都基于人工抽選的較為分散且不相關(guān)的特征,這些特征無(wú)法對(duì)用戶數(shù)據(jù)的相關(guān)聯(lián)信息一起進(jìn)行刻畫(huà),因此對(duì)于被畫(huà)像者的形象描述程度有限。其次,現(xiàn)有的用戶畫(huà)像方法通?;谳^簡(jiǎn)單的線性回歸或分類模型,無(wú)法在處理數(shù)據(jù)的過(guò)程中學(xué)習(xí)到更高級(jí)的特征分析,因此不能對(duì)各特征之間的關(guān)系進(jìn)行更深層次的描述。
用戶畫(huà)像雖然能夠通過(guò)標(biāo)簽較為精確地反映用戶個(gè)體的屬性與行為,但其以標(biāo)簽為基礎(chǔ)的性質(zhì)使得其只能對(duì)一個(gè)人的性格進(jìn)行碎片化處理,研究者從用戶畫(huà)像中得到的是也只能是個(gè)人心理屬性的一種概括,并不能完全從一個(gè)人的各方面描述其情感與習(xí)慣?!百N標(biāo)簽”的心理分析,在強(qiáng)調(diào)個(gè)人屬性的一方面的同時(shí),也掩蓋了此屬性的其他潛在衍生部分,忽略了更多的分析可能性。而且,用戶畫(huà)像其中包含的無(wú)關(guān)數(shù)據(jù)與冗雜數(shù)據(jù)也相對(duì)于人工方式來(lái)說(shuō)更多,從而使數(shù)據(jù)的處理變得更加復(fù)雜和充滿可變性,個(gè)人的心理分析偏差度甚至?xí)^(guò)人工分析方式。且無(wú)法收集用戶的一般現(xiàn)實(shí)社會(huì)日常行為的記錄,而一般現(xiàn)實(shí)行為對(duì)用戶更加基礎(chǔ)的心理反應(yīng)也因此被忽略,整個(gè)個(gè)體心理分析的實(shí)際程度會(huì)打折扣[9-10]。
1.1.1 目標(biāo)確定
構(gòu)建用戶畫(huà)像之前,需要確定構(gòu)建者的目的,用戶畫(huà)像服務(wù)于何種對(duì)象,以及對(duì)象的具體數(shù)目,以便選擇合適的構(gòu)建方法。用戶畫(huà)像分為個(gè)人畫(huà)像與群體畫(huà)像,由構(gòu)建對(duì)象的數(shù)目來(lái)決定。對(duì)于心理刻畫(huà)與性格確定,一般偏向選擇個(gè)人畫(huà)像,使用Python與網(wǎng)絡(luò)爬蟲(chóng)進(jìn)行實(shí)現(xiàn)。而對(duì)于商品推薦、精準(zhǔn)營(yíng)銷等商業(yè)用途,則更偏向于群體畫(huà)像,需借助大數(shù)據(jù)技術(shù)進(jìn)行數(shù)據(jù)收集與分析,再根據(jù)數(shù)據(jù)完成畫(huà)像。本文采用個(gè)人畫(huà)像進(jìn)行實(shí)驗(yàn)。
1.1.2 確定并尋找數(shù)據(jù)源
用戶畫(huà)像的來(lái)源是用戶數(shù)據(jù),而用戶數(shù)據(jù)的來(lái)源一般來(lái)自互聯(lián)網(wǎng)上的各種網(wǎng)絡(luò)應(yīng)用。不同應(yīng)用中的用戶使用記錄會(huì)反映用戶的不同屬性。因此通過(guò)多種渠道搜集用戶數(shù)據(jù)是進(jìn)行用戶畫(huà)像的前提,同時(shí)搜集到的數(shù)據(jù)與畫(huà)像目的的關(guān)聯(lián)性能夠直接反應(yīng)用戶畫(huà)像的準(zhǔn)確性。
若搜集數(shù)據(jù)的對(duì)象為個(gè)人,則不僅可以在網(wǎng)絡(luò)上獲取相關(guān)用戶數(shù)據(jù),也可以將用戶個(gè)體實(shí)際調(diào)研作為一種補(bǔ)充數(shù)據(jù)的備選方案,因其操作難度相對(duì)于大眾調(diào)研來(lái)說(shuō)降低很多。同時(shí)要?jiǎng)?wù)必注意在搜集他人私密數(shù)據(jù)時(shí)需要獲得他人許可。
1.1.3 數(shù)據(jù)分析
確定了數(shù)據(jù)源并搜集到數(shù)據(jù)后,需要對(duì)各種數(shù)據(jù)進(jìn)行分析,去掉其中相對(duì)不關(guān)聯(lián)的數(shù)據(jù)與冗雜、重復(fù)數(shù)據(jù),為后續(xù)的畫(huà)像做好準(zhǔn)備。數(shù)據(jù)的分析通常需要相應(yīng)的算法來(lái)實(shí)現(xiàn),算法需要提前確定來(lái)及時(shí)完成分析。可參考相關(guān)文獻(xiàn)與類似設(shè)計(jì)來(lái)了解算法,或?qū)ΜF(xiàn)有算法進(jìn)行一定程度上的優(yōu)化,使其更符合自己程序的目標(biāo)。用戶畫(huà)像如今一般使用的數(shù)據(jù)分析算法為K-means算法與TF-IDF算法。K-means算法一般用于對(duì)數(shù)值文本所反映的用戶屬性進(jìn)行總結(jié),而TF-IDF算法會(huì)對(duì)用戶的文本記錄進(jìn)行其中的關(guān)鍵字提取。
K-means聚類算法,又稱k均值聚類算法。它是聚類算法中的一種,因其實(shí)現(xiàn)方法較簡(jiǎn)單,且聚類效果顯著,因此在進(jìn)行數(shù)據(jù)聚類時(shí)經(jīng)常采用的算法之一。它基于數(shù)據(jù)均值來(lái)對(duì)各樣本點(diǎn)進(jìn)行聚類,K表示將數(shù)據(jù)分成k個(gè)聚類,又稱簇,means表示均值,是指取每一個(gè)簇中的數(shù)據(jù)值的均值作為該簇的中心,又稱為聚類中心或質(zhì)心,它可以視為整個(gè)簇的代表。K-means算法基于這些變量進(jìn)行聚類分析,讓簇內(nèi)的點(diǎn)盡量緊密地連接在一起,而簇間的距離要保證盡量的大。means算法的基本流程圖如圖1所示。
圖1 K-means算法流程圖
TF-IDF算法,也稱詞頻-逆文本頻率算法。是一種常用于數(shù)據(jù)信息檢索的算法,用于評(píng)估一個(gè)字或詞對(duì)于一份普通文件或語(yǔ)料庫(kù)(指經(jīng)過(guò)科學(xué)分類的電子文本庫(kù))中的一份文件的重要性。圖2為T(mén)F-IDF算法流程圖。
圖2 TF-IDF算法流程圖
1.1.4 標(biāo)簽構(gòu)建
用戶畫(huà)像的核心就是標(biāo)簽。標(biāo)簽的構(gòu)建是整個(gè)用戶畫(huà)像構(gòu)建的重中之重。根據(jù)數(shù)據(jù)分析中得到的結(jié)果形成關(guān)鍵字,而關(guān)鍵字就是標(biāo)簽的原型。對(duì)關(guān)鍵字進(jìn)行適當(dāng)?shù)奶幚砗缶蜁?huì)形成標(biāo)簽。標(biāo)簽代表了用戶畫(huà)像的主體各屬性。若標(biāo)簽較多,也可以將標(biāo)簽組成標(biāo)簽樹(shù),形成分層結(jié)構(gòu),從而對(duì)不同屬性值進(jìn)行再一次分類,使屬性分類更加詳細(xì)。同時(shí)可以制作一張標(biāo)簽表,便于對(duì)所有標(biāo)簽進(jìn)行總覽,進(jìn)行增刪改查。在用戶畫(huà)像中,標(biāo)簽表一般會(huì)存儲(chǔ)在文本文件中。
標(biāo)簽一般會(huì)采用能夠最直觀反映用戶的基本信息或內(nèi)心需求的相關(guān)詞語(yǔ),如生日,常聽(tīng)的音樂(lè),購(gòu)買的商品等。對(duì)它們的選擇傾向即是用戶畫(huà)像側(cè)重點(diǎn)的選擇。如多選擇用戶的購(gòu)買喜好和商品價(jià)格就是偏向?qū)τ脩舻馁?gòu)物心理進(jìn)行畫(huà)像,而多選擇用戶體重、健身卡辦理次數(shù)和行動(dòng)距離就是偏向?qū)τ脩舻倪\(yùn)動(dòng)心理進(jìn)行畫(huà)像。
此外,確定標(biāo)簽的權(quán)重也是在創(chuàng)建標(biāo)簽中的一個(gè)重要步驟。標(biāo)簽權(quán)重表示此標(biāo)簽對(duì)應(yīng)屬性在整個(gè)用戶屬性集中的占比,因?yàn)椴煌瑯?biāo)簽所對(duì)應(yīng)的屬性重要性不同,而不同屬性對(duì)用戶的心理反應(yīng)全面程度也是不同的。而標(biāo)簽的權(quán)重,就是對(duì)這種反映全面程度的量化表示。權(quán)重可以是不同的計(jì)算單位,由具體研究情況決定,通常情況下是標(biāo)簽或其代表關(guān)鍵字的出現(xiàn)概率,此值可由TF-IDF算法確定。畫(huà)像時(shí)可以將其附加在標(biāo)簽自身屬性上,形成映射,凸顯不同標(biāo)簽的重要性大小。而凸顯的方式也是各異,大多數(shù)選擇體現(xiàn)在標(biāo)簽字體大小上。
1.1.5 繪制畫(huà)像
在獲得所有需要的標(biāo)簽后,需要的就是將標(biāo)簽按順序填充進(jìn)用戶指定的圖片中,組成一個(gè)人形。這個(gè)人形,就是由用戶畫(huà)像構(gòu)建的用戶個(gè)體的虛擬形象,個(gè)體的大部分屬性均可以在此幅圖像上體現(xiàn)出來(lái),在之前計(jì)算出的標(biāo)簽的權(quán)重在此幅圖中會(huì)根據(jù)畫(huà)像者的需求來(lái)表示。若有需要,可以在用戶畫(huà)像旁進(jìn)行屬性的總結(jié),以顯示用戶個(gè)體的一些更加貼近現(xiàn)實(shí)生活的細(xì)節(jié)。
繪制出的用戶畫(huà)像可以充分展示用戶個(gè)體的內(nèi)心傾向、喜惡、性格等心理元素,是心理刻畫(huà)的優(yōu)秀產(chǎn)物。借助計(jì)算機(jī)的計(jì)算能力,人們可以僅僅利用自己的“歷史記錄”就能勾勒出自己或者他人的基本性格外框,為了解他人乃至以此獲得商業(yè)利益奠定了基礎(chǔ),在這個(gè)信息時(shí)代開(kāi)辟了一塊全新領(lǐng)域。
圖3 用戶畫(huà)像算法需要實(shí)現(xiàn)的主要功能
在本文中,用戶畫(huà)像算法要實(shí)現(xiàn)數(shù)據(jù)搜集、數(shù)據(jù)處理、用戶畫(huà)像繪制、用戶畫(huà)像顯示4個(gè)功能。其中數(shù)據(jù)處理功能又分為混合數(shù)據(jù)分離、文字?jǐn)?shù)據(jù)處理與數(shù)值數(shù)據(jù)處理3個(gè)子功能。算法的主要功能如圖3所示。
為了保證數(shù)據(jù)的真實(shí)、全面與可獲得性,數(shù)據(jù)搜集模塊中使用的網(wǎng)絡(luò)爬蟲(chóng)軟件為“八爪魚(yú)采集器”,通過(guò)它的自定義采集數(shù)據(jù)功能,可以搜集到較為全面的網(wǎng)絡(luò)用戶數(shù)據(jù),如淘寶購(gòu)買記錄、微博關(guān)注列表、個(gè)人音樂(lè)歌單等。而對(duì)于需要用戶登錄才能進(jìn)行數(shù)據(jù)采集的情況也能很好地進(jìn)行解決。并且搜集到的數(shù)據(jù)會(huì)作為csv文件導(dǎo)出,供用戶畫(huà)像程序使用。
數(shù)據(jù)處理部分主要完成3個(gè)工作:混合數(shù)據(jù)分離,數(shù)值文本處理和文字文本處理。通過(guò)這3個(gè)過(guò)程,可以從搜集到的數(shù)據(jù)中提取出關(guān)鍵字并加工成標(biāo)簽,是整個(gè)用戶畫(huà)像中的核心。
2.2.1 混合數(shù)據(jù)分離
在進(jìn)行數(shù)據(jù)處理時(shí),可能會(huì)出現(xiàn)數(shù)值與文字結(jié)合在一起的混合數(shù)據(jù)文本。由于用戶數(shù)據(jù)中的數(shù)值部分與文字部分分別會(huì)提取出不同性質(zhì)的關(guān)鍵詞,所以需要進(jìn)行分離。此功能只需在通過(guò)網(wǎng)絡(luò)爬蟲(chóng)獲得的文件為混合數(shù)據(jù)文件時(shí)使用。
通過(guò)網(wǎng)絡(luò)爬蟲(chóng)讀取它們的混合方式一般是作為文件中前后兩個(gè)不同的列出現(xiàn),可以在使用Python中的文字處理模塊pandas進(jìn)行csv文件的讀取后,利用loc方法再對(duì)讀取到的文件進(jìn)行逐列的讀取。而csv模塊中的writer方法可以創(chuàng)建新的csv文件并進(jìn)行輸入與輸出,將讀取到的各列按照讀取到的不同數(shù)據(jù),再通過(guò)pandas模塊的逐行輸入方法writerows分別輸入進(jìn)創(chuàng)建的新csv文件中,從而做到分離混合數(shù)據(jù)。
2.2.2 數(shù)值數(shù)據(jù)處理
在數(shù)值中提取出的關(guān)鍵詞雖然不是用戶標(biāo)簽的主要組成部分,但它們反映的用戶屬性往往更為直接且透徹,成功分析商品價(jià)格、使用次數(shù)等數(shù)值數(shù)據(jù)來(lái)得到用戶關(guān)鍵詞是用戶畫(huà)像流程的核心之一。
2.2.3 文字?jǐn)?shù)據(jù)處理
在文字中提取出的關(guān)鍵詞是用戶標(biāo)簽的主要組成部分。用戶使用、訪問(wèn)記錄等文字?jǐn)?shù)據(jù)廣泛存在于各種網(wǎng)絡(luò)應(yīng)用中,對(duì)它們的分析是一個(gè)用戶畫(huà)像繪制程序的又一個(gè)核心。本文利用TF-IDF算法來(lái)計(jì)算關(guān)鍵詞的出現(xiàn)頻率,并可以根據(jù)用戶數(shù)據(jù)中的每個(gè)詞的出現(xiàn)頻率進(jìn)行關(guān)鍵詞的提取。因此,文字?jǐn)?shù)據(jù)處理能夠提取的關(guān)鍵詞非常多,雖然步驟較少,但獲得關(guān)鍵字的速度較快。
在獲得標(biāo)簽表后,就可以進(jìn)行用戶畫(huà)像繪制工作。Python中的wordcloud詞云模塊算法是用戶畫(huà)像繪制功能的主要使用算法。它會(huì)根據(jù)用戶提供的文本和圖片自動(dòng)將文本填充進(jìn)圖片輪廓內(nèi)的空白處,形成非常直觀的用戶畫(huà)像,且可設(shè)置多種自定義參數(shù),如標(biāo)簽字體、標(biāo)簽大小、圖片輪廓顏色、生成圖片大小等,不同需求環(huán)境下的用戶畫(huà)像均可繪制。并且,在繪制完成后還可以將其保存為任何可用格式的圖片文件。將基礎(chǔ)圖片、字體、背景、畫(huà)像大小等必要參數(shù)設(shè)置完畢后就可進(jìn)行繪制。
繪制用戶畫(huà)像并以圖片文件保存后,需要進(jìn)行用戶畫(huà)像的展示??梢灾苯永肞ython的圖片處理模塊PIL進(jìn)行圖片懸浮窗口展示。用PIL模塊下的Image類中的open函數(shù)讀取圖像文件,再使用ImageTk類中的PhotoImage類形成可以被Python直接調(diào)用的圖片數(shù)據(jù),最后創(chuàng)建一個(gè)全新懸浮窗口,在其中創(chuàng)建一個(gè)標(biāo)簽控件,將其背景設(shè)置為需要展示的用戶畫(huà)像圖片,即可進(jìn)行展示,如圖4所示。
圖4 懸浮窗口示例
3.1.1 用戶畫(huà)像配置環(huán)境
操作系統(tǒng):Windows 10
編程語(yǔ)言:Python 3.7.2
開(kāi)發(fā)環(huán)境:PyCharm
網(wǎng)絡(luò)爬蟲(chóng)軟件:八爪魚(yú)采集器
3.1.2 實(shí)驗(yàn)任務(wù)
繪制用戶畫(huà)像需要對(duì)互聯(lián)網(wǎng)上搜集到的數(shù)據(jù)根據(jù)其類型進(jìn)行分類,之后分別進(jìn)行分析,并對(duì)分析結(jié)果進(jìn)行關(guān)鍵字提取。接著將關(guān)鍵字加工成為標(biāo)簽,并輸入指定文本中形成標(biāo)簽表。最后根據(jù)標(biāo)簽表進(jìn)行用戶畫(huà)像的繪制,并將其作為一般圖片文件進(jìn)行輸出。全部任務(wù)可以整合至一個(gè)用戶畫(huà)像程序中完成。
3.1.3 程序流程圖
用戶畫(huà)像的所有實(shí)現(xiàn)算法可以在一個(gè)程序中實(shí)現(xiàn),此項(xiàng)程序的核心功能是繪制個(gè)人用戶畫(huà)像。其主要運(yùn)行流程如圖5所示。
圖5 程序流程圖
3.1.4 基本窗口UI設(shè)計(jì)
對(duì)于一個(gè)用戶畫(huà)像程序,簡(jiǎn)單的操作是一個(gè)十分重要的要求。而簡(jiǎn)潔又實(shí)用的窗口UI就是實(shí)現(xiàn)這種功能的好方法。由于此用戶畫(huà)像程序的主要操作功能為文字?jǐn)?shù)據(jù)處理、數(shù)值數(shù)據(jù)處理、混合數(shù)據(jù)分離、用戶畫(huà)像繪制、用戶畫(huà)像展示這五個(gè),所以UI界面需要將這些功能在一個(gè)界面中直觀地展示出來(lái)。Python中的tkinter模塊可以進(jìn)行基本的UI設(shè)計(jì)與編寫(xiě),利用其中可以生成的標(biāo)簽、文本框和按鈕等控件來(lái)實(shí)現(xiàn)所需要的UI。
3.1.5 程序具體運(yùn)行流程
輸入需要分離的混合數(shù)據(jù)文件名,點(diǎn)擊“混合數(shù)據(jù)分離”按鈕,進(jìn)行混合數(shù)據(jù)分離工作,完成數(shù)據(jù)分離后會(huì)有提示框跳出并指出分離出的文件的名稱。
輸入需要進(jìn)行文本數(shù)據(jù)處理的文件名,點(diǎn)擊“關(guān)鍵字生成”按鈕,進(jìn)行文本數(shù)據(jù)處理,程序完成處理后會(huì)有提示框跳出。
輸入需要進(jìn)行數(shù)值數(shù)據(jù)處理的文件名和數(shù)值數(shù)據(jù)的主體名,點(diǎn)擊“kmeans聚類”按鈕。
會(huì)顯示本數(shù)值數(shù)據(jù)進(jìn)行K-means聚類適合的簇?cái)?shù)k。
重復(fù)(2)、(3)步驟,直至將所有需要進(jìn)行分析的數(shù)據(jù)文件進(jìn)行處理后,點(diǎn)擊“生成用戶畫(huà)像”按鈕,會(huì)將文件中用戶指定的肖像作為原材料進(jìn)行畫(huà)像,完成后會(huì)提示任務(wù)完成。
點(diǎn)擊“顯示用戶畫(huà)像按鈕”,顯示生成的用戶畫(huà)像,如圖6所示。
圖6 用戶指定的肖像
經(jīng)過(guò)用戶畫(huà)像的繪制與展示步驟后出現(xiàn)的圖片為用戶畫(huà)像程序的結(jié)果。它由人物輪廓與標(biāo)簽組成,能夠直接反映用戶數(shù)據(jù)的大致信息與用戶的心理情況,如圖7所示。
圖7 用戶畫(huà)像展示
3.2.1 K-means算法實(shí)驗(yàn)結(jié)果分析
K-means聚類完成后,只使用其各屬性進(jìn)行結(jié)果展示十分難以理解,與Python代碼可讀性強(qiáng)的特性不符。為了使K-means聚類分析的結(jié)果更加簡(jiǎn)單易懂,可以使用Python中運(yùn)算模塊Matplotlib下的Scatter函數(shù)來(lái)繪制散點(diǎn)圖。其繪圖方式基于數(shù)組,是數(shù)值分析結(jié)果展示的絕佳選擇。將獲取的數(shù)值文件的序號(hào)與數(shù)據(jù)本體分別作為x、y軸,并輔以不同的標(biāo)記點(diǎn)與顏色,使得數(shù)據(jù)本體一目了然。同時(shí)使用同屬M(fèi)atplotlib的plot函數(shù)進(jìn)行單獨(dú)樣本點(diǎn),在本實(shí)驗(yàn)中也就是聚類中心的添加,以凸顯聚類結(jié)果。以下將不同K-means算法聚類結(jié)果用散點(diǎn)圖表示出來(lái)(見(jiàn)圖8—10)。
圖8 k=2時(shí)數(shù)據(jù)聚類散點(diǎn)圖
圖9 k=3時(shí)數(shù)據(jù)聚類散點(diǎn)圖
由散點(diǎn)圖中的實(shí)驗(yàn)結(jié)果可以看出,k=2和k=4時(shí)的聚類效果都比k=3時(shí)效果要差,在k=2時(shí),y值處在600~700的幾個(gè)點(diǎn)無(wú)法獨(dú)立成一個(gè)簇,使得其中一個(gè)簇的成員分布過(guò)于分散。而k=4時(shí)將最大的簇中的一些樣本點(diǎn)強(qiáng)行分割成新簇,反而使聚類結(jié)果過(guò)于復(fù)雜化。
這種情況的出現(xiàn),是因?yàn)閷?duì)于K-means來(lái)說(shuō),它的算法在一些方面存在著局限性[11]。
在選定初始聚類中心時(shí),一般只能在樣本點(diǎn)中隨機(jī)選擇或者直接指定平均值,而這些值可能與理想位置相差甚遠(yuǎn),導(dǎo)致在開(kāi)始聚類時(shí)就已經(jīng)可能出現(xiàn)誤差。
由于K-means的簇?cái)?shù)k值只能自選定,缺乏有效性和可檢驗(yàn)性。
圖10 k=4時(shí)數(shù)據(jù)聚類散點(diǎn)圖
在樣本點(diǎn)中,經(jīng)常出現(xiàn)距離較近但實(shí)際上數(shù)據(jù)相關(guān)性較低,或是距離較遠(yuǎn)但數(shù)據(jù)相關(guān)性很高的多個(gè)樣本點(diǎn)。而K-means算法只是基于樣本點(diǎn)與類之間的距離進(jìn)行劃分的,無(wú)法有效辨別此兩種樣本。
上文提到的情況就是K-means算法局限性中的k值自選定問(wèn)題。為了解決這種因?yàn)椴煌琸值而導(dǎo)致的聚類分析效果差異問(wèn)題,本文采用了上文提到的最優(yōu)間距來(lái)提前衡量不同k值下K-means聚類的效果[12-15]。以搜集到的購(gòu)買商品價(jià)格記錄為例,計(jì)算出k值分別從2取到9時(shí)的最優(yōu)間距,具體見(jiàn)表1。
表1 不同k值下的最優(yōu)間距
根據(jù)多次計(jì)算,k值在超過(guò)樣本數(shù)量1/5后最優(yōu)間距幾乎不再進(jìn)行上下波動(dòng),這是因?yàn)榇剡^(guò)多,最優(yōu)間距完全是隨其趨勢(shì)變化,開(kāi)始穩(wěn)定,導(dǎo)致實(shí)驗(yàn)效果不準(zhǔn)確。為了保證聚類效果,k值限定在樣本數(shù)量的1/5之內(nèi)。由于此樣本記錄約有50個(gè),故將k限制在10以下。根據(jù)上表,我們可以畫(huà)出k值與最優(yōu)間距關(guān)系的折線圖(見(jiàn)圖11)。
由圖我們可以得出,當(dāng)k值取3時(shí),聚類的效果與平衡性之和達(dá)到了最大。因此可以確定,在正式使用K-means算法時(shí)將k值設(shè)置為3的聚類效果最好。
圖11 k值與最優(yōu)間距的關(guān)系折線圖
3.2.2 用戶畫(huà)像繪制結(jié)果分析
用戶畫(huà)像中的標(biāo)簽各式各樣,雖然均是從用戶數(shù)據(jù)中提取而來(lái),但其是否真正起到描述用戶心理情況的作用,仍需要進(jìn)行檢驗(yàn)。因此,用戶畫(huà)像中的標(biāo)簽是否有效,是用戶畫(huà)像繪制結(jié)果的衡量標(biāo)準(zhǔn)之一。關(guān)于文字?jǐn)?shù)據(jù)的關(guān)鍵字提取部分,本文提出了“假高頻關(guān)鍵字”這個(gè)概念。它代表著那些出現(xiàn)概率高但毫無(wú)實(shí)際意義的關(guān)鍵字,實(shí)際上就是無(wú)效關(guān)鍵字。TF-IDF算法在完成關(guān)鍵字提取時(shí),經(jīng)常會(huì)出現(xiàn)無(wú)效關(guān)鍵字。將它們篩選掉是本文需要進(jìn)行解決的問(wèn)題之一[16]。
經(jīng)常出現(xiàn)的“不與其他文字搭配的獨(dú)立數(shù)字”(以下簡(jiǎn)稱“獨(dú)立數(shù)字”)就是假高頻關(guān)鍵字的代表[17-20]。因此在這里,我們將通過(guò)這種獨(dú)立數(shù)字的出現(xiàn)程度來(lái)衡量用戶畫(huà)像的誤差值。計(jì)算獨(dú)立數(shù)字出現(xiàn)的概率,首先需要讀取所有已經(jīng)通過(guò)數(shù)據(jù)處理功能獲得的關(guān)鍵字。之后,需要對(duì)所有已經(jīng)讀取的關(guān)鍵詞進(jìn)行遍歷,找出其中出現(xiàn)的獨(dú)立數(shù)字,并統(tǒng)計(jì)其數(shù)量。因?yàn)楠?dú)立數(shù)字的取值范圍一般為0~999,所以可以將所有找到的符合關(guān)鍵字強(qiáng)制轉(zhuǎn)換為浮點(diǎn)數(shù)進(jìn)行檢測(cè)。最后,計(jì)算獨(dú)立數(shù)字出現(xiàn)概率與所有關(guān)鍵字的比值,就是此次用戶畫(huà)像的誤差值。其核心公式為:,其中mis為誤差值,topw為關(guān)鍵字總數(shù),count為獨(dú)立數(shù)字(或任何假高頻關(guān)鍵字)的總數(shù)。
在用戶畫(huà)像研究領(lǐng)域中,上文提到的停用詞篩選是比較常見(jiàn)的提高用戶畫(huà)像準(zhǔn)確度的方法。在這里,我們使用極其容易出現(xiàn)獨(dú)立數(shù)字的淘寶用戶購(gòu)買商品名稱記錄來(lái)統(tǒng)計(jì)此用戶數(shù)據(jù)的用戶畫(huà)像的誤差值[21]。
首先,分別在extract_tag方法中將采集關(guān)鍵字總數(shù)topK設(shè)置為40、30、20、10、5來(lái)計(jì)算獨(dú)立數(shù)字的出現(xiàn)次數(shù),并計(jì)算出現(xiàn)次數(shù)與關(guān)鍵字總數(shù)的比值,即用戶畫(huà)像的誤差值。其結(jié)果如表2所示。
而如果我們使用停用詞篩選,向停用詞文本中逐個(gè)輸入0~1000內(nèi)的數(shù)來(lái)將所有可能出現(xiàn)的獨(dú)立數(shù)字,將其作為停用詞進(jìn)行過(guò)濾后,再執(zhí)行extract_tag方法進(jìn)行誤差值統(tǒng)計(jì),其結(jié)果如下表所示,誤差值有了非常明顯的下降。因此,在用戶畫(huà)像的關(guān)鍵字采集時(shí)啟用停用詞篩選功能能夠有效提高用戶畫(huà)像標(biāo)簽的有效性,進(jìn)而提高用戶畫(huà)像的準(zhǔn)確度(見(jiàn)表3)。
表2 誤差值統(tǒng)計(jì)表
同時(shí),由于TF-IDF算法是基于詞在不同文本的出現(xiàn)頻率來(lái)進(jìn)行關(guān)鍵字的提取,而這種算法勢(shì)必會(huì)忽略掉一些關(guān)鍵字,為了解決這個(gè)問(wèn)題,本文還采用了基于有向有權(quán)圖pagerank的textrank算法進(jìn)行了關(guān)鍵字補(bǔ)遺操作。它的在通過(guò)TF-IDF算法篩選并提取關(guān)鍵字時(shí)同時(shí)采用textrank算法進(jìn)行并行提取,在將關(guān)鍵字作為輸入標(biāo)簽表前,會(huì)將textrank算法篩選出的關(guān)鍵字與TF-IDF算法篩選出的關(guān)鍵字進(jìn)行比較,相同的關(guān)鍵字就直接輸入標(biāo)簽表,若出現(xiàn)未被TF-IDF算法而是被textrank篩選篩選出的關(guān)鍵字,就將其加入標(biāo)簽表作為補(bǔ)遺,以此進(jìn)一步提高用戶畫(huà)像的準(zhǔn)確度。分別對(duì)文本進(jìn)行TF-IDF算法和textrank算法的關(guān)鍵字分析,運(yùn)行結(jié)果如圖12所示。可以看出,textrank算法篩選出的關(guān)鍵字與TF-IDF算法的有一定重合,而其不重合部分正好可以作為補(bǔ)遺部分。
表3 停用詞篩選后的誤差值統(tǒng)計(jì)表
圖12 兩種算法運(yùn)算結(jié)果對(duì)比
綜上所述,我們?cè)谶M(jìn)行用戶畫(huà)像時(shí),可以使用停用詞文本對(duì)無(wú)效的關(guān)鍵字進(jìn)行過(guò)濾,同時(shí)使用額外的關(guān)鍵字提取算法,如textrank算法進(jìn)行關(guān)鍵字的補(bǔ)充,從而在進(jìn)行用戶畫(huà)像時(shí)提高其準(zhǔn)確性。
隨著互聯(lián)網(wǎng)的發(fā)展和網(wǎng)絡(luò)用戶的增多,針對(duì)用戶個(gè)體的心理需求而進(jìn)行服務(wù)的更新成了很多互聯(lián)網(wǎng)企業(yè)的挽留客戶的手段。而根據(jù)用戶網(wǎng)絡(luò)行為來(lái)進(jìn)行心理刻畫(huà)也就因此變成了服務(wù)中的一個(gè)必要工作。用戶畫(huà)像作為個(gè)人心理刻畫(huà)的重要手段之一,一直在互聯(lián)網(wǎng)研究領(lǐng)域中占有重要地位。本文對(duì)用戶畫(huà)像的繪制方式進(jìn)行了探討與實(shí)踐,并隊(duì)用戶畫(huà)像算法中的一些不足進(jìn)行了研究與改進(jìn)。本文在繪制用戶畫(huà)像的具體算法上采用了K-means算法和TFIDF算法來(lái)分別對(duì)數(shù)值文本和文字文本進(jìn)行關(guān)鍵字提取和標(biāo)簽生成,并設(shè)計(jì)通過(guò)wordcloud算法實(shí)現(xiàn)了用戶畫(huà)像圖片的生成。所有的算法均在PyCharm開(kāi)發(fā)環(huán)境上使用Python語(yǔ)言實(shí)現(xiàn),并通過(guò)tkinter模塊實(shí)現(xiàn)用戶界面操作。K-means算法存在著其k值上必須要事先由用戶指定的問(wèn)題,而TF-IDF算法在關(guān)鍵字提取時(shí)有著無(wú)效關(guān)鍵字過(guò)多和關(guān)鍵字遺漏的問(wèn)題。本文通過(guò)研究K-means算法中的k值與聚類間距的關(guān)系,而在聚類執(zhí)行前算出最適合當(dāng)前數(shù)據(jù)的k值,然后直接代入算法,優(yōu)化了K-means算法的執(zhí)行效率;同時(shí)采用停用詞過(guò)濾功能與textrank算法補(bǔ)遺,在TF-IDF算法執(zhí)行完畢后對(duì)其獲得的關(guān)鍵字結(jié)果進(jìn)行了優(yōu)化,提高了標(biāo)簽的有效性。