應用定性數據分析包RQDA(Qualitative Data Analysis)和文挖掘框架包tm結合進行文本挖掘

http://cos.name/cn/topic/102130

 

應用定性數據分析包RQDA(Qualitative Data Analysis)和文挖掘框架包tm結合進行文本挖掘。

在對訪談內容或劇本、小說部分內容進行文本挖掘時,如果用不斷的剪粘保存的方法非常繁瑣而且容易漏掉一些內容。好在黃榮貴開發的RQDA包可以進行文檔管理和內容編碼及提取,大大方便了利用tm包進行文本挖掘,既提高了效率又提高了準確性,下面舉一個小例子:

1、安裝RQDA包、tm包和中文分詞軟件(分詞軟件見下面鏈接);
http://www.pinggu.org/bbs/thread-853290-1-1.html
2、裝載RQDA包並建立一個新的工程項目;

3、輸入相關文本文件;

4、進行編碼和作標記;

5、雙擊想要提取的編碼即可提取相關文本;

6、運行下面下載的程序進行文本提取、轉換、分詞、文本挖掘工作。

> gg <- RQDA2tm("記者" ,mf = FALSE)
> gg
A corpus with 55 text documents
>
------------------------------------------------
> ###  去掉多餘空格  ####
> reuters <- tm_map(gg, stripWhitespace)
> reuters[[1]]
這個也是臨時改的?這兒應該放一個那樣的桌子。
>
------------------------------------------------
> ##  全文搜索   ##
> searchFullText(gg[[1]], "是臨[時]?改")
[1] TRUE
>
------------------------------------------------
> ###  查找以某字開頭、結尾等的詞條  ###
> stemCompletion(gg, c("財", "政", "部"))
                  財                        政                       部
"財政部就是替政府花錢的"                       ""                       ""
------------------------------------------------
> ###  元數據管理  ###
> DublinCore(reuters[[2]], "title") <- "建國60週年"
> meta(reuters[[2]])
Available meta data pairs are:
  Author       :
  DateTimeStamp: 2010-07-15 02:06:27
  Description  :
  Heading      : 建國60週年
  ID           : 2
  Language     : eng
  Origin       :
>
------------------------------------------------
> ###  創建詞條-文件矩陣
>
> dtm <- DocumentTermMatrix(reuters,control = list(minWordLength=2))##最短詞兩個字
> inspect(dtm[1:2, 3:6])
A document-term matrix (2 documents, 4 terms)
Non-/sparse entries: 0/8
Sparsity           : 100%
Maximal term length: 5
Weighting          : term frequency (tf)
    Terms
Docs 10000 12 120 1966
   1     0  0   0    0
   2     0  0   0    0
------------------------------------------------
> ##  操作詞條-文件矩陣  ##
> ##  1、找出最少出現過3次的詞條  ##
> findFreqTerms(dtm, 3)
[1] "政策"
------------------------------------------------
> ##  2、找出與"應該"相關度到少達0.6的詞條  ###
> findAssocs(dtm, "應該", 0.6)
0.11 應該 桌子 臨時
1.0  1.0  1.0  0.7
>
其他看上面的鏈接中的內容,其實生成詞條-文件矩陣後還有許多工作可以做,比如用支持向量機進行文件分類、話題分類、根據話題用詞頻率分析作者所熟悉的行業等等……

民網 >> 時政 >> 時政專題 >> 網友進言

http://politics.people.com.cn/GB/8198/138817/index.html

MetaID fname fid
1 0 公安部答覆本網網友關於輕微交通違法處罰等4問題 1
2 0 公安部答覆本網網友關於駕齡計算、異地購車上牌、老人駕車等8問題 2
3 0 公安部答覆本網網友關於如何轉回農業戶口等3問題 3
4 0 公安部回覆本網網友關於駕駛證年檢被註銷等3問題 4
5 0 公安部回覆人民網網友關於異地繳交通罰款等4問題 5
6 0 公安部回覆人民網網友關於身份證重號錯號等4問題 6

