Có gói nào cho R cho phép truy vấn Wikipedia (hầu hết có thể sử dụng API Mediawiki) để nhận danh sách các bài viết có liên quan đến truy vấn đó, cũng như nhập các bài viết được chọn để khai thác văn bản không?Làm cách nào để truy cập Wikipedia từ R?
Trả lời
Sử dụng gói RCurl
để truy xuất lại thông tin và gói XML
hoặc RJSONIO
để phân tích cú pháp phản hồi.
Nếu bạn ở sau proxy, hãy đặt tùy chọn của bạn.
opts <- list(
proxy = "136.233.91.120",
proxyusername = "mydomain\\myusername",
proxypassword = 'whatever',
proxyport = 8080
)
Sử dụng chức năng getForm
để truy cập the API.
search_example <- getForm(
"http://en.wikipedia.org/w/api.php",
action = "opensearch",
search = "Te",
format = "json",
.opts = opts
)
Phân tích kết quả.
fromJSON(rawToChar(search_example))
Tôi đang gặp vấn đề với việc sử dụng điều này cho một số cụm từ tìm kiếm, nhưng tôi nghi ngờ điều đó là sự cố với mạng tôi đang truy cập. Tôi cần tình nguyện viên để kiểm tra mã mẫu với các chuỗi khác nhau trong tham số 'tìm kiếm'. –
Có WikipediR
, 'Một wrapper MediaWiki API trong R'
library(devtools)
install_github("Ironholds/WikipediR")
library(WikipediR)
Nó bao gồm các chức năng:
ls("package:WikipediR")
[1] "wiki_catpages" "wiki_con" "wiki_diff" "wiki_page"
[5] "wiki_pagecats" "wiki_recentchanges" "wiki_revision" "wiki_timestamp"
[9] "wiki_usercontribs" "wiki_userinfo"
Ở đây nó đang được sử dụng, nhận được các chi tiết đóng góp và sử dụng chi tiết cho một nhóm người dùng:
library(RCurl)
library(XML)
# scrape page to get usernames of users with highest numbers of edits
top_editors_page <- "http://en.wikipedia.org/wiki/Wikipedia:List_of_Wikipedians_by_number_of_edits"
top_editors_table <- readHTMLTable(top_editors_page)
very_top_editors <- as.character(top_editors_table[[3]][1:5,]$User)
# setup connection to wikimedia project
con <- wiki_con("en", project = c("wikipedia"))
# connect to API and get last 50 edits per user
user_data <- lapply(very_top_editors, function(i) wiki_usercontribs(con, i))
# and get information about the users (registration date, gender, editcount, etc)
user_info <- lapply(very_top_editors, function(i) wiki_userinfo(con, i))
Bạn có thể thấy những điều sau hữu ích: http://www.ragtag.info/2011/feb/10/processing-every-wikipedia-article/ – James