R中URL中每个单词的行频率
Row-wise frequency of every word in URL in R
我对编程还很陌生,我的大学项目需要一些 R 编程方面的帮助。我想创建一个 table 每个词的频率。输入文件有大约 70000 行数据,例如 ID 和该 ID 用户访问的 webURL,在 csv 中用逗号分隔 file:For 示例:
ID URLs
m7fdn privatkunden:handys, tablets, tarife:vorteile & services:ausland & roaming,privatkunden:hilfe:mehr hilfe:ger,privatkunden:hilfe:service-themen:internet dsl & ltekonfigurieren
9ufdf mein website:kontostand & rechnung:meinerechnung:6-monate-übersicht zu ihrer rufnummer,mein website:kontostand & rechnung:meinerechnung:kosten
09nd7 404 <https://www.website.de/ussa/login/login.ftel?errorcode=2001&name=%20&goto=https%3a%,mein website:login online user:show form:login.ftel / login),mobile,mobile:meinwebsite:kundendaten (mydata.html),mobile:meinwebsite:startseite (index.html),privatkunden:home,privatkunden:meinwebsite:login.ftel
下面的代码已经从 URL 中删除了所有特殊字符,并给出了整个文档中使用的单词的频率。但我不希望它一次用于整个文档。我想要每行一个输出。
text <- readLines("sample.csv")
docs <- Corpus(VectorSource(text))
inspect(docs)
toSpace <- content_transformer(function (x , pattern)gsub(pattern, " ", x))
docs <- tm_map(docs, toSpace, "/")
docs <- tm_map(docs, toSpace, "@")
docs <- tm_map(docs, toSpace, ",")
docs <- tm_map(docs, toSpace, ";")
docs <- tm_map(docs, toSpace, "://")
docs <- tm_map(docs, toSpace, ":")
docs <- tm_map(docs, toSpace, "<")
docs <- tm_map(docs, toSpace, ">")
docs <- tm_map(docs, toSpace, "-")
docs <- tm_map(docs, toSpace, "_")
docs <- tm_map(docs, toSpace, "://")
docs <- tm_map(docs, toSpace, "&")
docs <- tm_map(docs, toSpace, ")")
docs <- tm_map(docs, toSpace, "%")
dtm <- TermDocumentMatrix(docs)
m <- as.matrix(dtm)
v <- sort(rowSums(m),decreasing=TRUE)
d <- data.frame(word = names(v),freq=v)
我得到的输出如下:
word freq
mein mein 1451
website website 1038
privatkunden privatkunden 898
meinwebsite meinwebsite 479
rechnung rechnung 474
我想要的输出应该是这样的:
ID privatkunden website hilfe rechnung kosten
m7fdn 4 7 2 7 0
9ufdf 3 1 9 3 5
09nd7 5 7 2 8 9
以上table表示ID m7fdn在其URL中有4次privatkunden和2次hilfe等。上面的table只是为了示例,不计算确切的单词。这个 table 只要有多少个单词就可以。请帮我得到这个输出。一旦我得到这个 table 我必须应用机器学习。
我觉得这里有两点值得一提:
1) 读取您的数据:
text <- readLines("sample.csv")
给你一个向量,text[1]
是你数据的 full 第一行,text[2]
是 full 你的数据的第二行等等。
VectorSource
需要的是只有 URL 列的一列。使用 read.table
或例如这个:
require(tidyr)
text <- readLines("1.txt")
text <- data.frame(a=text[-1]) %>% separate(a, c("ID", "URLs"), sep=6)
2) 在 tm
中使用您的数据
通过以下方式使您的网址成为语料库:
docs <- Corpus(VectorSource(text$URLs))
names(docs) <- text$ID
现在你做你的 tm_map
转换...最后你做:
dtm <- DocumentTermMatrix(docs)
好了:
> as.matrix(dtm[1:3,1:5])
Terms
Docs (index.html (mydata.html 404 ã¼bersicht ausland
m7fdn 0 0 0 0 1
9ufdf 0 0 0 1 0
09nd7 1 1 1 0 0
我对编程还很陌生,我的大学项目需要一些 R 编程方面的帮助。我想创建一个 table 每个词的频率。输入文件有大约 70000 行数据,例如 ID 和该 ID 用户访问的 webURL,在 csv 中用逗号分隔 file:For 示例:
ID URLs
m7fdn privatkunden:handys, tablets, tarife:vorteile & services:ausland & roaming,privatkunden:hilfe:mehr hilfe:ger,privatkunden:hilfe:service-themen:internet dsl & ltekonfigurieren
9ufdf mein website:kontostand & rechnung:meinerechnung:6-monate-übersicht zu ihrer rufnummer,mein website:kontostand & rechnung:meinerechnung:kosten
09nd7 404 <https://www.website.de/ussa/login/login.ftel?errorcode=2001&name=%20&goto=https%3a%,mein website:login online user:show form:login.ftel / login),mobile,mobile:meinwebsite:kundendaten (mydata.html),mobile:meinwebsite:startseite (index.html),privatkunden:home,privatkunden:meinwebsite:login.ftel
下面的代码已经从 URL 中删除了所有特殊字符,并给出了整个文档中使用的单词的频率。但我不希望它一次用于整个文档。我想要每行一个输出。
text <- readLines("sample.csv")
docs <- Corpus(VectorSource(text))
inspect(docs)
toSpace <- content_transformer(function (x , pattern)gsub(pattern, " ", x))
docs <- tm_map(docs, toSpace, "/")
docs <- tm_map(docs, toSpace, "@")
docs <- tm_map(docs, toSpace, ",")
docs <- tm_map(docs, toSpace, ";")
docs <- tm_map(docs, toSpace, "://")
docs <- tm_map(docs, toSpace, ":")
docs <- tm_map(docs, toSpace, "<")
docs <- tm_map(docs, toSpace, ">")
docs <- tm_map(docs, toSpace, "-")
docs <- tm_map(docs, toSpace, "_")
docs <- tm_map(docs, toSpace, "://")
docs <- tm_map(docs, toSpace, "&")
docs <- tm_map(docs, toSpace, ")")
docs <- tm_map(docs, toSpace, "%")
dtm <- TermDocumentMatrix(docs)
m <- as.matrix(dtm)
v <- sort(rowSums(m),decreasing=TRUE)
d <- data.frame(word = names(v),freq=v)
我得到的输出如下:
word freq
mein mein 1451
website website 1038
privatkunden privatkunden 898
meinwebsite meinwebsite 479
rechnung rechnung 474
我想要的输出应该是这样的:
ID privatkunden website hilfe rechnung kosten
m7fdn 4 7 2 7 0
9ufdf 3 1 9 3 5
09nd7 5 7 2 8 9
以上table表示ID m7fdn在其URL中有4次privatkunden和2次hilfe等。上面的table只是为了示例,不计算确切的单词。这个 table 只要有多少个单词就可以。请帮我得到这个输出。一旦我得到这个 table 我必须应用机器学习。
我觉得这里有两点值得一提:
1) 读取您的数据:
text <- readLines("sample.csv")
给你一个向量,text[1]
是你数据的 full 第一行,text[2]
是 full 你的数据的第二行等等。
VectorSource
需要的是只有 URL 列的一列。使用 read.table
或例如这个:
require(tidyr)
text <- readLines("1.txt")
text <- data.frame(a=text[-1]) %>% separate(a, c("ID", "URLs"), sep=6)
2) 在 tm
中使用您的数据
通过以下方式使您的网址成为语料库:
docs <- Corpus(VectorSource(text$URLs))
names(docs) <- text$ID
现在你做你的 tm_map
转换...最后你做:
dtm <- DocumentTermMatrix(docs)
好了:
> as.matrix(dtm[1:3,1:5])
Terms
Docs (index.html (mydata.html 404 ã¼bersicht ausland
m7fdn 0 0 0 0 1
9ufdf 0 0 0 1 0
09nd7 1 1 1 0 0