Token hóa

Jan 10 2023
Mã thông báo là gì ?? Nói một cách ngắn gọn, Nó chia văn bản thành các từ hoặc câu… Ở đây chúng tôi sẽ giới thiệu về các mã thông báo khác nhau mà chúng tôi có thể sử dụng trong NLP ……… 2. Phân chia cụ thể Tương tự như khoảng trắng nhưng ở đây chúng tôi cung cấp phân chia bất kỳ bộ chia nào chúng tôi muốn 3.

Mã thông báo là gì ?? Nói một cách ngắn gọn, Nó chia văn bản thành các từ hoặc câu…

Token hóa

Ở đây chúng tôi sẽ giới thiệu về các mã thông báo khác nhau mà chúng tôi có thể sử dụng trong NLP ………

  1. khoảng trắng

text = 'Earth was born around 4.54 billion years ago.'
print(text.split())
# output
# ['Earth', 'was', 'born', 'around', '4.54', 'billion', 'years', 'ago.']

2. Phân chia cụ thể

Tương tự như khoảng trắng nhưng ở đây chúng tôi cung cấp splitbất kỳ bộ chia nào chúng tôi muốn

text = 'Egypt, a country linking northeast Africa with the Middle East, dates to the time of the pharaohs.'
print(text.split(','))
# output
# ['Egypt', ' a country linking northeast Africa with the Middle East', ' dates to the time of the pharaohs.']

3. NLTK

NLTK là một nền tảng hàng đầu để xây dựng các chương trình Python hoạt động với dữ liệu ngôn ngữ của con người. Có rất nhiều mã thông báo chúng tôi có thể sử dụng

l) word_toknizer: Nó giải quyết vấn đề trong hàm tách:

word_toknizer: xem dấu Vàng ở trên

ll) sent_tokenize: Nó sử dụng văn bản phân tách làm mô hình mà nó đã đào tạo trước đó.

sent_tokenize: đây là trích dẫn của tôi, nó tách nó thành trích dẫn và tên của tôi

lll) wordpunct_tokenize: Ở đây nó tách tất cả các từ và dấu câu.

wordpunct_tokenize: nó cung cấp cho chúng tôi mã thông báo có tất cả các từ và dấu câu

lV) TreebankWordTokenizer: Mặt khác, nó phân tách văn bản thành các dấu câu này ?!.,;, nó là một loạt các quy tắc chung cho các từ tiếng Anh.

TreebankWordTokenizer: nhìn dấu vàng bên trên bạn sẽ biết đó là tên mình nên nó coi như token

V) TweetTokenizer: Nó tách văn bản thành các dấu chấm câu thành ?!.,;biểu tượng cảm xúc

TweetTokenizer

Vl) MWATokenizer: Ở đây chúng tôi có thể thêm mã thông báo theo ý muốn vì mã thông báo này cung cấp add_mwecho phép chúng tôi thực hiện điều đó

MWATokenizer: chúng tôi đã thêm mã thông báo như chúng tôi thấy trong kết quả, bạn sẽ thấy mã thông báo đó

4. TextBlob

TextBlob là thư viện Python (2 và 3) để xử lý dữ liệu văn bản . Nó cung cấp một API đơn giản để đi sâu vào các tác vụ xử lý ngôn ngữ tự nhiên (NLP) phổ biến như gắn thẻ một phần của bài phát biểu, trích xuất cụm từ danh từ, phân tích cảm xúc, phân loại, dịch thuật, v.v.

from textblob import TextBlob
text="""But I'm glad you'll see me as I am. Above all, I wouldn't want people to think that I want to 
prove anything. I don't want to prove anything, I just want to live; to cause no evil to anyone but myself. 
I have that right, haven't I? Leo Tolstoy """

blob_object= TextBlob(text)     # Word tokenization of  the text
text_words = blob_object.words  # To see all tokens
print(text_words)  # To count the number of tokens
print(len(text_words))

# output
# ['But', 'I', "'m", 'glad', 'you', "'ll", 'see', 'me', 'as', 'I', 'am', 'Above', 'all', 'I', 'would', "n't", 'want', 'people', 'to', 'think', 'that', 'I', 'want', 'to', 'prove', 'anything', 'I', 'do', "n't", 'want', 'to', 'prove', 'anything', 'I', 'just', 'want', 'to', 'live', 'to', 'cause', 'no', 'evil', 'to', 'anyone', 'but', 'myself', 'I', 'have', 'that', 'right', 'have', "n't", 'I', 'Leo', 'Tolstoy']
# 55

