2013-06-07 33 views
6

Tôi có một tập hợp gồm 26 tệp văn bản thuần túy, mỗi tệp từ 12 - 148kb, tổng cộng 1,2Mb. Tôi đang sử dụng R trên máy tính xách tay Windows 7.Kích thước hợp lý tối đa cho stemCompletion trong tm?

Tôi đã làm tất cả các công cụ dọn dẹp thông thường (từ dừng, mật khẩu tùy chỉnh, chữ thường, số) và muốn hoàn thành phần gốc. Tôi đang sử dụng kho văn bản gốc làm từ điển như trong ví dụ. Tôi đã thử một vài vectơ đơn giản để chắc chắn rằng nó sẽ làm việc ở tất cả (với khoảng 5 thuật ngữ) và nó đã làm và rất nhanh chóng.

exchanger <- function(x) stemCompletion(x, budget.orig) 
budget <- tm_map(budget, exchanger) 

Nó đã hoạt động từ hôm qua lúc 4 giờ chiều! Trong R Studio theo chẩn đoán, nhật ký yêu cầu hiển thị các yêu cầu mới với các số yêu cầu khác nhau. Trình quản lý tác vụ hiển thị nó bằng cách sử dụng một số bộ nhớ, nhưng không phải là số tiền điên rồ. Tôi không muốn dừng lại bởi vì nếu gần như ở đó thì sao? Bất kỳ ý tưởng nào khác về cách kiểm tra tiến độ - đó là một kho dữ liệu dễ bay hơi, thật không may? Ý tưởng về việc phải mất bao lâu? Tôi đã nghĩ đến việc sử dụng vector tên dtm làm từ điển, cắt bỏ ở mức thường xuyên nhất (hoặc tf-idf cao), nhưng tôi không muốn giết quá trình này.

Đây là một cửa sổ thông thường 7 máy tính xách tay với nhiều thứ khác đang chạy.

Tập tin này có quá lớn đối với stemCompletion không? Ngắn của di chuyển đến Python, là có một cách tốt hơn để làm stemCompletion hoặc lemmatize phó gốc - tìm kiếm web của tôi đã không mang lại bất kỳ câu trả lời.

Trả lời

1

tôi không thể cung cấp cho bạn một câu trả lời rõ ràng không có dữ liệu mà tái tạo vấn đề của bạn, nhưng tôi sẽ đoán nút cổ chai xuất phát từ dòng folllowing từ mã nguồn stemCompletion:

possibleCompletions <- lapply(x, function(w) grep(sprintf("^%s", w), dictionary, value = TRUE)) 

Sau đó, đưa cho bạn' đã giữ heuristic hoàn thành vào mặc định là "phổ biến", điều này xảy ra:

possibleCompletions <- lapply(possibleCompletions, function(x) sort(table(x), decreasing = TRUE)) 
structure(names(sapply(possibleCompletions, "[", 1)), names = x) 

đó dòng đầu tiên vòng qua mỗi từ trong corpus và kiểm tra nó chống lại từ điển của bạn cho hoàn tất có thể của bạn. Tôi đoán bạn có nhiều từ xuất hiện nhiều lần trong kho văn bản của bạn. Điều đó có nghĩa là chức năng này được gọi nhiều lần chỉ để đưa ra cùng một phản hồi. Một phiên bản có thể nhanh hơn (tùy thuộc vào có bao nhiêu từ là lặp đi lặp lại và mức độ thường xuyên được lặp lại) sẽ giống như thế này:

y <- unique(x) 

possibleCompletions <- lapply(y, function(w) grep(sprintf("^%s", w), dictionary, value = TRUE)) 

possibleCompletions <- lapply(possibleCompletions, function(x) sort(table(x), decreasing = TRUE)) 

z <- structure(names(sapply(possibleCompletions, "[", 1)), names = y) 

z[match(x, names(z))] 

Vì vậy, nó chỉ vòng qua các giá trị độc đáo của x chứ không phải tất cả các giá trị của x. Để tạo ra phiên bản sửa đổi mã này, bạn sẽ cần phải tải xuống mã nguồn từ CRAN và sửa đổi hàm (tôi đã tìm thấy nó trong hoàn thành.R trong thư mục R).

Hoặc bạn có thể chỉ muốn sử dụng Python cho cái này.

+0

cảm ơn vì câu trả lời này - không thoải mái khi làm rối tung nguồn ... nhưng tôi có thể đặt các lệnh này trong một tập lệnh trong cửa sổ tập lệnh của RStudio không? Tôi đoán chỉ khi tôi đặt toàn bộ nguồn vào, về cơ bản giống như chỉnh sửa nguồn và lưu? – ChristinaP

+0

Bạn hoàn toàn đúng. Sao chép toàn bộ chức năng ra khỏi nguồn vào một tập lệnh riêng và sau đó thực hiện các chỉnh sửa của bạn. Mỗi khi bạn cần sử dụng nó, tải gói, sau đó tải chức năng tùy chỉnh của bạn để thay thế những gì đã được tải từ gói. – SchaunW

0

Cristina, theo Schaun Tôi khuyên bạn nên chỉ sử dụng từ duy nhất để áp dụng cụm từ gốc. Tôi có nghĩa là, thật dễ dàng cho PC của bạn hoàn thành trong những từ độc đáo của bạn, họ thực hiện việc hoàn thành trong tất cả các kho của bạn (với tất cả các lần lặp lại).

  1. Trước hết, lấy các từ duy nhất từ ​​kho văn bản của bạn.Đối với exemplo:

    độc đáo $ text < - độc đáo (ngân sách)

  2. Them, bạn có thể nhận được những lời độc đáo từ văn bản gốc của bạn

    unique_budget.orig < - độc đáo (budget.orig)

  3. Bây giờ, bạn có thể áp dụng stemcomplection các từ unieque bạn

    độc đáo $ completition < - ngân sách%>% stemCompletion (từ điển = unique_ budget.orig)

  4. Bây giờ bạn có một đối tượng có tất cả các từ trong kho văn bản của bạn và phần hoàn thành của chúng. bạn chỉ cần áp dụng một kết hợp giữa kho văn bản của bạn và đối tượng duy nhất. Hãy chắc chắn rằng cả hai đối tượng có cùng một tên biến cho các từ mà không có sự hoàn thành: gonne này là chìa khóa.

Điều này sẽ giảm số lượng hoạt động mà PC của bạn phải làm.

Các vấn đề liên quan