2012-11-30 19 views
47

Tôi đã thử sử dụng tm_map. Nó đưa ra lỗi sau. Làm sao để tôi có được xung quanh này?Lỗi khi chuyển văn bản thành chữ thường với tm_map (..., hãy tha thứ)

require(tm) 
byword<-tm_map(byword, tolower) 

Error in UseMethod("tm_map", x) : 
    no applicable method for 'tm_map' applied to an object of class "character" 
+2

gói là gì 'tm_map' từ? Điều này dường như phụ thuộc vào một số gói không phải cơ sở. Vui lòng xem xét bao gồm câu lệnh 'library' để hoàn thành. –

+1

@DanielKrizian: 'tm_map()' là từ gói 'tm' và' tolower() 'là từ' base' – smci

Trả lời

101

Sử dụng cơ sở R chức năng tolower():

tolower(c("THE quick BROWN fox")) 
# [1] "the quick brown fox" 
+0

Cảm ơn. Nhưng bất kỳ cái nhìn sâu sắc nào về lý do tại sao tôi nhận được lỗi đó? Tôi có thể cần phải sử dụng các ứng dụng tm_map khác! – jackStinger

+0

Tệp trợ giúp cho 'tm_map' (trong gói' tm') hiển thị danh sách hàm chuyển đổi có thể sử dụng và 'tolower' không phải là một trong số chúng. Các phép biến đổi dường như là các phương thức S3 hoạt động trên các đối tượng của lớp 'Corpus'. Vì vậy, bạn không thể sử dụng bất kỳ hàm nào với 'tm_map'. – bdemarest

3
myCorpus <- Corpus(VectorSource(byword)) 
myCorpus <- tm_map(myCorpus , tolower) 

print(myCorpus[[1]]) 
+9

Bạn nên bọc 'tolower' vào bên trong' content_transformer' để không làm hỏng đối tượng 'VCorpus', như:' tm_map (myCorpus, content_transformer (tolower)) ' – daroczig

+0

@daroczig: Hãy làm cho câu trả lời đó thành một câu trả lời! – smci

+0

@smci cảm ơn ý tưởng, tôi vừa gửi nhận xét ở trên làm câu trả lời mới bên dưới :) – daroczig

1

sử dụng ToLower theo cách này có tác dụng phụ không mong muốn: nếu bạn cố gắng để tạo ra một ma trận tài liệu dài ra khỏi corpus sau, nó sẽ thất bại. Điều này là do sự thay đổi gần đây trong tm không thể xử lý kiểu trả về của người cho phép. Thay vào đó, sử dụng:

myCorpus <- tm_map(myCorpus, PlainTextDocument) 
6

Mở rộng comment đến một câu trả lời chi tiết hơn của tôi ở đây: bạn phải quấn tolower bên trong content_transformer không vít lên đối tượng VCorpus - một cái gì đó như:

> library(tm) 
> data('crude') 
> crude[[1]]$content 
[1] "Diamond Shamrock Corp said that\neffective today it had cut its contract prices for crude oil by\n1.50 dlrs a barrel.\n The reduction brings its posted price for West Texas\nIntermediate to 16.00 dlrs a barrel, the copany said.\n \"The price reduction today was made in the light of falling\noil product prices and a weak crude oil market,\" a company\nspokeswoman said.\n Diamond is the latest in a line of U.S. oil companies that\nhave cut its contract, or posted, prices over the last two days\nciting weak oil markets.\n Reuter" 
> tm_map(crude, content_transformer(tolower))[[1]]$content 
[1] "diamond shamrock corp said that\neffective today it had cut its contract prices for crude oil by\n1.50 dlrs a barrel.\n the reduction brings its posted price for west texas\nintermediate to 16.00 dlrs a barrel, the copany said.\n \"the price reduction today was made in the light of falling\noil product prices and a weak crude oil market,\" a company\nspokeswoman said.\n diamond is the latest in a line of u.s. oil companies that\nhave cut its contract, or posted, prices over the last two days\nciting weak oil markets.\n reuter" 
Các vấn đề liên quan