NLTK là viết tắt của "Natural Language Tool Kit". Đây là một mô-đun lập trình Python được sử dụng để dọn dẹp và xử lý dữ liệu ngôn ngữ của con người. Các công cụ tích hợp phong phú của nó giúp chúng ta dễ dàng xây dựng các ứng dụng trong lĩnh vực Xử lý ngôn ngữ tự nhiên (hay còn gọi là NLP).
Một tập hợp các từ có trong một ngôn ngữ cụ thể và NLTK cung cấp hơn 50 tập hợp khác nhau để làm việc và cung cấp các thư viện cốt lõi như gắn thẻ POS, gắn thẻ kết thúc lời nói, mã hóa, lý luận ngữ nghĩa, phân loại, v.v. Sau đây là mô tả ngắn gọn về 5 tính năng hoặc bước chính được sử dụng trong NLP, có thể dễ dàng thực hiện bằng NLTK:
Hình ảnh bên dưới cho thấy quá trình thực thi nltk. Xin lưu ý rằng việc cài đặt numpy cũng tương tự nhưng có thể mất nhiều thời gian hơn tùy thuộc vào bộ xử lý của hệ thống.
Sau khi hoàn tất, bạn có thể kiểm tra xem nó đã được cài đặt đúng chưa bằng cách sử dụng 2 lệnh trong hình ảnh sau và đảm bảo nó chạy mà không có lỗi.
Một cửa sổ mới sẽ mở ra, hiển thị trình tải xuống nltk. cài đặt nó trong thư mục "usr/share/nltk_data". Sau khi hoàn tất, hãy kiểm tra xem nó đã được tải xuống chưa bằng cách nhập các lệnh và nhận đầu ra như trong hình bên dưới.
Có thể thấy cách sử dụng ngữ liệu của nltk ở trên. Nó biết rằng "Mrs." không phải là một câu mà là một từ viết tắt. Do đó, nó được bao gồm như một phần của câu chứ không phải là một câu riêng lẻ.
Ở đây chúng ta có thể thấy rằng các token không chỉ bao gồm các từ mà còn bao gồm cả phần cuối câu. Điều quan trọng cần lưu ý là Tokenization không chỉ chia câu thành các từ mà còn có khả năng chia câu thành các token trong đó khoảng trắng không phải là ký tự để phân tách các từ.
Chúng ta có thể thấy ở trên rằng Bà Hudson đã được công nhận là một người. Tất cả thông tin này được lưu trữ dưới dạng một cây.
Một tập hợp các từ có trong một ngôn ngữ cụ thể và NLTK cung cấp hơn 50 tập hợp khác nhau để làm việc và cung cấp các thư viện cốt lõi như gắn thẻ POS, gắn thẻ kết thúc lời nói, mã hóa, lý luận ngữ nghĩa, phân loại, v.v. Sau đây là mô tả ngắn gọn về 5 tính năng hoặc bước chính được sử dụng trong NLP, có thể dễ dàng thực hiện bằng NLTK:
- Gắn thẻ kết thúc lời nói (gắn thẻ EOS): Điều này bao gồm việc chia nhỏ một văn bản thành một tập hợp các từ có nghĩa câu.
- Phân chia thành các từ. Nó không chỉ hoạt động trên các khoảng trắng mà còn loại bỏ các từ dừng như (.,?,!, v.v.) và nó là một tập hợp, nghĩa là các từ trùng lặp sẽ bị loại bỏ.
- Gắn thẻ từ loại (gắn thẻ POS): Gắn thẻ từ để chỉ ra loại từ đó là gì. Các thẻ được mã hóa. cho danh từ, động từ ở thì quá khứ, v.v., vì vậy mỗi từ sẽ có một thẻ.
- Phân chia thành từng nhóm: Quá trình nhóm các từ có thẻ tương tự. Kết quả của việc phân chia thành từng nhóm sẽ là một cấu trúc giống như cây.
- Trích xuất: Sau khi dữ liệu được phân chia thành từng nhóm, chúng ta chỉ có thể trích xuất danh từ hoặc chỉ động từ, v.v. để đáp ứng nhu cầu.
2 Tải xuống và cài đặt NLTK
NLTK có thể được cài đặt rất dễ dàng bằng trình cài đặt "pip". Trước khi cài đặt NLTK, chúng ta cũng phải cài đặt numpy. Sử dụng các lệnh sau:
Mã:
sudo pip install -U numpy
sudo pip install -U nltk
Sau khi hoàn tất, bạn có thể kiểm tra xem nó đã được cài đặt đúng chưa bằng cách sử dụng 2 lệnh trong hình ảnh sau và đảm bảo nó chạy mà không có lỗi.
3 Cài đặt dữ liệu NLTK
Sau khi bạn đã xác nhận rằng nltk đã được cài đặt, chúng ta sẽ phải tải xuống và cài đặt dữ liệu NLTK. Dữ liệu Nltk bao gồm các tập hợp và tất cả các từ trong một ngôn ngữ cùng với nhiều cú pháp ngữ pháp, ngữ pháp đồ chơi, mô hình đã được đào tạo, v.v. Chúng giúp người dùng dễ dàng xử lý ngôn ngữ bằng cách áp dụng các hàm khác nhau. Xin lưu ý rằng việc cài đặt dữ liệu nltk là một quá trình dài, liên quan đến việc tải xuống hơn 1 GB dữ liệu. Để tải xuống dữ liệu nltk, trong một thiết bị đầu cuối, hãy nhập "python" để mở trình thông dịch python và nhập hai lệnh sau:
Mã:
>>> import nltk >>> nltk.download()
4 Ví dụ về việc sử dụng NLTK
Bây giờ chúng ta có thể thử một số ví dụ về các tác vụ NLP được thực hiện bằng NLTK. 5 quy trình phát hiện EOS, Tokenization, gắn thẻ POS, Chunking và trích xuất được trình bày ở đây:4.1 Phát hiện EOS
Việc gắn thẻ kết thúc lời nói sẽ chia văn bản thành một tập hợp các câu có nghĩa. Chúng tôi làm như vậy vì các bước tiếp theo sẽ thực hiện trên từng câu riêng lẻ. Dưới đây là một ví dụ và đầu ra của phát hiện EOS.
Mã:
>>> import nltk>>> text = "Mrs. Hudson đã pha một tách trà. Cô ấy là một người phụ nữ tuyệt vời.">>> sentences = nltk.tokenize.sent_tokenize(text)>>> sentences['Mrs. Hudson đã pha một tách trà.', 'Cô ấy là một người phụ nữ tuyệt vời.']>>>
4.2 Tokenization
Bước này hoạt động trên các câu riêng lẻ, chia chúng thành các token. do đó, chúng ta có một danh sách các danh sách chứa token. Ví dụ bên dưới là phần tiếp theo của bước trước.
Mã:
>>> tokens = [nltk.tokenize.word_tokenize(s) cho s trong câu]>>> tokens[['Mrs.', 'Hudson', 'made', 'a', 'cup', 'of', 'tea', '.'], ['She', 'is', 'a', 'wonderful', 'woman', '.']]>>>
4.3 Gắn thẻ POS
POS có nghĩa là pat-of-speech và trong bước này, thông tin POS được gán cho từng token trong danh sách token. Mỗi thông tin POS này biểu thị loại lời nói đó là gì. Ví dụ: thẻ 'VBD' biểu thị động từ ở thì quá khứ đơn và 'JJ' biểu thị tính từ. Bước này giúp chúng ta sắp xếp hoặc sắp xếp các từ trong bước tiếp theo. Một ví dụ được đưa ra bên dưới.
Mã:
>>> PosTokens = [nltk.pos_tag(e) for e in tokens]>>> PosToken[[('Mrs.', 'NNP'), ('Hudson', 'NNP'), ('made', 'VBD'), ('a', 'DT'), ('cup', 'NN'), ('of', 'IN'), ('tea', 'NN'),('.', '.')], [('She', 'PRP'), ('is', 'VBZ'), ('a', 'DT'), ('wonderful', 'JJ'), ('woman', 'NN'), ('.', '.')]]>>>
4.4 Phân đoạn và trích xuất
Phân đoạn là quá trình lắp ráp các mã thông báo phức tạp dựa trên các thẻ. Nltk cũng cho phép định nghĩa ngữ pháp tùy chỉnh để phân đoạn. Mặt khác, trích xuất đề cập đến quá trình duyệt qua các khối hiện có và gắn thẻ chúng dưới dạng các thực thể được đặt tên, chẳng hạn như người, tổ chức, địa điểm, v.v. một ví dụ:
Mã:
>>> chunks = nltk.ne_chunk_sents(PosTokens)>>> cho mỗi khối trong các khối:... in mỗi khối...(S Mrs./NNP (PERSON Hudson/NNP) made/VBD a/DT cup/NN of/IN tea/NN ./.)(S She/PRP is/VBZ a/DT wonderful/JJ woman/NN ./.)>>>