唐勇 桑麗麗
摘要:文章使用Python語言基于LDA模型對大學(xué)生就業(yè)信息進(jìn)行主題分析。首先,使用Requests庫和BeautifulSoup庫對國家大學(xué)生就業(yè)服務(wù)平臺中的就業(yè)信息進(jìn)行采集,并使用pandas庫對信息進(jìn)行清洗和整理。然后,使用gensim庫對大學(xué)生就業(yè)信息進(jìn)行LDA建模,得出4個主題,即:就業(yè)幫扶及培訓(xùn)、企業(yè)招聘、考公考編和“三支一扶”政策。文章對這些主題進(jìn)行了可視化處理,并分析了各個主題的內(nèi)容。最后,按照信息發(fā)布的年份對就業(yè)信息文檔分組,分析了各年份大學(xué)生就業(yè)信息主題強(qiáng)度的變化趨勢。
關(guān)鍵詞:主題分析;LDA模型;大學(xué)生就業(yè)
中圖分類號:TP311.52 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2024)13-0084-04 開放科學(xué)(資源服務(wù))標(biāo)識碼(OSID) :
0 引言
近年來,隨著高校畢業(yè)生人數(shù)的增加和國內(nèi)就業(yè)形勢的變化,大學(xué)生就業(yè)問題日益凸顯,引發(fā)社會各界的廣泛關(guān)注。為了有效解決大學(xué)生就業(yè)問題,國家各部委和各級地方政府均出臺了一系列的大學(xué)生就業(yè)幫扶政策信息,高校不斷提升畢業(yè)生就業(yè)的服務(wù)水平,推出了大量的就業(yè)指導(dǎo)信息,企業(yè)和事業(yè)單位也積極投入到促進(jìn)大學(xué)生就業(yè)工作中,發(fā)布了大量崗位招聘信息。
上述大學(xué)生就業(yè)信息通常是由各級政府和企業(yè)事業(yè)單位通過各種媒體平臺零散發(fā)布的。那么,這些就業(yè)信息主要聚焦在哪些主題呢?各個主題的特征、針對性及變化趨勢又是什么?這還需要進(jìn)行具體的分析處理。本文通過Python爬蟲程序?qū)Υ髮W(xué)生就業(yè)信息進(jìn)行收集整理,然后基于LDA模型分析大學(xué)生就業(yè)信息涉及的主題數(shù)及主題特征,并將主題模型可視化,最后按照時間順序分析主題的演化過程,從而為完善和改進(jìn)大學(xué)生就業(yè)幫扶政策提供建議。
1 LDA 模型介紹
LDA(Latent Dirichlet Allocation) 模型是一種無監(jiān)督的機(jī)器學(xué)習(xí)模型,用于在大量文檔中發(fā)現(xiàn)潛在的文檔主題,被廣泛應(yīng)用于文檔的自動化分析中。在LDA 模型中,一篇文檔被認(rèn)為是由文檔主題矩陣和主題詞語矩陣共同決定的。這兩個矩陣的元素均服從二項(xiàng)分布,即:在文檔主題矩陣中第m行代表語料庫中的第m篇文檔由k個主題構(gòu)成,這些主題服從參數(shù)為θm的二項(xiàng)分布;而在主題詞語矩陣中第k行代表主題集合中的第k 個主題由n 個單詞構(gòu)成,這些單詞服從參數(shù)為φk 的二項(xiàng)分布。而二項(xiàng)分布θm 和φk 分別服從參數(shù)為α和β的迪利克雷分布。
因此,在LDA模型中生成文檔的過程是:1) 根據(jù)參數(shù)為α的迪利克雷分布產(chǎn)生作為文檔主題分布的參數(shù)θm,根據(jù)參數(shù)為β的迪利克雷分布產(chǎn)生作為主題單詞分布的參數(shù)φk。2) 按照參數(shù)θm 的二項(xiàng)分布隨機(jī)生成一個話題zmn。3) 最后按照參數(shù)為φzmn 的二項(xiàng)分布隨機(jī)生成單詞wmn。從上述LDA模型生成文檔的過程中可以得出主題的單詞分布,它能夠刻畫語料庫中文檔的潛在主題特征,如果結(jié)合文檔產(chǎn)生的時間順序,則可以進(jìn)一步得出各個主題在不同時間段的特征詞演變過程,從而能夠分析出文檔的主題動態(tài)演變過程。
LDA模型在文檔主題分析時一方面忽略了文檔產(chǎn)生的時間因素,它將不同時期的詞語重要性同等對待;另一方面,LDA模型忽略了詞語之間的關(guān)聯(lián)性。因此,許多研究者針對LDA模型的不足進(jìn)行了改進(jìn)和優(yōu)化,例如:蘇婧瓊等人對比了LDA模型和TF-IDF模型在文檔關(guān)鍵詞提取方面的各自特點(diǎn),認(rèn)為TF-IDF 模型更能夠反映文檔關(guān)鍵詞的重要性[1]。潘越和高雪芬將TF-IDF模型和LDA模型相結(jié)合應(yīng)用于微博的主題聚類分析:先用TF-IDF模型提取出每個文檔的關(guān)鍵詞,然后再用LDA模型結(jié)合起來進(jìn)行主題分析[2]。彭俊利等人則進(jìn)一步將TF-IDF 模型、LDA 模型和Word2Vec模型三者相結(jié)合,這種算法先采用TF-IDF模型提取出文檔的關(guān)鍵詞,然后采用LDA模型進(jìn)行主題分析,最后將每個主題下的詞匯采用Word2Vec模型進(jìn)行向量化表示[3]。此種方法由于采用Word2Vec 模型,可以在一定程度上彌補(bǔ)LDA主題中詞匯缺少上下文關(guān)聯(lián)的不足。朱茂然等人則使用LDA模型計算了語料庫中不同時間片段上的主題詞匯分布,然后對不同時間段上的主題計算相似度,從而獲得主題內(nèi)容的演化過程[4]。海駿林峰等人將深度學(xué)習(xí)中有關(guān)自然語言預(yù)訓(xùn)練模型BERT與LDA模型結(jié)合,有效彌補(bǔ)了LDA模型在主題提取時忽略文本語義關(guān)聯(lián)的問題[5]。但是,深度學(xué)習(xí)框架下的BERT模型需要基于大規(guī)模標(biāo)注語料庫和大規(guī)模計算,這并不適合于本文所要研究的大學(xué)生就業(yè)信息文本分析。
2 數(shù)據(jù)的來源、采集和清洗
就業(yè)信息數(shù)據(jù)源的選擇關(guān)系到后期數(shù)據(jù)分析的正確性。目前,國內(nèi)有眾多平臺發(fā)布大學(xué)生就業(yè)信息,既有前程無憂、中華英才網(wǎng)、智聯(lián)招聘等求職網(wǎng)站,也有各級地方政府的人力資源網(wǎng)站。其中,國家大學(xué)生就業(yè)服務(wù)平臺是由教育部學(xué)生服務(wù)與素質(zhì)發(fā)展中心運(yùn)營的專門服務(wù)于高校畢業(yè)生及用人單位的公共就業(yè)服務(wù)平臺,是有關(guān)大學(xué)生就業(yè)信息的權(quán)威發(fā)布平臺,采集該平臺上的就業(yè)數(shù)據(jù)信息更加真實(shí)可靠,有利于后期的數(shù)據(jù)分析。因此,本文以國家大學(xué)生就業(yè)服務(wù)平臺中的就業(yè)資訊作為數(shù)據(jù)源。
本文使用Python語言采集國家大學(xué)生就業(yè)服務(wù)平臺2019 年到2024 年之間發(fā)布的就業(yè)資訊信息。Python語言的Requests庫和BeautifulSoup庫可以對網(wǎng)頁內(nèi)容進(jìn)行獲取和解析。首先分析出就業(yè)信息的網(wǎng)頁地址模板為https://www.ncss.cn/ncss/jydt/jy/?start={},設(shè)置start的值在一個初始值為0,終止值為2220,步長為30的列表中循環(huán),拼接成就業(yè)信息列表頁的地址集合。然后,使用Requests庫的get方法獲取75個就業(yè)列表頁面,每個頁面30條就業(yè)信息;接著使用BeautifulSoup庫解析每個列表頁面的就業(yè)標(biāo)題、發(fā)布時間、就業(yè)內(nèi)容,總計2 250條記錄。為了便于后期的數(shù)據(jù)清洗和處理分析,本文使用csv庫的writer對象將上述標(biāo)題、時間和內(nèi)容信息分成三列存儲到csv格式的文件中。
在完成就業(yè)信息的采集之后,需要對信息開展進(jìn)一步的清洗。本文使用pandas庫的DataFrame對象讀取csv文件,然后通過DataFrame對象的dropna()方法去除掉就業(yè)信息內(nèi)容為空的記錄,最終保留了2 188 條大學(xué)生就業(yè)信息。接著采用jieba分詞工具對就業(yè)信息內(nèi)容進(jìn)行分詞,在分詞的過程中使用了百度的中文停用詞庫,去除了就業(yè)內(nèi)容中無實(shí)際含義的虛詞、助詞、形容詞和標(biāo)點(diǎn)符號,還要去除所有字符長度小于2的單字詞,最后對jieba分詞器的每個分詞結(jié)果,判斷其Unicode編碼是否在u4e00到u9fff范圍內(nèi)可以提取出所有的中文分詞。通過以上數(shù)據(jù)清洗過程產(chǎn)生最終的文檔詞匯列表作為LDA模型訓(xùn)練的語料庫。
3 LDA 模型的實(shí)現(xiàn)
使用Python語言實(shí)現(xiàn)LDA模型可以借助gensim 庫,gensim全稱Generate Similarity,是一款開源的自然語言處理庫,可以從多個文檔中抽取潛在的主題。gensim庫在生成LDA模型之前需要從多個文檔中提取出詞語構(gòu)成詞典,然后針對每個文檔統(tǒng)計每個詞語的權(quán)重。具體實(shí)現(xiàn)過程如下:
首先,導(dǎo)入gensim庫中的corpora包,并調(diào)用cor?pora包的Dictionary類可以提取出所有文檔中的詞匯,形成語料庫的詞典,即:dictionary = corpora.Dictionary(words)。
然后,對于語料庫中每個文檔均調(diào)用Dictionary 類的doc2bow方法,返回的列表元素是每個詞語在文檔中出現(xiàn)的次數(shù),即:corpus_bow = [dictionary.doc2bow(text) for text in words]。然而此種處理方式忽略了詞語在整個語料庫中的重要性,因此需要進(jìn)一步應(yīng)用TF-IDF模型。
接著,導(dǎo)入gensim庫的models包,通過調(diào)用mod?els包的TfidfModel類可以將每個詞匯的TF-IDF權(quán)重考慮進(jìn)來,即:corpus_data = models.TfidfModel(cor?pus_bow)。這樣處理后語料庫中每個文檔均轉(zhuǎn)換為列表數(shù)據(jù)類型,每個列表元素是由該文檔的單詞編號和單詞權(quán)重構(gòu)成的元組。
最后,調(diào)用models包的LdaModel方法就可以生成LDA 模型,即:LDAModel(corpus_data, num_topics=6,id2word=dictionary, passes=20)。該方法的傳入?yún)?shù)中,corpus_data是之前產(chǎn)生的語料庫,dictionary是詞典,passes表示對語料庫迭代訓(xùn)練的次數(shù),num_topics 表示需要的主題數(shù)。其中主題數(shù)num_topics需要預(yù)先確定。一般可以通過主題困惑度或主題一致性指標(biāo)值來選擇合適的主題數(shù)。本文使用主題一致性指標(biāo)來判斷合適的主題數(shù),一致性指標(biāo)值越高則選擇的主題數(shù)量越合理。通過數(shù)據(jù)對比發(fā)現(xiàn):主題一致性不僅受到主題個數(shù)的影響,還會受到語料庫中詞語數(shù)的影響。本文分別計算了不同主題數(shù)和詞語數(shù)情況下的主題一致性曲線,如圖1所示??梢园l(fā)現(xiàn)選擇詞語數(shù)為1 200且主題數(shù)為4時的主題一致水平最高。
4 主題可視化及分析
在LDA模型計算完成之后,可以借助pyLDAvis 庫對主題模型的實(shí)現(xiàn)結(jié)果進(jìn)行可視化分析。pyLDA?vis利用D3.js可視化模板將主題模型的結(jié)果制作成可交互的頁面。圖2是當(dāng)詞語數(shù)為1 200,主題數(shù)為4時的大學(xué)生就業(yè)信息可視化頁面,此時四個主題沒有任何重疊部分,說明主題建模效果良好。
通過LDA模型的get_topic_terms方法可以獲得特定主題下相關(guān)度最高的詞語。本文獲取到大學(xué)生就業(yè)信息的4個主題下最相關(guān)的詞匯,如表1所示。
通過各主題的特征詞匯可以看出:主題1是與大學(xué)生就業(yè)幫扶和就業(yè)培訓(xùn)有關(guān)的內(nèi)容,主題2是與大學(xué)生求職和企業(yè)用人招聘相關(guān)的內(nèi)容,主題3是與大學(xué)生參加公務(wù)員考試和事業(yè)編制考試相關(guān)的內(nèi)容,主題4是與大學(xué)生“三支一扶”(即:支農(nóng)、支教、支醫(yī)和扶貧)政策相關(guān)的內(nèi)容。因此2019年到2024 年的大學(xué)生就業(yè)信息可以分為四個主題,即:就業(yè)幫扶及培訓(xùn)、企業(yè)招聘、公務(wù)員及事業(yè)單位考試、三支一扶。從各個主題的整體數(shù)量來看,主題1就業(yè)幫扶及培訓(xùn)相關(guān)的信息發(fā)布最多,而主題4三支一扶相關(guān)的信息發(fā)布最少,主題2企業(yè)招聘的相關(guān)信息略高于主題3考公考編。
為了進(jìn)一步考查上述4個主題的動態(tài)發(fā)展變化,本文將每個文檔按照發(fā)布的時間進(jìn)行分類,得到按年劃分的文檔編號集合docs_id,然后使用LDA 模型的get_docu?ment_topics 方法可以獲得每個文檔在各個主題下的得分,最后按照年份分組并計算每個年份中各主題的得分平均值。圖2 展示了2019年到2024年大學(xué)生就業(yè)信息的主題強(qiáng)度變化趨勢,從圖中可以發(fā)現(xiàn)主題4三支一扶的信息發(fā)布強(qiáng)度最低,也最平穩(wěn)。主題1就業(yè)幫扶及培訓(xùn)的信息發(fā)布強(qiáng)度也呈現(xiàn)穩(wěn)定趨勢,而主題2企業(yè)招聘和主題3考公考編的信息發(fā)布強(qiáng)度均呈現(xiàn)波浪式發(fā)展態(tài)勢。并且主題2的發(fā)布強(qiáng)度與主題3的發(fā)布強(qiáng)度還呈現(xiàn)互補(bǔ)的狀態(tài):在2019 年到2020 年期間由于受到疫情影響,企業(yè)招聘信息發(fā)布強(qiáng)度下降,此時考公考編信息發(fā)布強(qiáng)度上升;在2021 年到2022年期間國內(nèi)經(jīng)濟(jì)逐漸從疫情影響中恢復(fù),企業(yè)招聘信息發(fā)布趨勢上升,而考公考編信息發(fā)布強(qiáng)度下降;在2022年到2024年期間國內(nèi)經(jīng)濟(jì)發(fā)展放緩,同時大學(xué)生畢業(yè)人數(shù)激增,企業(yè)招聘信息的發(fā)布強(qiáng)度下降,而考公考編信息的發(fā)布強(qiáng)度開始上升。
5 總結(jié)
本文通過Python語言對國家大學(xué)生就業(yè)服務(wù)平臺上2019年到2024年4月份的就業(yè)信息進(jìn)行采集、清洗和整理,獲得有效的大學(xué)生就業(yè)信息2188條。對這些就業(yè)信息文檔使用gensim庫的LDA模型進(jìn)行主題識別和主題一致性的計算后,發(fā)現(xiàn)當(dāng)設(shè)置詞語數(shù)為1 200、主題數(shù)為4時的主題一致性最高,主題可視化效果也最好。因此,本文得到了有關(guān)大學(xué)生就業(yè)信息的四個主題,即:就業(yè)幫扶及培訓(xùn)、企業(yè)招聘、公務(wù)員及事業(yè)單位考試和三支一扶。最后,本文對大學(xué)生就業(yè)信息按照發(fā)布年份分組,獲得每個年份下主題信息的發(fā)布強(qiáng)度曲線,分析出了各個主題信息的動態(tài)變化。本文在分析主題信息的動態(tài)變化時,受到文檔語料庫規(guī)模較小的限制,因此假定了每個年份的主題數(shù)目不變。在文檔語料庫規(guī)模較大的情況下,可以考慮將文檔按年代分組后,使用LDA模型計算每個年份下文檔的主題數(shù)和主題,然后分析各年份下的主題動態(tài)演變趨勢。
參考文獻(xiàn):
[1] 蘇婧瓊,蘇艷瓊. 基于LDA和TF-IDF的關(guān)鍵詞提取算法研究[J]. 長江信息通信,2024,37(1):78-80.
[2] 潘越,高雪芬. 大學(xué)數(shù)學(xué)精品慕課課程質(zhì)量影響因素研究:基于評論文本挖掘的視角[J]. 浙江理工大學(xué)學(xué)報(社會科學(xué)版),2024(2):1-9.
[3] 彭俊利,王少泫,陸正球,等. 基于LDATF-IDF和Word2Vec文檔表示[J]. 浙江紡織服裝職業(yè)技術(shù)學(xué)院學(xué)報,2023,22(2):91-96.
[4] 朱茂然,王奕磊,高松,等. 基于LDA模型的主題演化分析:以情報學(xué)文獻(xiàn)為例[J]. 北京工業(yè)大學(xué)學(xué)報,2018,44(7):1047-1053.
[5] 海駿林峰,嚴(yán)素梅,陳榮,等. 基于LDA-BERT相似性測度模型的文本主題演化研究[J]. 圖書館工作與研究,2024(1):72-79.
【通聯(lián)編輯:謝媛媛】
基金項(xiàng)目:常州紡織服裝職業(yè)技術(shù)學(xué)院應(yīng)用技術(shù)類課題(項(xiàng)目編號:CFK201807) ;常州紡織服裝職業(yè)技術(shù)學(xué)院教師企業(yè)實(shí)踐鍛煉項(xiàng)目(項(xiàng)目編號:2024)