作者celestialgod (攸蓝)
看板R_Language
标题Re: [问题] text mining 长词优先
时间Thu Jul 23 10:53:26 2015
看一下 是不是你想要的
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://webptt.com/cn.aspx?n=bbs/R_Language/M.1437620009.A.1B1.html
2F:→ john5601: 还是不太懂第二个回圈该怎麽做07/23 15:57
等一下再重新确认一下程式
我测试的结果是你的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
3F:推 john5601: 没错 我应该要单词跟双词分开後,先取双词的前几趴的词 07/23 19:06
4F:→ john5601: 之後再跟单词的结果作计算 07/23 19:07