一、出現5次以上的詞條
----------------------------------------------------------------------------
1、根據編碼“網友”分析:

gg <- RQDA2tm("網友" ,mf = TRUE)
> findFreqTerms(dtm, 5)
[1] "駕駛"   "身份證" "問題" 

----------------------------------------------------------------------------
2、根據編碼“公安部迴應”分析:

gg <- RQDA2tm("公安部迴應" ,mf = TRUE)
> findFreqTerms(dtm, 5)
[1] "辦理"   "部門"   "公安"   "管理"   "規定"   "機動車" "機關"   "交通"
[9] "安全"   "不得"   "車輛"   "道路"   "駕駛"   "駕駛證" "汽車"   "實施"
[17] "使用"   "小型"   "營運"   "載貨"   "載客"   "證明"   "工作"   "法律"
[25] "公民"   "居民"   "社會"   "身份"   "身份證" "條件"   "相關"   "行爲"
[33] "證件"   "措施"   "違法"   "應當"   "公安部" "信息" 

**************************************************************
二、找出與“駕駛”相關達70%以上的詞條
----------------------------------------------------------------------------
1、根據編碼“網友”分析:

> findAssocs(dtm, "駕駛", 0.7)
  駕駛 公安部   能否   規定   駕照   汽車
  1.00   0.87   0.80   0.79   0.78   0.72
----------------------------------------------------------------------------
2、根據編碼“公安部迴應”分析:

> findAssocs(dtm, "駕駛", 0.7)
  駕駛   需要   期限   證明   小型   法律   使用   中型 駕駛證   依法   檢查
  1.00   0.95   0.90   0.86   0.84   0.83   0.80   0.79   0.77   0.77   0.75
  有效   超過
  0.75   0.72
**************************************************************
MetaID fname fid
1 0 公安部答覆本網網友關於輕微交通違法處罰等4問題 1
2 0 公安部答覆本網網友關於駕齡計算、異地購車上牌、老人駕車等8問題 2
3 0 公安部答覆本網網友關於如何轉回農業戶口等3問題 3
4 0 公安部回覆本網網友關於駕駛證年檢被註銷等3問題 4
5 0 公安部回覆人民網網友關於異地繳交通罰款等4問題 5
6 0 公安部回覆人民網網友關於身份證重號錯號等4問題 6

對上面的數據改爲將每條迴應爲研究對象進行文檔聚類分析,結果如下:

