Bộ công cụ ngôn ngữ tự nhiên - Mã hóa văn bản
Mã hóa mã hóa là gì?
Nó có thể được định nghĩa là quá trình chia nhỏ một đoạn văn bản thành các phần nhỏ hơn, chẳng hạn như câu và từ. Những phần nhỏ hơn này được gọi là mã thông báo. Ví dụ, một từ là một mã thông báo trong một câu và một câu là một mã thông báo trong một đoạn văn.
Như chúng ta biết rằng NLP được sử dụng để xây dựng các ứng dụng như phân tích cảm xúc, hệ thống QA, dịch ngôn ngữ, chatbot thông minh, hệ thống giọng nói, v.v., do đó, để xây dựng chúng, điều quan trọng là phải hiểu mẫu trong văn bản. Các mã thông báo, được đề cập ở trên, rất hữu ích trong việc tìm kiếm và hiểu các mẫu này. Chúng ta có thể coi tokenization là bước cơ bản cho các công thức nấu ăn khác như tạo gốc và lemmatization.
Gói NLTK
nltk.tokenize là gói được cung cấp bởi mô-đun NLTK để đạt được quá trình mã hóa.
Mã hóa câu thành từ
Tách câu thành các từ hoặc tạo danh sách các từ từ một chuỗi là một phần thiết yếu của mọi hoạt động xử lý văn bản. Hãy để chúng tôi hiểu nó với sự trợ giúp của các chức năng / mô-đun khác nhau được cung cấp bởinltk.tokenize gói hàng.
mô-đun word_tokenize
word_tokenizemô-đun được sử dụng để mã hóa từ cơ bản. Ví dụ sau sẽ sử dụng mô-đun này để chia một câu thành các từ.
Thí dụ
import nltk
from nltk.tokenize import word_tokenize
word_tokenize('Tutorialspoint.com provides high quality technical tutorials for free.')
Đầu ra
['Tutorialspoint.com', 'provides', 'high', 'quality', 'technical', 'tutorials', 'for', 'free', '.']
Lớp TreebankWordTokenizer
word_tokenize , được sử dụng ở trên về cơ bản là một hàm wrapper gọi hàm tokenize () như một thể hiện của TreebankWordTokenizerlớp học. Nó sẽ cung cấp kết quả tương tự như chúng ta nhận được khi sử dụng mô-đun word_tokenize () để tách các câu thành từng từ. Chúng ta hãy xem ví dụ tương tự được triển khai ở trên -
Thí dụ
Đầu tiên, chúng ta cần nhập bộ công cụ ngôn ngữ tự nhiên (nltk).
import nltk
Bây giờ, hãy nhập TreebankWordTokenizer lớp để triển khai thuật toán tokenizer từ -
from nltk.tokenize import TreebankWordTokenizer
Tiếp theo, tạo một thể hiện của lớp TreebankWordTokenizer như sau:
Tokenizer_wrd = TreebankWordTokenizer()
Bây giờ, hãy nhập câu bạn muốn chuyển đổi thành mã thông báo -
Tokenizer_wrd.tokenize(
'Tutorialspoint.com provides high quality technical tutorials for free.'
)
Đầu ra
[
'Tutorialspoint.com', 'provides', 'high', 'quality',
'technical', 'tutorials', 'for', 'free', '.'
]
Hoàn thành ví dụ triển khai
Hãy cho chúng tôi xem ví dụ triển khai đầy đủ bên dưới
import nltk
from nltk.tokenize import TreebankWordTokenizer
tokenizer_wrd = TreebankWordTokenizer()
tokenizer_wrd.tokenize('Tutorialspoint.com provides high quality technical
tutorials for free.')
Đầu ra
[
'Tutorialspoint.com', 'provides', 'high', 'quality',
'technical', 'tutorials','for', 'free', '.'
]
Quy ước quan trọng nhất của thuốc tokenizer là tách các cơn co thắt. Ví dụ: nếu chúng ta sử dụng mô-đun word_tokenize () cho mục đích này, nó sẽ cho kết quả như sau:
Thí dụ
import nltk
from nltk.tokenize import word_tokenize
word_tokenize('won’t')
Đầu ra
['wo', "n't"]]
Loại quy ước như vậy bởi TreebankWordTokenizerlà không thể chấp nhận được. Đó là lý do tại sao chúng tôi có hai từ tokenizers thay thế cụ thể làPunktWordTokenizer và WordPunctTokenizer.
Lớp WordPunktTokenizer
Một công cụ mã hóa từ thay thế chia tất cả các dấu câu thành các mã thông báo riêng biệt. Hãy để chúng tôi hiểu nó với ví dụ đơn giản sau:
Thí dụ
from nltk.tokenize import WordPunctTokenizer
tokenizer = WordPunctTokenizer()
tokenizer.tokenize(" I can't allow you to go home early")
Đầu ra
['I', 'can', "'", 't', 'allow', 'you', 'to', 'go', 'home', 'early']
Mã hóa văn bản thành câu
Trong phần này, chúng ta sẽ chia văn bản / đoạn văn thành các câu. NLTK cung cấpsent_tokenize mô-đun cho mục đích này.
Tại sao nó lại cần thiết?
Một câu hỏi hiển nhiên xuất hiện trong đầu chúng ta là khi chúng ta có từ tokenizer thì tại sao chúng ta cần mã hóa câu hoặc tại sao chúng ta cần mã hóa văn bản thành câu. Giả sử chúng ta cần đếm số từ trung bình trong câu, làm thế nào chúng ta có thể làm điều này? Để hoàn thành nhiệm vụ này, chúng ta cần cả mã hóa câu và mã hóa từ.
Hãy để chúng tôi hiểu sự khác biệt giữa trình bổ sung câu và từ với sự trợ giúp của ví dụ đơn giản sau:
Thí dụ
import nltk
from nltk.tokenize import sent_tokenize
text = "Let us understand the difference between sentence & word tokenizer.
It is going to be a simple example."
sent_tokenize(text)
Đầu ra
[
"Let us understand the difference between sentence & word tokenizer.",
'It is going to be a simple example.'
]
Mã hóa câu sử dụng biểu thức chính quy
Nếu bạn cảm thấy rằng đầu ra của tokenizer từ không được chấp nhận và muốn kiểm soát hoàn toàn cách mã hóa văn bản, chúng tôi có biểu thức chính quy có thể được sử dụng trong khi thực hiện mã hóa câu. NLTK cung cấpRegexpTokenizer lớp để đạt được điều này.
Hãy để chúng tôi hiểu khái niệm này với sự trợ giúp của hai ví dụ dưới đây.
Trong ví dụ đầu tiên, chúng tôi sẽ sử dụng biểu thức chính quy để đối sánh mã thông báo chữ và số cộng với dấu ngoặc kép để chúng tôi không chia nhỏ các phần như “won’t”.
ví dụ 1
import nltk
from nltk.tokenize import RegexpTokenizer
tokenizer = RegexpTokenizer("[\w']+")
tokenizer.tokenize("won't is a contraction.")
tokenizer.tokenize("can't is a contraction.")
Đầu ra
["won't", 'is', 'a', 'contraction']
["can't", 'is', 'a', 'contraction']
Trong ví dụ đầu tiên, chúng tôi sẽ sử dụng biểu thức chính quy để mã hóa trên khoảng trắng.
Ví dụ 2
import nltk
from nltk.tokenize import RegexpTokenizer
tokenizer = RegexpTokenizer('/s+' , gaps = True)
tokenizer.tokenize("won't is a contraction.")
Đầu ra
["won't", 'is', 'a', 'contraction']
Từ kết quả trên, chúng ta có thể thấy rằng dấu chấm câu vẫn còn trong các thẻ. Khoảng trống tham số = True có nghĩa là mẫu sẽ xác định các khoảng trống để mã hóa. Mặt khác, nếu chúng ta sử dụng tham số gap = False thì mẫu sẽ được sử dụng để xác định các mã thông báo có thể thấy trong ví dụ sau:
import nltk
from nltk.tokenize import RegexpTokenizer
tokenizer = RegexpTokenizer('/s+' , gaps = False)
tokenizer.tokenize("won't is a contraction.")
Đầu ra
[ ]
Nó sẽ cung cấp cho chúng tôi đầu ra trống.