重磅乾貨!如何使用Stata軟件檢測文章抄襲_風聞
观察者网用户_241051-2019-11-19 09:07
摘要:本次介紹lsemantica命令,它可以在Stata中實現潛在語義分析。潛在語義分析是一種用於單詞和文本相似度比較的機器學習算法,lsemantica提供了用於潛在語義分析的簡單命令以及用於文本相似性比較的補充命令。
這是社論前沿第S1468次推送
微信號:shelunqianyan
潛在語義分析
兩個文本文檔的語義相似性是一個非常有用的度量。例如,知道兩個文檔具有相似的內容或含義可以幫助識別同一作者的文檔,測量信息的傳播,或檢測抄襲。
當試圖識別具有相似含義的文檔時,存在兩個主要問題。首先,同一個詞在不同的上下文中可以有不同的含義。第二,不同的單詞在其他上下文中可以有相同的含義。因此,僅使用文檔中的單詞作為相似性度量是不可靠的。對於幾百個文檔來説,閲讀和手工編碼文檔已經成為禁忌。
潛在語義分析(LSA)通過為單詞和文本提供可靠的語義相似性度量,為這一問題提供了一種解決方案。LSA是由Deerwester等人開發的用於滿足自動信息檢索任務。在搜索查詢中,理解單詞的關係和含義很重要,因為僅僅使用查詢術語通常會導致不滿意的搜索結果。
LSA通過考慮單詞的關係和潛在的多重含義來改進結果。正是這個屬性使LSA適用於各種不同的任務,包括:
1.單詞的相似性
2.文本的相似性
3.計算機引導的摘要寫作
4.自動論文評分
5.評估語篇連貫性
對於所有這些應用程序,LSA通過使用截斷奇異值分解推導出單詞和文檔之間的隱藏語義聯繫。同樣,截斷奇異值分解使LSA能夠通過分解“語義空間”來“學習”單詞之間的關係。這一過程使LSA能夠準確地判斷文本的含義。LSA使用單詞共現,而LSA可以推斷出單詞之間更深層次的關係。
lsemantica命令,為在Stata中使用LSA提供了一個解決方案。lsemantica使用lsemantica_ cosine命令進一步簡化了Stata中的文本相似性比較。這樣,lsemantica進一步改進了Stata的文本分析能力。
Stata已經允許使用strdist命令計算Levenshtein編輯距離,並且txttool命令有助於文本數據的清理和標記化。此外,ldagibbs命令允許在Stata中運行潛在Dirichlet分配。雖然ldagibbs可以按相似的主題將文檔分組在一起,但如果人們主要對文檔的相似程度感興趣,則lsemantica更可取。
Stata軟件操作
對於lsematica,用户想要用於LSA的每個文檔都應該是數據集中的一個觀察值。如果文檔由數千個單詞組成,則用户可以將文檔拆分為較小的部分,例如段落,以單獨處理每個部分。在任何情況下,文本字符串只應使用一個變量。此外,應從字符串中刪除非字母數字字符。
lsemantica命令是通過指定包含文本的變量來啓動的。有一個選項可以選擇截斷奇異值分解的分量數量。lsemantica的選項還允許從文本字符串中刪除停止詞和短詞。txttool命令提供了更高級的文本清理選項。lsemantica還提供了兩個選項來減少詞彙表的大小。在截斷奇異值分解由於詞彙表的大小而需要很長時間的情況下,這些選項非常有用。
1.命令格式
2.選項解讀
components(Integer)指定語義空間應該由lsemantica減少到的組件的數量。組件的數量通常基於詞彙表的大小來選擇。默認值為components(300)。
tfidf指定在應用截斷奇異值分解之前是否應該使用tfidf重新加權。在大多數情況下,tfidf重新加權將改善結果。
min_char(整數)允許從文本中刪除短詞。字符少於最小字符(整數)的單詞將從LSA中排除。默認值為min_char(0)。
stopwords(String)指定要從lsemantica中排除的單詞列表。通常,頻繁出現的單詞如“我”、“你”等被從文本中刪除,因為這些單詞對文檔的意義貢獻甚微。不同語言的預定義停詞列表可在線獲得。
min_freq(整數)允許刪除出現在較少文檔中的單詞。出現在少於min_freq(整數)的文檔中的單詞將從LSA中排除。默認值為min_freq(0)。
max_freq(real)允許刪除文檔中頻繁出現的單詞。出現在超過max_freq(real)文檔的共享中的單詞將從LSA中排除。默認值為max_freq(1)。
name_new_var(string)指定lsemantica創建的輸出變量的名稱。這些變量包含每個文檔的組件。用户應確保名稱new_var(string)在數據集中是唯一的。默認情況下,變量的名稱是component,因此新變量的名稱將是component_1—component C,其中C是組件的數量。
Mat_save指定是否應保存單詞成分矩陣。這個矩陣描述了單詞之間的語義關係。默認情況下,不會保存矩陣。
path(string)設置保存單詞分量矩陣的路徑。
3.結果輸出
lsemantica生成C個新變量,這些變量是由截斷奇異值分解生成的分量。如前幾節所述,這些組件捕獲文檔的語義關係,並允許計算文檔之間的相似性。
基於LSA的文檔相似度通常通過每個文檔的分量向量的餘弦相似度來度量。餘弦相似性是相關係數的非中心形式。對於高度相似的文檔,餘弦相似度是1,對於完全不相似的文檔,餘弦相似度是−1。當使用LSA時,餘弦相似度通常位於單位區間內。只有對於高度不同的文檔,餘弦相似性才是負的。
lsemantica還提供了lsemantica_cosine命令,以便於分析餘弦相似性。Lsemantica_cosine計算所有文檔的餘弦相似度,並將其存儲在Mata.3中。此外,lsemantica_cosine可以提供餘弦相似度的彙總統計,並找到高度相似的文檔。
示例分析
示例數據集包含1980至2016年間在經濟期刊上發表的41,349篇文章的標題。加載數據後,將從標題字符串中刪除非字母數字字符,以便為LSA做準備。
(温馨提示:點擊查看大圖)
只需調用lsemantica命令就可以啓動LSA。
首先,lsemantica準備文檔並生成文檔術語矩陣。lsemantica還從數據中刪除少於4個字符的單詞和出現在少於10個文檔或超過一半的所有文檔中的單詞。此外,從數據中刪除停止詞。然後使用TFIDF重新加權得到的文檔術語矩陣。
每次處理10%的詞彙表時,該命令都會報告。
(温馨提示:點擊查看大圖)
如果文檔在文本清理後沒有留下任何單詞,lsemantica將從數據中刪除這些觀察結果,因為它們干擾了截斷的奇異值分解。lsemantica報告哪些文檔已從數據中刪除,以及詞彙表的大小。在本例中,刪除了167個文檔。刪除文檔主要是由於選項min_freq(10)發揮作用。
接下來,lsemantica計算截斷奇異值分解,這是計算密集型的,可能需要一些時間。在某些情況下,Stata在此過程中變得無響應。截斷奇異值分解所需的時間隨着文檔術語矩陣的大小而增加,從而隨着文檔的數量和詞彙表的大小而增加。
在lsemantica完成運行後,可以通過使用lsemantica_cosine命令計算組成向量之間的餘弦相似度來開始分析文檔的相似性。由於維度的原因,生成的餘弦相似性矩陣存儲在Mata中。如果需要,可以在lsemantica_cosine命令後使用getmata(cosin*)=cosine_sim從Mata檢索完整的餘弦相似性矩陣。Lsemantica_cosine還允許計算與其他文章標題的平均相似度以及最大和最小相似度。
此外,lsemantica餘弦可以為數據中的每一篇文章找到最相似的文章。在本例中,計算了10篇最相似的文章。之後,列出了數據中第一篇文章的五個最相似的文章標題。人們可以看到,在所有討論勞動力供應問題的文章中,LSA準確地識別了高度相似的文章。
最後,lsemantica可以比較語義關係和詞語的相似性。使用lsemantica_word_comp,可以導入lsemantica存儲的單詞成分矩陣。同樣,lsemantica_cosine可以用於計算數據中單詞之間的餘弦,並找到最相似的單詞。這個例子表明lsemantica識別出“勞動”、“力量”、“分段”、“分工”、“摩擦”和“壟斷”這幾個詞彼此相關。
結 語
LSA已經被證明是一種通用的文本分析算法。lsemantica將LSA引入Stata,並可以幫助研究人員使用lsemantica_cosine命令更準確地度量文本文檔的相似性。因此,lsemantica開闢了在Stata中分析文本數據的新方法。儘管以上示例是基於英文文章展開的操作,但同樣對中文文章的相關操作也具有一定的適用性和啓發性。