Xử lý ngôn ngữ tự nhiên là một khía cạnh của học máy cho phép bạn xử lý các từ đã viết thành một ngôn ngữ thân thiện với máy. Các văn bản như vậy sau đó có thể điều chỉnh được và bạn có thể chạy các thuật toán tính toán trên chúng theo ý muốn.
Logic đằng sau công nghệ quyến rũ này có vẻ phức tạp nhưng không phải vậy. Và ngay cả bây giờ, khi đã nắm chắc lập trình Python cơ bản, bạn có thể tạo một trình xử lý văn bản DIY mới lạ với bộ công cụ ngôn ngữ tự nhiên (NLTK).
Đây là cách bắt đầu với NLTK của Python.
NLTK là gì và nó hoạt động như thế nào?
Được viết bằng Python, NLTK có nhiều chức năng thao tác chuỗi. Đó là một thư viện ngôn ngữ tự nhiên đa năng với một kho mô hình rộng lớn cho các ứng dụng ngôn ngữ tự nhiên khác nhau.
Với NLTK, bạn có thể xử lý các văn bản thô và trích xuất các tính năng có ý nghĩa từ chúng. Nó cũng cung cấp các mô hình phân tích văn bản, ngữ pháp dựa trên đặc điểm và các nguồn từ vựng phong phú để xây dựng một mô hình ngôn ngữ hoàn chỉnh.
Cách thiết lập NLTK
Đầu tiên, tạo một thư mục gốc của dự án ở bất kỳ đâu trên PC của bạn. Để bắt đầu sử dụng thư viện NLTK, hãy mở thiết bị đầu cuối của bạn vào thư mục gốc mà bạn đã tạo trước đó và tạo một môi trường ảo .
Sau đó, cài đặt bộ công cụ ngôn ngữ tự nhiên vào môi trường này bằng cách sử dụng pip :
pip install nltk
Tuy nhiên, NLTK có nhiều bộ dữ liệu khác nhau làm cơ sở cho các mô hình ngôn ngữ tự nhiên mới. Để truy cập chúng, bạn cần khởi động trình tải xuống dữ liệu tích hợp NLTK.
Vì vậy, khi bạn đã cài đặt thành công NLTK, hãy mở tệp Python của bạn bằng bất kỳ trình soạn thảo mã nào.
Sau đó, nhập mô- đun nltk và khởi tạo trình tải xuống dữ liệu bằng mã sau:
pip install nltk nltk.download()
Chạy đoạn mã trên qua thiết bị đầu cuối sẽ trả về giao diện đồ họa người dùng để chọn và tải xuống các gói dữ liệu. Tại đây, bạn cần chọn một gói và nhấp vào nút Tải xuống để lấy.
Bất kỳ gói dữ liệu nào bạn tải xuống đều chuyển đến thư mục được chỉ định được ghi trong trường Thư mục tải xuống . Bạn có thể thay đổi điều này nếu bạn muốn. Nhưng hãy cố gắng duy trì vị trí mặc định ở cấp độ này.
Liên quan: Các trình chỉnh sửa mã miễn phí tốt nhất để viết ứng dụng đầu tiên của bạn
Lưu ý: Các gói dữ liệu gắn vào các biến hệ thống theo mặc định. Vì vậy, bạn có thể tiếp tục sử dụng chúng cho các dự án tiếp theo bất kể môi trường Python bạn đang sử dụng là gì.
Cách sử dụng NLTK Tokenizers
Cuối cùng, NLTK cung cấp các mô hình mã hóa được đào tạo cho các từ và câu. Sử dụng các công cụ này, bạn có thể tạo danh sách các từ từ một câu. Hoặc chuyển một đoạn văn thành một mảng câu hợp lý.
Dưới đây là một ví dụ về cách sử dụng NLTK word_tokenizer :
import nltk from nltk.tokenize import word_tokenize word = "This is an example text" tokenWord = word_tokenizer(word) print(tokenWord) Output: ['This', 'is', 'an', 'example', 'text']
NLTK cũng sử dụng một trình mã hóa câu được huấn luyện trước có tên là PunktSentenceTokenizer . Nó hoạt động bằng cách chia nhỏ một đoạn văn thành một danh sách các câu.
Hãy xem cách này hoạt động như thế nào với một đoạn văn hai câu:
import nltk from nltk.tokenize import word_tokenize, PunktSentenceTokenizer sentence = "This is an example text. This is a tutorial for NLTK" token = PunktSentenceTokenizer() tokenized_sentence = token.tokenize(sentence) print(tokenized_sentence) Output: ['This is an example text.', 'This is a tutorial for NLTK']
Bạn có thể mã hóa thêm từng câu trong mảng được tạo từ mã trên bằng cách sử dụng word_tokenizer và Python for vòng lặp .
Ví dụ về Cách sử dụng NLTK
Vì vậy, mặc dù chúng tôi không thể chứng minh tất cả các trường hợp sử dụng có thể có của NLTK, nhưng đây là một vài ví dụ về cách bạn có thể bắt đầu sử dụng nó để giải quyết các vấn đề trong cuộc sống thực.
Nhận các định nghĩa từ và các phần của chúng trong bài phát biểu
NLTK có các mô hình để xác định các phần của giọng nói, hiểu ngữ nghĩa chi tiết và khả năng sử dụng các từ khác nhau theo ngữ cảnh.
Bạn có thể sử dụng mô hình wordnet để tạo các biến cho một văn bản. Sau đó, xác định ý nghĩa của nó và một phần của bài phát biểu.
Ví dụ: hãy kiểm tra các biến có thể có cho "Monkey:"
import nltk from nltk.corpus import wordnet as wn print(wn.synsets('monkey')) Output: [Synset('monkey.n.01'), Synset('imp.n.02'), Synset('tamper.v.01'), Synset('putter.v.02')]
Đoạn mã trên xuất ra các lựa chọn thay thế từ hoặc cú pháp và các phần của lời nói cho "Monkey".
Bây giờ hãy kiểm tra ý nghĩa của "Monkey" bằng cách sử dụng phương pháp định nghĩa :
Monkey = wn.synset('monkey.n.01').definition() Output: any of various long-tailed primates (excluding the prosimians)
Bạn có thể thay thế chuỗi trong ngoặc đơn bằng các lựa chọn thay thế được tạo khác để xem kết quả NLTK nào.
Các pos_tag mô hình, tuy nhiên, xác định các bộ phận của bài phát biểu của một từ. Bạn có thể sử dụng điều này với word_tokenizer hoặc PunktSentenceTokenizer () nếu bạn đang xử lý các đoạn văn dài hơn.
Đây là cách hoạt động:
import nltk from nltk.tokenize import word_tokenize, PunktSentenceTokenizer word = "This is an example text. This is a tutorial on NLTK" token = PunktSentenceTokenizer() tokenized_sentence = token.tokenize(word) for i in tokenized_sentence: tokenWordArray = word_tokenize(i) partsOfSpeech = nltk.pos_tag(tokenWordArray) print(partsOfSpeech) Output: [('This', 'DT'), ('is', 'VBZ'), ('an', 'DT'), ('example', 'NN'), ('text', 'NN'), ('.', '.')] [('This', 'DT'), ('is', 'VBZ'), ('a', 'DT'), ('tutorial', 'JJ'), ('on', 'IN'), ('NLTK', 'NNP')]
Đoạn mã trên ghép từng từ được mã hóa với thẻ thoại của nó trong một bộ. Bạn có thể kiểm tra ý nghĩa của các thẻ này trên Penn Treebank .
Để có kết quả rõ ràng hơn, bạn có thể xóa các dấu chấm trong đầu ra bằng phương thức Replace () :
for i in tokenized_sentence: tokenWordArray = word_tokenize(i.replace('.', '')) partsOfSpeech = nltk.pos_tag(tokenWordArray) print(partsOfSpeech) Cleaner output: [('This', 'DT'), ('is', 'VBZ'), ('an', 'DT'), ('example', 'NN'), ('text', 'NN')] [('This', 'DT'), ('is', 'VBZ'), ('a', 'DT'), ('tutorial', 'JJ'), ('on', 'IN'), ('NLTK', 'NNP')]
Hình dung xu hướng tính năng bằng cách sử dụng lô NLTK
Việc trích xuất các tính năng từ văn bản thô thường tẻ nhạt và tốn thời gian. Nhưng bạn có thể xem các công cụ xác định tính năng mạnh nhất trong văn bản bằng cách sử dụng biểu đồ xu hướng phân phối tần số NLTK.
NLTK, tuy nhiên, đồng bộ hóa với matplotlib. Bạn có thể tận dụng điều này để xem xu hướng cụ thể trong dữ liệu của mình.
Ví dụ: đoạn mã dưới đây so sánh một tập hợp các từ tích cực và tiêu cực trên một biểu đồ phân phối bằng cách sử dụng hai bảng chữ cái cuối cùng của chúng:
import nltk from nltk import ConditionalFreqDist Lists of negative and positive words: negatives = [ 'abnormal', 'abolish', 'abominable', 'abominably', 'abominate','abomination' ] positives = [ 'abound', 'abounds', 'abundance', 'abundant', 'accessable', 'accessible' ] # Divide the items in each array into labeled tupple pairs # and combine both arrays: pos_negData = ([("negative", neg) for neg in negatives]+[("positive", pos) for pos in positives]) # Extract the last two alphabets from from the resulting array: f = ((pos, i[-2:],) for (pos, i) in pos_negData) # Create a distribution plot of these alphabets cfd = ConditionalFreqDist(f) cfd.plot()
Biểu đồ phân phối bảng chữ cái trông như thế này:

Nhìn kỹ vào biểu đồ, các từ kết thúc bằng ce , ds , le , nd và nt có khả năng là văn bản khẳng định cao hơn. Nhưng những từ kết thúc bằng al , ly , on và te có nhiều khả năng là những từ phủ định.
Lưu ý : Mặc dù chúng tôi đã sử dụng dữ liệu tự tạo ở đây, bạn có thể truy cập một số tập dữ liệu tích hợp của NLTK bằng cách sử dụng trình đọc Corpus của nó bằng cách gọi chúng từ lớp kho ngữ liệu của nltk . Bạn có thể muốn xem tài liệu về gói ngữ liệu để xem cách bạn có thể sử dụng nó.
Với sự xuất hiện của các công nghệ như Alexa, phát hiện thư rác, chatbot, phân tích tình cảm, v.v., xử lý ngôn ngữ tự nhiên dường như đang phát triển sang giai đoạn con người. Mặc dù chúng tôi chỉ xem xét một vài ví dụ về những gì NLTK cung cấp trong bài viết này, nhưng công cụ này có nhiều ứng dụng nâng cao hơn so với phạm vi của hướng dẫn này.
Sau khi đọc bài viết này, bạn sẽ có một ý tưởng tốt về cách sử dụng NLTK ở cấp độ cơ bản. Tất cả những gì còn lại bạn cần làm bây giờ là tự mình áp dụng những kiến thức này vào hành động!