綜合上面兩種聚類分析可以判斷:公安部負責對人民網網民進行迴應的工作人員有兩名,因爲每個人的寫作用詞習慣是比較固定的。

 

  1. 對三位房地產大佬在搜房網博客近期文章的分析:
  2. 搜房網博客鏈接:
    潘石屹
    http://blog.soufun.com/blog_132261.htm
    王石
    http://blog.soufun.com/blog_1525150.htm
    任志強
    http://blog.soufun.com/blog_1796106.htm
  3. 標題:
  4. > txt
      MetaID                          fname fid ID
    1      0  穿越“鬼門關”登山者視界4(王)   3  1
    2
          0       美麗的建築網友交流42(王)   7  2
    3
          0 如何瞭解日本民族網上交流43(王)   8  3
    > txt
      MetaID                            fname fid ID
    1      0   從發改委的文件看政策的變化(任)   4  1
    2
          0                   該不該降價(任)   6  2
    3
          0                 聽老柳侃管理(任)  11  3
    4
          0 穩定、明確的政策預期更爲重要(任)  12  4
    5
          0   先拆還是先建,這是一門藝術(任)  13  5
    6
          0   幸福指數——再次寫給八零後(任)  16  6
    > txt
       MetaID                                                 fname fid ID
    1       0                      IPAD現象預示了社會結構的變化(潘)   1  1
    2
           0                              SOHO中國進駐上海外灘(潘)   2  2
    3
           0                        房地產業要做受人尊重的行業(潘)   5  3
    4
           0                商業地產與住房是兩個完全不同的市場(潘)   9  4
    5
           0                              世界正經歷分娩之陣痛(潘)  10  5
    6
           0                現在中國房地產市場上“尖叫”聲一片(潘)  14  6
    7
           0                                信仰改變了我的生命(潘)  15  7
    8
           0               銀河SOHO和光華路SOHO2通過LEED預認證(潘)  17  8
    9
           0                     銀河SOHO開盤三天銷售46.75億元(潘)  18  9
    10
          0 致《酥油》作者: 你的愛和我們的感受構成世界的力量(潘)  19 10
    >
  5.  
  6. 結果:
  7. > ##  任志強最喜歡的用詞:
    > inspect(dtm_rzq[,j])
    A document-term matrix (6 documents, 10 terms)
    Non-/sparse entries: 41/19
    Sparsity           : 32%
    Maximal term length: 2
    Weighting          : term frequency (tf)
        Terms
    Docs 價格 企業 租賃 發展 改革 沒有 社會 一代 知道 中國
       1    0    1    5    4    7    0    3    0    0    6
       2   31    2    0    3    1    7    4    0    4   15
       3    0   42    0    4    0    5    4    0    0    2
       4    9    1    0    0    0    7    4    0    3    4
       5    1    0   25    3    0    6    4    0    2    4
       6    1    5    0   25   48   30   55   41   35   51

    > ##  潘石屹最喜歡的用詞:
    > inspect(dtm_psy[,j])
    A document-term matrix (10 documents, 9 terms)
    Non-/sparse entries: 49/41
    Sparsity           : 46%
    Maximal term length: 4
    Weighting          : term frequency (tf)
        Terms
    Docs 一個 商業 上海 外灘 項目 房地產 市場 土地 soho
      1    17   12    0    0    0      4    4    1    1
      2     6   17   15   27   21      1    2    2    6
      3     8    0    0    0    2     11    2   10    0
      4     6   16    0    0    2      0    5    0   13
      5    10    2    0    0    6      0    0    0    9
      6     5    4    3    0    1     17   37   15    0
      7     5    0    0    0    1      0    1    0    0
      8     1    0    0    0    8      0    0    0    7
      9     1   15    0    0    4      0    9    0   18
      10    7    0    0    0    0      0    0    1    0
    > ##  王石最喜歡的用詞
    > inspect(dtm_ws[,j])
    A document-term matrix (3 documents, 16 terms)
    Non-/sparse entries: 17/31
    Sparsity           : 65%
    Maximal term length: 2
    Weighting          : term frequency (tf)
        Terms
    Docs 冰川 穿越 攀登 融化 珠峯 處理 東京 焚燒 垃圾 等級 瞭解 日本 喜歡 相撲
       1   18    6    4    8    4    0    0    0    0    0    0    0    0    0
       2    0    0    0    0    0    4    4    8   11    0    0    1    0    0
       3    0    0    0    0    0    0    0    0    0    4    4    7    4   10
        Terms
    Docs 運動 秩序
       1    0    0
       2    0    0
       3    4    6
  8.  
  9. 由此看來王石仍然在到處玩兒,怪不得從萬科A到萬科B,再到萬科債券08G1、08G2都跌的一塌糊塗。
    任志強的興趣仍在研究國家政策,憂國憂民啊!
    老潘的工作重點已經轉到上海的商業地產了。
  10. 1 年 前回復 # 回覆
  1. bensonwu

    新手上路
    註冊於: 2009/05/21
    發帖數: 11

    好吧,現在再用支持向量機的方法對上面的數據建模,看是否能分辨出某些話是誰說的:

    > library(e1071)
    > ##  生成訓練用的數據   ##

    ………………
    > tt <- rbind(tt,tt1)
    >
    > tt[is.na(tt)]<-0
    > tt[,"作者"] <- factor(tt[,"作者"])
    > model <- svm(作者 ~ ., data = tt[c(1:4,7:14,17:18),], kernel = "sigmoid")
    > summary(model)
    Call:
    svm(formula = 作者 ~ ., data = tt[c(1:4, 7:14, 17:18), ], kernel = "sigmoid")

    Parameters:
       SVM-Type C-classification
    SVM-Kernel sigmoid
           cost1
          gamma0.01666667
         coef.00
    Number of Support Vectors 10
    ( 4 4 2 )

    Number of Classes3
    Levels:
    潘石屹 任志強 王石
    > ##   模型擬合測試  ##
    > ##  訓練集(樣本內)擬合     ##
    > pred <- predict(model, tt[c(1:4,7:14,17:18),1:length(hh)])
    > table(pred, tt[c(1:4,7:14,17:18),"作者"])

    pred     潘石屹 任志強 王石
      潘石屹      7      0    0
      任志強      1      4    0
      王石        0      0    2
    > ##  測試集(樣本外)預測     ##
    > pred <- predict(model, tt[c(5:6,15:16,19),1:length(hh)])
    > table(pred, tt[c(5:6,15:16,19),"作者"])

    pred     潘石屹 任志強 王石
      潘石屹      2      0    0
      任志強      0      2    0
      王石        0      0    1

    訓練集中有一個錯的,但預測集中全中。
    *******************************************************
    哪麼隨機找兩段他們的話看能判斷出嗎?

    >
    > test <- c("昨天休息了一天,駐地村子現在很大,二年前很小,自首位成功登上珠穆朗瑪峯的探險家埃德蒙.希拉里組織義工建立學校醫療診所,當地條件開始顯著改善,目前這裏三分之一的當地人已經移民國外,境外一些人士建立了一些家庭小旅館,衛生條件不錯,新西蘭獅子會建立了一家小衛生所,以改善當地的醫療條件。這些讓我體會到登山這項運動對當地生活條件改善的有益影響。")
    >
    ………………
    > tt1[,c(test_h)] <- test_tt[,c(test_h)]
    > tt1[is.na(tt1)]<-0
    > predict(model, tt1)
       1
    王石
    Levels: 潘石屹 任志強 王石
    >
    對了,是《珠峯零公里口述之四 (2010-4-9 16:06:22)》中的一段話。
    ++++++++++++++++++++++++++++++++++++++++
    > test <- c("2007年出臺的“第二套住房的信貸”新政,讓中國的房地產市場調頭直下,在“兩防”的政策推力和美國的金融危機雙重作用之下,讓中國的宏觀經濟也隨之調頭直下,GDP快速下降到6.3%,從而讓中國政府不得不用四萬億元投資、放量的貨幣信貸和解封“第二套住房信貸”改爲0.7倍信貸降息和對改善性住房(實際的第二套)信貸給以支持,才讓中國的房地產和宏觀經濟從谷底翻轉恢復到保八之上。
    + "
    )
    ……………………
    > tt1[,c(test_h)] <- test_tt[,c(test_h)]
    > tt1[is.na(tt1)]<-0
    > predict(model, tt1)
         1
    任志強
    Levels: 潘石屹 任志強 王石
    >
    也對了,是《何需分清幾套房 (2010-4-29 9:38:52) 》中的一段話

    1 年 前回復 # 回覆
  1. bensonwu

    新手上路
    註冊於: 2009/05/21
    發帖數: 11

    那麼下面這段文字是誰寫的呢?

    test <- c("經常有人問我第一桶金怎麼來的,從哪裏得到的,有多少。其實每次有人問我這個問題時,我都想說,人的第一桶金是自信。即使你沒錢也不要怕,自信就是你的資本。也有人在自信前面加了一個不好的修飾語,叫盲目自信,我不太愛聽。我說過很多次自我的害處,但我認爲與自我有點關係的不多的好東西之一,就是自信。自信當然有自我意識,還有信,相信的信。相信,是正面的、健康的。要相信自己。一個相信自己的人才會相信他人,相信未來。")

    > predict(model, tt1)
         1
    潘石屹
    Levels: 潘石屹 任志強 王石

    太神奇了!潘石屹——《自信是人生第一桶金》的一段。見下面的鏈接:

    http://www.pinggu.org/bbs/thread-863705-1-1.html

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章