Bạn đã bao giờ tự hỏi về một cách nhanh chóng để biết tài liệu đang tập trung vào điều gì chưa? . Liệt kê các từ duy nhất được đề cập trong tài liệu, sau đó kiểm tra xem mỗi từ đã được đề cập bao nhiêu lần [tần suất]. Cách này sẽ cho bạn biết tài liệu chủ yếu nói về cái gì. Nhưng đó sẽ là một công việc rất nhàm chán, chậm chạp và mệt mỏi nếu được thực hiện thủ công. Chúng ta cần một quy trình tự động, phải không?
Có, quy trình tự động sẽ giúp việc này trở nên dễ dàng hơn nhiều. Hãy xem cách chúng ta có thể liệt kê các từ duy nhất khác nhau trong một tệp văn bản và kiểm tra tần suất của từng từ bằng Python
1. Lấy tệp thử nghiệm
Trong hướng dẫn này, chúng tôi sẽ sử dụng thử nghiệm. txt làm tệp thử nghiệm của chúng tôi. Bạn cứ tải về nhưng đừng mở. Hãy làm một trò chơi nhỏ. Văn bản bên trong tệp thử nghiệm này là từ một trong những hướng dẫn của tôi tại Envato Tuts+. Dựa trên tần suất xuất hiện của các từ, hãy đoán xem văn bản này được trích xuất từ hướng dẫn nào của tôi
Hãy bắt đầu trò chơi
Giới thiệu về biểu thức chính quy
Vì chúng tôi sẽ áp dụng một mẫu trong trò chơi của mình, nên chúng tôi cần sử dụng các biểu thức chính quy [regex]. Nếu "biểu thức chính quy" là một thuật ngữ mới đối với bạn, thì đây là một định nghĩa hay từ Wikipedia
Một chuỗi ký tự xác định mẫu tìm kiếm, chủ yếu để sử dụng trong khớp mẫu với chuỗi hoặc khớp chuỗi, i. e. hoạt động giống như "tìm và thay thế". Khái niệm này nảy sinh vào những năm 1950, khi nhà toán học người Mỹ Stephen Kleene chính thức hóa mô tả của một ngôn ngữ thông thường và được sử dụng phổ biến với các tiện ích xử lý văn bản Unix ed, trình soạn thảo và grep, bộ lọc.
Nếu bạn muốn biết thêm về biểu thức chính quy trước khi tiếp tục với hướng dẫn này, bạn có thể xem hướng dẫn khác của tôi Biểu thức chính quy trong Python và quay lại lần nữa để tiếp tục hướng dẫn này
2. Xây dựng chương trình
Hãy từng bước xây dựng trò chơi này. Điều đầu tiên chúng tôi muốn làm là lưu trữ tệp văn bản trong một biến chuỗi
1
document_text = open['test.txt', 'r']
2
text_string = document_text.read[]
Bây giờ, để dễ dàng áp dụng biểu thức chính quy của chúng ta, hãy chuyển tất cả các chữ cái trong tài liệu của chúng ta thành chữ cái viết thường, sử dụng hàm Lower[], như sau
1
text_string = document_text.read[].lower[]
Hãy viết biểu thức chính quy của chúng ta sẽ trả về tất cả các từ có một số ký tự trong phạm vi
document_text = open['test.txt', 'r']16. Bắt đầu từ
document_text = open['test.txt', 'r']17 sẽ giúp tránh những từ mà chúng ta có thể không quan tâm đến tần suất đếm, như if, of, in, v.v. , và những từ dài hơn
document_text = open['test.txt', 'r']18 có thể không phải là từ chính xác. Biểu thức chính quy cho một mẫu như vậy trông như thế này
1
\b[a-z]{3,15}\b
document_text = open['test.txt', 'r']19 có liên quan đến ranh giới từ. Để biết thêm thông tin về ranh giới từ, bạn có thể xem hướng dẫn này
Biểu thức chính quy trên có thể được viết như sau
1
match_pattern = re.search[r'\b[a-z]{3,15}\b', text_string]
Vì chúng tôi muốn xem qua nhiều từ trong tài liệu, chúng tôi có thể sử dụng hàm
document_text = open['test.txt', 'r']20
Trả về tất cả các kết quả khớp mẫu không chồng chéo trong chuỗi, dưới dạng danh sách các chuỗi. Chuỗi được quét từ trái sang phải và kết quả khớp được trả về theo thứ tự tìm thấy. Nếu một hoặc nhiều nhóm có mặt trong mẫu, hãy trả về danh sách các nhóm; . Các trận đấu trống được bao gồm trong kết quả trừ khi chúng chạm vào phần đầu của trận đấu khác
Tại thời điểm này, chúng tôi muốn tìm tần suất của từng từ trong tài liệu. Khái niệm phù hợp để sử dụng ở đây là Python's Dictionaries, vì chúng ta cần các cặp
document_text = open['test.txt', 'r']21, trong đó
document_text = open['test.txt', 'r']22 là từ và
document_text = open['test.txt', 'r']23 biểu thị tần suất xuất hiện của các từ trong tài liệu
Giả sử chúng ta đã khai báo một từ điển rỗng
document_text = open['test.txt', 'r']24, đoạn văn trên sẽ như sau
1
document_text = open['test.txt', 'r']1_______2_______
document_text = open['test.txt', 'r']3
document_text = open['test.txt', 'r']4_______1_______5
Bây giờ chúng ta có thể thấy các khóa của mình bằng cách sử dụng
1
document_text = open['test.txt', 'r']7
Cuối cùng, để lấy được từ và tần suất xuất hiện của từ đó [số lần xuất hiện trong tệp văn bản], chúng ta có thể làm như sau
1
document_text = open['test.txt', 'r']9
22_______1
Hãy kết hợp chương trình trong phần tiếp theo và xem đầu ra trông như thế nào
3. Tổng hợp tất cả
Đã thảo luận từng bước về chương trình, bây giờ chúng ta hãy xem chương trình trông như thế nào
1
23
2
document_text = open['test.txt', 'r']4
26
27
document_text = open['test.txt', 'r']
29
text_string = document_text.read[].lower[]
text_string = document_text.read[]1
text_string = document_text.read[]2
text_string = document_text.read[]3
text_string = document_text.read[]4
document_text = open['test.txt', 'r']1
text_string = document_text.read[]6
document_text = open['test.txt', 'r']3
text_string = document_text.read[]8
document_text = open['test.txt', 'r']5
10
11
12
document_text = open['test.txt', 'r']7
14
15
document_text = open['test.txt', 'r']9
17
21
Nếu bạn chạy chương trình, bạn sẽ nhận được một cái gì đó như sau.
Hãy trở lại trò chơi của chúng ta. Đi qua các tần số từ, bạn nghĩ tệp thử nghiệm [có nội dung từ hướng dẫn Python khác của tôi] đang nói về điều gì?
[Gợi ý. kiểm tra từ với tần suất tối đa]
4. Nhận các từ thông dụng nhất
Trong ví dụ trên, danh sách các từ duy nhất khá nhỏ do mẫu văn bản nhỏ. Vì vậy, chúng tôi có thể chọn từ thường xuyên nhất sau khi lướt qua danh sách tương đối nhanh chóng
Nếu mẫu văn bản khá lớn thì sao? . Dưới đây là một số mã ví dụ lấy các từ được sử dụng thường xuyên nhất từ đoạn trích của Dracula
1
23
2
document_text = open['test.txt', 'r']4
26
27
text_string = document_text.read[].lower[]5
29
text_string = document_text.read[].lower[]
text_string = document_text.read[]1
text_string = document_text.read[]2
text_string = document_text.read[]3
11
text_string = document_text.read[]4
document_text = open['test.txt', 'r']1
text_string = document_text.read[]6
document_text = open['test.txt', 'r']3
text_string = document_text.read[]8
document_text = open['test.txt', 'r']5
10
12
\b[a-z]{3,15}\b0
14
15
\b[a-z]{3,15}\b3
17
11
\b[a-z]{3,15}\b6
\b[a-z]{3,15}\b7
\b[a-z]{3,15}\b8
\b[a-z]{3,15}\b9
Tôi nhận được danh sách các từ sau khi thực hiện chương trình
5. Loại trừ các từ cụ thể khỏi số đếm
Bạn thường có thể mong đợi từ phổ biến nhất trong bất kỳ đoạn văn bản lớn nào là từ "the". Bạn có thể loại bỏ những từ đệm không mong muốn như vậy để phân tích văn bản tốt hơn bằng cách tạo danh sách đen và chỉ thêm từ vào từ điển của bạn nếu chúng không có trong danh sách đen
1
23
2
document_text = open['test.txt', 'r']4
26
27
text_string = document_text.read[].lower[]5
29
text_string = document_text.read[].lower[]
text_string = document_text.read[]1
text_string = document_text.read[]2
text_string = document_text.read[]3
text_string = document_text.read[]4
match_pattern = re.search[r'\b[a-z]{3,15}\b', text_string]3
text_string = document_text.read[]6
11
text_string = document_text.read[]8
document_text = open['test.txt', 'r']1
10
match_pattern = re.search[r'\b[a-z]{3,15}\b', text_string]9
12
document_text = open['test.txt', 'r']01
14
document_text = open['test.txt', 'r']03
15
17
\b[a-z]{3,15}\b0
\b[a-z]{3,15}\b6
\b[a-z]{3,15}\b8
\b[a-z]{3,15}\b3
document_text = open['test.txt', 'r']10
11
document_text = open['test.txt', 'r']12
\b[a-z]{3,15}\b7
document_text = open['test.txt', 'r']14
\b[a-z]{3,15}\b9
Đây là kết quả sau khi chạy đoạn mã trên trên cùng một tệp
Suy nghĩ cuối cùng
Trong hướng dẫn này, chúng ta đã học cách lấy tần suất của các từ trong một mẫu văn bản bằng cách sử dụng một chương trình Python đơn giản. Chúng tôi cũng đã sửa đổi mã gốc để nhận danh sách các từ thường dùng nhất hoặc chỉ nhận các từ không có trong danh sách đen của chúng tôi. Hy vọng rằng bây giờ bạn có thể cập nhật chương trình theo nhu cầu cá nhân của riêng bạn để phân tích bất kỳ đoạn văn bản nào