Re: [問題] text mining 長詞優先

看板R_Language作者 (攸藍)時間9年前 (2015/07/23 10:53), 9年前編輯推噓2(202)
留言4則, 1人參與, 最新討論串2/2 (看更多)
看一下 是不是你想要的 long = grep("\\s", names(v)) short = setdiff(1:length(v), long) for (i in long) { words = strsplit(names(v[i]), "\\s")[[1]] for (j in 1:length(words)) v[short][names(v[short]) == words[j]] = v[short][names(v[short]) == words[j]] - v[i] } 第二個迴圈可以用match做,並且省略short這個變數,這個你可以自己嘗試 code可以這樣改 long = grep("\\s", names(v)) for (i in long) { words = strsplit(names(v[i]), "\\s")[[1]] loc = na.omit(match(words, names(v))) v[loc] = v[loc] - v[i] } 不用迴圈的作法: twoWords = do.call(rbind, strsplit(names(v[long]), "\\s")) s = tapply(rep(v[long],2), twoWords, sum) loc = match(names(s), names(v)) v[loc] = v[loc] - s 你可以自己查看 s 跟 v[loc] 總數是有出入的 所以麻煩你確認一下你的雙詞跟單詞次數是否有誤 我後來想到你這個問題是 你雙詞會擷取前後,所以會有兩倍的單詞在雙詞中計入 你可能要自己去考慮這問題的解決方式 ※ 引述《john5601 (HTC ONE年不變)》之銘言: : 目前在作英文的文字探勘,已經可以分別算出單詞和雙詞的結果 : 舉例 : : "Information management" 在文章中出現3次 : "Information"在文章中出現5次 : "management"在文章中出現6次 : 但因為想要長詞優先,所以"management"和"Information"的次數要分別減3次 : http://imgur.com/jAjrZxK
: 以上為跑出的結果 不知道該如何達成這樣的作法 : 懇請前輩大大指導 : [程式範例]: : http://pastebin.com/27rXYuQp 程式碼 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.205.27.107 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1437620009.A.1B1.html

07/23 15:55, , 1F
把c大的執行後結果
07/23 15:55, 1F

07/23 15:57, , 2F
還是不太懂第二個迴圈該怎麼做
07/23 15:57, 2F
等一下再重新確認一下程式 我測試的結果是你的count可能有問題 舉例來說: church顯示的出現次數是13次 可是church的雙詞總共有26次 > v[grep("church", names(v))][-1] church said associ church believ church 2 1 1 church abl church add church continu 1 1 1 church explain church leader church leadership 1 1 1 church misconduct church practic church produc 1 1 1 church scientolog church secret control church 1 1 1 eject church expos church fals church 1 1 1 former church innerwork church insid church 1 1 1 member church nevertheless church news church 1 1 1 respons church 1 > sum(v[grep("church", names(v))][-1]) [1] 26 你可能要確認你的單詞數目是否正確 ※ 編輯: celestialgod (123.205.27.107), 07/23/2015 16:53:30 ※ 編輯: celestialgod (123.205.27.107), 07/23/2015 17:53:25

07/23 19:06, , 3F
沒錯 我應該要單詞跟雙詞分開後,先取雙詞的前幾趴的詞
07/23 19:06, 3F

07/23 19:07, , 4F
之後再跟單詞的結果作計算
07/23 19:07, 4F
文章代碼(AID): #1Li5Sf6n (R_Language)
討論串 (同標題文章)
文章代碼(AID): #1Li5Sf6n (R_Language)