文本挖掘

  • 對語料庫分詞,并統(tǒng)計詞頻(去掉common-words)。輸入目標詞語計算出相關(guān)度高的前十文本,并考慮算法耗時問題。數(shù)據(jù)在下面連接父目錄下(cranfield.tar.gz為語料庫需要解壓):
    代碼

module

  1. os
    獲取解壓的所有文件名稱
  2. nltk
    用到textobject,創(chuàng)建一個自己的textObject,并用該對象的內(nèi)置方法統(tǒng)計每個word的頻次。
  3. re
    nltk模塊分詞并不完全符合要求,利用re的正則匹配方法進一步提取word。
  4. pandas
    創(chuàng)建時間序列的數(shù)據(jù),并用Series類的方法,整理結(jié)果數(shù)據(jù)。
  5. time
    計算運行時間
  6. matplotlib
    作圖module
  7. numpy
    數(shù)值計算模塊,用到均值、求和以及隨機抽樣函數(shù)

function

  1. wordCountDict
    建立2層嵌套的字典,最外層key為提取的word對應(yīng)的value是一個字典,該字典的key為文件名稱,value為該文件出現(xiàn)最外層key對應(yīng)的word的頻數(shù)(>=1)。統(tǒng)計僅僅由數(shù)值和字母構(gòu)成的word且不包括stopwords,結(jié)果用于下面函數(shù)。

  2. searchRelativePaper
    給處幾個關(guān)鍵單詞,統(tǒng)計出現(xiàn)這些單詞的在每篇文章中出現(xiàn)的頻數(shù)之和,降序排列結(jié)果,給出前10的文章文件夾名稱。

  3. statQueryTime
    統(tǒng)計不同查詢關(guān)鍵字個數(shù)與查詢時間花費之間關(guān)系,采取又放回的10次隨機抽樣期望代替目標值。

love & life為例查詢top10-DOC

1 cranfield0640 4
2 cranfield0768 3
3 cranfield0727 2
4 cranfield0865 1
5 cranfield0482 1
6 cranfield0724 1
7 cranfield0844 1
8 cranfield0658 1
9 cranfield0909 1
10 cranfield1352 1

后10 應(yīng)該均為0沒有統(tǒng)計意義

bottom 10 & top 10

bottom count top count
ob 1.0 flow 1732
nullify 1.0 pressure 1120
inadmissable 1.0 number 964
lina 1.0 results 885
806 1.0 boundary 880
608 1.0 mach 813
shallower 1.0 theory 777
cracking 1.0 layer 720
objectionable 1.0 method 674
428 1.0 surface 554.0

不僅僅這10個出現(xiàn)一次,因此這10個word不是唯一的答案。

words在campus出現(xiàn)頻數(shù)統(tǒng)計histogram

Figure_1.png

word出現(xiàn)頻率最高的為1750次,幾乎所有word頻都小于250次,因此進一步考慮去值小于250的直方圖如下:

Figure_2.png

數(shù)據(jù)明顯還是集中在50,因此進一步看小于50樣本頻數(shù)直方圖:

Figure_3.png

總結(jié):絕大部分部分word頻數(shù)小于5次,很少一部分部分頻數(shù)取值在[50,250],極少大于250,單詞最大頻數(shù)為1732。

統(tǒng)計查詢時間與查詢詞語個數(shù)之間關(guān)系

統(tǒng)查詢結(jié)果最大值為0(沒有)、極少(出現(xiàn)次數(shù)之和 x : 0 < x <= 1 * n , n為給處關(guān)鍵字的個數(shù)), 多( x > 3 * n)

num of words empty little many
1 0.00110281 0.00227954 0.00209611
2 0.0009027 0.00309847 0.003008
3 0.000802159 0.00382876 0.00483092
Figure_5.png
  1. empty(沒有)、little(極少)、many(很多)這三者查詢時間呈現(xiàn)一個遞增關(guān)系。
  2. 當總查詢結(jié)果為empty時, 查詢時間和輸入關(guān)鍵字個數(shù)影響關(guān)系可以忽略。另外兩種情況,都會隨著查詢關(guān)鍵字個數(shù)的提升,查詢時間明顯增加。

余弦相似度計算相似性

在上面統(tǒng)計詞頻的基礎(chǔ)上,利用前1000個高頻詞匯構(gòu)建每篇文章的特征向量。然后利用余弦相似度計算query詞匯與每篇文章的相似度(tutorial-11assignment3.pdf在github pool目錄下,介紹了如何構(gòu)建特征向量以及余弦相識度計算公式)。
代碼

下面分別用兩組代碼檢測:query: ['flow', 'number', 'layer']的結(jié)果:

結(jié)果now 余弦相似度 結(jié)果before 頻數(shù)
cranfield0050 0.281713 cranfield0329 22.0
cranfield0899 0.271514 cranfield1313 19.0
cranfield1302 0.256463 cranfield0189 16.0
cranfield0335 0.255768 cranfield0089 15.0
cranfield0343 0.254294 cranfield0310 14.0
cranfield0668 0.238295 cranfield0710 13.0
cranfield0192 0.235588 cranfield1351 13.0
cranfield0004 0.234459 cranfield0798 13.0
cranfield0310 0.231961 cranfield1244 13.0
cranfield0089 0.231217 cranfield0996 13.0
  • 耗時
    詞頻統(tǒng)計:0.005005836486816406
    余弦相似: 0.559490442276001
  • 結(jié)論
    兩者方法結(jié)果出入很大,且查詢時間后者是前者的100倍。但根據(jù)余弦相似度計算更科學,例如,A,B兩篇文章都包含共同的查詢詞匯,但是A的詞匯量遠遠高于B,那么A根據(jù)總體詞匯頻數(shù)統(tǒng)計大于B的可能很大,但是這并不是合理的,相反B與query詞匯的相似度才高,利用余弦相似度很好解決了這點。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1 初始文本挖掘 1.1 何為文本挖掘 文本挖掘是指從大量文本數(shù)據(jù)中抽取事先未知的、可理解的、最終可用的知識的過程...
    whenif閱讀 20,057評論 19 78
  • 一. 概率知識回顧 聯(lián)合概率表示兩個事件共同發(fā)生的概率如果兩個事件相互獨立, 則P(x, y) = P(x) · ...
    陳碼工閱讀 2,853評論 2 5
  • 日復(fù)一日,經(jīng)由一種專注,在工作中可以歷練出一種美。 這段日子是很郁悶,很不舒服的狀態(tài)??赡苁巧眢w不適引起的情緒糟糕...
    飛鳥逐溪閱讀 461評論 0 0
  • 濕衣服的水一滴一滴打在嬌弱的草芽兒上,那是一群在枯草里的得以生存的精靈。 人們把草的開始生長看做了春的象征,夏天的...
    念癡閱讀 181評論 0 0
  • video標簽 作用: 播放視頻 格式1: video標簽的屬性: src: 告訴video標簽需要播放的視頻地址...
    Strive_12c4閱讀 533評論 0 0

友情鏈接更多精彩內(nèi)容