5. không gian

spaCy là một thư viện mã nguồn mở miễn phí dành cho Xử lý ngôn ngữ tự nhiên trong Python . Nó có tính năng NER, gắn thẻ POS, phân tích cú pháp phụ thuộc, vectơ từ, v.v.

Nó cung cấp cho chúng tôi mã thông báo và chỉ mục của nó tất cả các từ, dấu chấm câu và biểu tượng cảm xúc

6. Thần đồng

Gensim: Đây là một thư viện mã nguồn mở bằng python do Radim Rehurek viết, được sử dụng trong mô hình hóa chủ đề không giám sát và xử lý ngôn ngữ tự nhiên . Nó được thiết kế để trích xuất các chủ đề ngữ nghĩa từ các tài liệu. Nó có thể xử lý các bộ sưu tập văn bản lớn.

ở đây nó xóa tất cả dấu chấm câu và biểu tượng cảm xúc

7. Máy ảnh

Keras là thư viện mã nguồn mở và là một trong những framework deep learning đáng tin cậy nhất. Để thực hiện mã thông báo, chúng tôi sử dụng phương thức: text_to_word_sequence từ lớp Class Keras.preprocessing.text. Điều tuyệt vời về Keras là chuyển đổi bảng chữ cái thành chữ thường trước khi mã hóa nó, điều này có thể tiết kiệm thời gian khá nhiều.

from keras.preprocessing.text import Tokenizer
from keras.preprocessing.text import text_to_word_sequence

text = "Two things are infinite: the universe and human stupidity; and I'm not sure about the universe.  #Albert Einstein"


tokinzer = Tokenizer(num_words=20)  # as recommended we put here the max text length we have
tokinzer.fit_on_texts(text)
tokens = text_to_word_sequence(text)
print(tokens)

# output
# ['two', 'things', 'are', 'infinite', 'the', 'universe', 'and', 'human', 'stupidity', 'and', "i'm", 'not', 'sure', 'about', 'the', 'universe', '', 'albert', 'einstein']

8. Mã thông báo dựa trên từ phụ

Mã thông báo phổ biến là mã thông báo dựa trên từ phụ, đây là giải pháp giữa mã thông báo dựa trên từ và ký tự. Ý tưởng chính là giải quyết các vấn đề mà mã thông báo dựa trên từ gặp phải (kích thước từ vựng rất lớn, số lượng lớn mã thông báo OOV và nghĩa khác nhau của các từ rất giống nhau) và mã thông báo dựa trên ký tự (chuỗi rất dài và mã thông báo riêng lẻ ít ý nghĩa hơn).

Thuật toán mã thông báo dựa trên từ phụ sử dụng các nguyên tắc sau.

  1. Không chia các từ được sử dụng thường xuyên thành các từ phụ nhỏ hơn.
  2. Tách các từ hiếm thành các từ phụ có nghĩa nhỏ hơn.

thử thách

Hãy thảo luận về những thách thức và hạn chế của nhiệm vụ mã thông báo.

Nói chung, nhiệm vụ này được sử dụng cho văn bản văn bản được viết bằng tiếng Anh hoặc tiếng Pháp trong đó các ngôn ngữ này phân tách các từ bằng cách sử dụng khoảng trắng hoặc dấu chấm câu để xác định ranh giới của câu. Thật không may, phương pháp này không thể áp dụng cho các ngôn ngữ khác như tiếng Trung, tiếng Nhật, tiếng Hàn, tiếng Thái, tiếng Hindi, tiếng Urdu, tiếng Tamil và các ngôn ngữ khác. Vấn đề này tạo ra nhu cầu phát triển một công cụ mã thông báo chung kết hợp tất cả các ngôn ngữ.

Một hạn chế khác là mã hóa các văn bản tiếng Ả Rập vì tiếng Ả Rập có hình thái phức tạp như một ngôn ngữ. Ví dụ: một từ tiếng Ả Rập có thể chứa tối đa sáu mã thông báo khác nhau như từ “عقد” (eaqad).

cùng ký tự nhưng có ý nghĩa khác nhau

Phần kết luận

Chúng tôi đã nói về mã thông báo và rất nhiều kỹ thuật mà chúng tôi có thể sử dụng vì chúng tôi thấy có nhiều loại nghiên cứu được thực hiện trong lĩnh vực này và nó đang phát triển và có nhiều thách thức phải đối mặt với NLP nhưng chúng tôi sẽ thấy những vấn đề này sẽ được giải quyết trong tương lai.

bạn có thể xem mã trong liên kết này