Hướng dẫn nltk wordnet python
Trong bài đăng này, chúng tôi sẽ nói về xử lý ngôn ngữ tự nhiên (NLP) bằng Python. Hướng dẫn NLP này sẽ sử dụng thư viện Python NLTK. NLTK là một thư viện Python phổ biến được sử dụng cho NLP. Show
Vậy NLP là gì? Và lợi ích của việc học NLP là gì? Nói một cách đơn giản, xử lý ngôn ngữ tự nhiên (NLP) là phát triển các ứng dụng và dịch vụ có khả năng hiểu ngôn ngữ của con người. Ở đây chúng ta đang nói về các ví dụ thực tế về xử lý ngôn ngữ tự nhiên (NLP) như nhận dạng giọng nói, dịch lời nói, hiểu các câu hoàn chỉnh, hiểu các từ đồng nghĩa của các từ phù hợp và viết các câu và đoạn văn hoàn chỉnh đúng ngữ pháp. Lợi ích của NLPNhư tất cả các bạn đều biết, hàng triệu gigabyte mỗi ngày được tạo ra bởi blog, trang web xã hội và trang web. Có nhiều công ty thu thập tất cả các dữ liệu này để hiểu rõ hơn về người dùng và niềm đam mê của họ và thực hiện các thay đổi phù hợp. Những dữ liệu này có thể cho thấy người dân Brazil hài lòng với sản phẩm A, trong khi người dân Mỹ hài lòng hơn với sản phẩm B. Với NLP, kiến thức này có thể được tìm thấy ngay lập tức (tức là kết quả theo thời gian thực). Ví dụ: công cụ tìm kiếm là một loại NLP cung cấp kết quả phù hợp cho đúng người vào đúng thời điểm. Nhưng các công cụ tìm kiếm không phải là triển khai duy nhất của xử lý ngôn ngữ tự nhiên (NLP). Có rất nhiều triển khai thậm chí còn tuyệt vời hơn ngoài kia. Triển khai NLPĐây là một số triển khai thành công của xử lý ngôn ngữ tự nhiên (NLP):
Thư viện NLPCó nhiều thư viện Xử lý ngôn ngữ tự nhiên (NLP) mã nguồn mở. Đây là một số trong số họ:
Bộ công cụ ngôn ngữ tự nhiên (NLTK) là thư viện phổ biến nhất để xử lý ngôn ngữ tự nhiên (NLP). Nó được viết bằng Python và có một cộng đồng lớn đằng sau nó. NLTK cũng rất dễ học, thực ra, đó là thư viện xử lý ngôn ngữ tự nhiên (NLP) dễ dàng nhất mà bạn sẽ sử dụng. Trong hướng dẫn NLP này, chúng tôi sẽ sử dụng thư viện Python NLTK. Trước khi tôi bắt đầu cài đặt NLTK, tôi giả sử rằng bạn biết một số điều cơ bản về Python để bắt đầu. Cài đặt NLTKNếu bạn đang sử dụng Windows hoặc Linux hoặc Mac, bạn có thể cài đặt NLTK
bằng pip : Bạn có thể sử dụng NLTK trên Python 2.7, 3.4 và 3.5 tại thời điểm viết bài này. Ngoài ra, bạn có thể cài đặt nó từ nguồn từ tar này . Để kiểm tra xem NLTK đã được cài đặt đúng chưa, bạn có thể mở thiết bị đầu cuối Python của mình và gõ như sau : Khi bạn đã cài đặt NLTK, bạn nên cài đặt các gói NLTK bằng cách chạy mã sau:
Điều này sẽ hiển thị trình tải xuống NLTK để chọn gói nào cần được cài đặt. Bạn có thể cài đặt tất cả các gói vì tất cả chúng đều có kích thước nhỏ mà không có vấn đề gì. Bây giờ, hãy bắt đầu chương trình!Token hóa văn bản bằng Python thuần túyĐầu tiên, chúng tôi sẽ lấy một số nội dung trang web. Sau đó, chúng tôi sẽ phân tích văn bản để xem trang đó nói về cái gì. Chúng tôi sẽ sử dụng mô-đun urllib để thu thập dữ liệu trang web:
Như bạn có thể thấy từ đầu ra được in, kết quả chứa rất nhiều thẻ HTML cần được làm sạch. Chúng ta có thể sử dụng
Bây giờ, chúng tôi có văn bản sạch từ trang web được thu thập thông tin. Tuyệt vời phải không? Cuối cùng, hãy chuyển đổi văn bản đó thành mã thông báo bằng cách chia văn bản như thế này:
Đếm tần số từCác văn bản tốt hơn nhiều bây giờ. Hãy tính toán phân phối tần suất của các mã thông báo đó bằng Python NLTK. Có một chức năng trong NLTK được gọi là
Nếu bạn tìm kiếm đầu ra, bạn sẽ thấy rằng mã thông báo thường xuyên nhất là PHP. Bạn có thể vẽ biểu đồ cho các mã thông báo đó bằng cách sử dụng chức năng vẽ biểu đồ như sau : Từ biểu đồ, bạn có thể chắc chắn rằng bài viết này đang nói về PHP. Tuyệt quá! Có một số từ như "the," "của", "a", "an", v.v. Những từ này là từ dừng lại. Nói chung, các từ dừng nên được loại bỏ để ngăn chúng ảnh hưởng đến kết quả của chúng tôi. Xóa các từ dừng sử dụng NLTKNLTK được vận chuyển với danh sách từ dừng cho hầu hết các ngôn ngữ. Để có được các từ dừng tiếng Anh, bạn có thể sử dụng mã này:
Bây giờ, hãy sửa đổi mã của chúng tôi và làm sạch mã thông báo trước khi vẽ đồ thị. Đầu tiên, chúng tôi sẽ tạo một bản sao của danh sách. Sau đó, chúng tôi sẽ lặp lại các mã thông báo và xóa các từ dừng:
Bạn có thể xem lại các hàm danh sách Python tại đây để biết cách xử lý danh sách. Mã cuối cùng sẽ trông như thế này:
Nếu bạn kiểm tra biểu đồ bây giờ, nó sẽ tốt hơn trước vì không có từ dừng nào trong số đếm.
Mã thông báo văn bản bằng cách sử dụng NLTKChúng tôi chỉ thấy cách chia văn bản thành các mã thông báo bằng cách sử dụng Bạn có thể mã hóa các đoạn văn thành câu và mã hóa câu thành từ theo nhu cầu của bạn. NLTK được vận chuyển với mã thông báo câu và mã thông báo từ. Giả sử rằng chúng ta có một văn bản mẫu như sau:
Để mã hóa văn bản này thành câu, chúng tôi sẽ sử dụng mã thông báo câu:
Đầu ra là như sau:
Bạn có thể nói, Đây là một công việc dễ dàng; Tôi không cần sử dụng mã thông báo NLTK và tôi có thể phân tách các câu bằng cách sử dụng các biểu thức thông thường vì mỗi câu có trước dấu câu và dấu cách. Vâng, hãy xem văn bản sau đây:
Ừ! Từ Mr. là một từ của chính nó. OK, hãy thử NLTK:
Đầu ra trông như thế này:
Tuyệt quá! Nó hoạt động như sự quyến rũ. Hãy thử dùng tokenizer để xem nó sẽ hoạt động như thế nào:
Đầu ra là:
Từ Mr. là một từ, như mong đợi. NLTK sử dụng Mã thông báo văn bản không phải tiếng AnhĐể mã hóa các ngôn ngữ khác, bạn có thể chỉ định ngôn ngữ như thế này:
Kết quả sẽ như thế này:
Chúng tôi đang làm rất tốt! Nhận từ đồng nghĩa từ WordNetNếu bạn nhớ chúng tôi đã cài đặt các gói NLTK bằng cách sử dụng Bạn có thể lấy các định nghĩa và ví dụ cho một từ đã cho như thế này:
Kết quả là:
WordNet bao gồm rất nhiều định nghĩa:
Kết quả là:
Bạn có thể sử dụng WordNet để nhận các từ đồng nghĩa như thế này:
Đầu ra là:
Mát mẻ! Nhận từ trái nghĩa từ WordNetBạn có thể nhận được các từ trái nghĩa của các từ theo cùng một cách. Tất cả bạn phải làm là kiểm tra
Đầu ra là:
Đây là sức mạnh của NLTK trong xử lý ngôn ngữ tự nhiên. Từ NLTKTừ gốc có nghĩa là loại bỏ các phụ tố từ các từ và trả lại từ gốc. (Nguồn gốc của từ làm việc là công việc .) Công cụ tìm kiếm sử dụng kỹ thuật này khi lập chỉ mục các trang, vì vậy nhiều người viết các phiên bản khác nhau cho cùng một từ và tất cả chúng đều bắt nguồn từ từ gốc. Có nhiều thuật toán để xuất phát, nhưng thuật toán được sử dụng nhiều nhất là thuật toán xuất phát Porter. NLTK có một lớp gọi là PorterStemmer sử dụng thuật toán này.
Kết quả là : Rõ ràng đủ rồi! Có một số thuật toán xuất phát khác, như thuật toán xuất phát của Lancaster. Đầu ra của thuật toán này cho thấy một số kết quả khác nhau cho một vài từ. Bạn có thể thử cả hai để xem kết quả. Từ gốc tiếng Anh
Bạn có thể sử dụng
Các bình luận viên Pháp có thể cho chúng tôi biết về kết quả! Từ ngữ sử dụng WordNetTừ lemmatizing tương tự như bắt nguồn, nhưng sự khác biệt là kết quả của từ lem là một từ thực sự. Không giống như bắt nguồn, khi bạn cố gắng bắt nguồn một số từ, nó sẽ dẫn đến kết quả như thế này:
Kết quả là : Bây giờ, nếu chúng tôi cố gắng từ vựng cùng một từ bằng cách sử dụng NLTK WordNet, kết quả là chính xác:
Kết quả là Kết quả có thể kết thúc bằng một từ đồng nghĩa hoặc một từ khác có cùng nghĩa. Đôi khi, nếu bạn cố gắng viết tắt một từ như từ đang chơi, nó sẽ kết thúc với cùng một từ. Điều này là do phần mặc định của lời nói là danh từ. Để có được động từ, bạn nên chỉ định nó như thế này:
Kết quả là : Trên thực tế, đây là một mức độ nén văn bản rất tốt. Bạn kết thúc với khoảng 50% đến 60% nén. Kết quả có thể là một động từ, danh từ, tính từ hoặc trạng từ:
Kết quả là:
Sự khác biệt giữa gốc và chữOK, chúng ta hãy thử bắt nguồn và từ vựng cho một số từ:
Kết quả là:
Từ gốc hoạt động trên các từ mà không biết ngữ cảnh của chúng, đó là lý do tại sao nó có độ chính xác thấp hơn và nhanh hơn so với từ vựng. Theo tôi, vượn cáo tốt hơn là bắt nguồn. Từ lem ngữ trả về một từ thực sự ngay cả khi nó không phải là cùng một từ; nó có thể là một từ đồng nghĩa, nhưng ít nhất nó là một từ thực sự. Đôi khi, bạn không quan tâm đến mức độ chính xác này và tất cả những gì bạn cần là tốc độ. Trong trường hợp này, thân cây là tốt hơn. Tất cả các bước chúng tôi đã thảo luận trong hướng dẫn NLP này liên quan đến tiền xử lý văn bản. Trong các bài viết trong tương lai, chúng tôi sẽ thảo luận về phân tích văn bản bằng cách sử dụng Python NLTK. |