2013-04-14 5 views
1

Вот полный код для извлечения твитов: нагрузка требуется пакетПроблемы замещающие подстроки из разбираемых испанского языка твитов - R 2.15.3

require(XML) 

Давайте получить некоторые твиты о # 18А хэш-тега определяют щебет URL поиска (в соответствии со стандартным атом)

twitter_url = "http://search.twitter.com/search.atom?" 

закодировать запрос

query = URLencode("#18A") 

вектор для хранения результатов

tweets = character(0) 

17 раз разбивать на страницы для сбора твитов

for (page in 1:17) 
{ 
twitter_search = paste(twitter_url, "q=", query, 
"&rpp=100&lang=es&pagegeocode=-34.686173,-58.648529,15mi", page, sep="") 
tmp = xmlParseDoc(twitter_search, asText=F) 
tweets = c(tweets, xpathSApply(tmp, "//s:entry/s:title", 
         xmlValue, namespaces=c('s'='http://www.w3.org/2005/Atom'))) 
} 

print(tweets) 
class(tweets) 

Then, replacing the spanish characters (á, é, í,..) isn't working. 

tweets = gsub("<U\\+00E1>", "a", tweets) 
tweets = gsub("<U\\+00E9>", "e", tweets) 

Мы можем видеть, как результат не является правильным в 1699 твит

print(results[1699]) 

мне удалось " решить "проблему путем изменения кодирования твитов на:

Encoding(tweets) <- "ISO-8859" 

# Replace spanish character with accent for "normal" character 

tweets = gsub("\303\272", "u", tweets) 
tweets = gsub("\303\241", "a", tweets) 
tweets = gsub("\303\255", "i", tweets) 
tweets = gsub("\303\263", "o", tweets) 
tweets = gsub("\303\251", "e", tweets) 
tweets = gsub("\303\271", "u", tweets) 
tweets = gsub("\303\201", "O", tweets) 
tweets = gsub("\303\211", "E", tweets) 
tweets = gsub("\342\234\224", "", tweets) 
tweets = gsub("\302\241", "", tweets) 
tweets = gsub("\302\277", "", tweets) 

Я думаю, должно быть лучшее решение. Интересно, почему изменение кодировки делает работу gsub() и почему она не работает в предыдущих твитах.

R версия 2.15.3 (2013-03-01) Платформа: x86_64-яблочно-darwin9.8.0/x86_64 (64-разрядная версия)

ответ

-1

Ответ я искал чтобы решить проблема полностью заключалась в следующем: просто изменив язык R. Я использовал его на испанском языке, и это стало причиной проблемы кодирования с помощью твитов

Решение было просто запуск этого кода на терминале Mac OSX.

по умолчанию написать org.R-project.R force.LANG en_US.UTF-8

3

В регулярном выражении + знак ахи особый смысл. Вы можете использовать fixed = TRUE аргумент gsub или бежать специальные символы:

tweet = gsub("<U\\+00E9>", "e", tweet) 
tweet = gsub("<U\\+00E1>", "a", tweet) 
tweet = gsub("<U\\+00BF>", "" , tweet) 


## [1] "RT @LuchoBugallo: Quieren una primicia? @CFKArgentina el #18A se va a  #Venezuela. Cual sera el motivo que la moviliza hacer un viaje d ..." 
## [2] "RT @LuchoBugallo: #18A - Ya estan apareciendo las cuentas truchas de militontos, que usan s<U+00F3>lo en epoca de cacerolazos!"     
0

Используется опция fixed = TRUE, потому что + вероятно завинчивания с регулярным выражением:

tweet = gsub("<U+00E9>", "e", tweet, fixed = T) 
tweet = gsub("<U+00E1>", "a", tweet, fixed = T) 
tweet = gsub("<U+00BF>", "" , tweet, fixed = T) 
Смежные вопросы