Computer >> Máy Tính >  >> Lập trình >> Python

Làm cách nào để biểu diễn chuỗi Unicode dưới dạng chuỗi được mã hóa UTF-8 bằng Tensorflow và Python?

Một tập hợp các chuỗi Unicode có thể được biểu diễn dưới dạng chuỗi được mã hóa UTF8 bằng phương pháp "encode".

Đọc thêm:TensorFlow là gì và cách Keras làm việc với TensorFlow để tạo Mạng thần kinh?

Các mô hình xử lý ngôn ngữ tự nhiên xử lý các ngôn ngữ khác nhau có các bộ ký tự khác nhau. Unicode được coi là hệ thống mã hóa tiêu chuẩn được sử dụng để biểu thị ký tự từ hầu hết các ngôn ngữ. Mọi ký tự được mã hóa với sự trợ giúp của một điểm mã số nguyên duy nhất nằm trong khoảng từ 0 đến 0x10FFFF. Chuỗi Unicode là một chuỗi không hoặc nhiều giá trị mã.

Hãy để chúng tôi hiểu cách biểu diễn chuỗi Unicode bằng Python và thao tác với những chuỗi sử dụng Unicode tương đương. Đầu tiên, chúng tôi tách các chuỗi Unicode thành các mã thông báo dựa trên việc phát hiện tập lệnh với sự trợ giúp của các mã Unicode tương đương của các mã chuỗi chuẩn.

Chúng tôi đang sử dụng Google Colaboratory để chạy đoạn mã dưới đây. Google Colab hoặc Colaboratory giúp chạy mã Python qua trình duyệt và không yêu cầu cấu hình cũng như quyền truy cập miễn phí vào GPU (Đơn vị xử lý đồ họa). Colaboratory đã được xây dựng trên Jupyter Notebook.

print("A set of Unicode strings which is represented as a UTF8-encoded string")
batch_utf8 = [s.encode('UTF-8') for s in[u'hÃllo',   u'What is the weather tomorrow',u'Göödnight', u'😊']]
batch_chars_ragged = tf.strings.unicode_decode(batch_utf8,
input_encoding='UTF-8')
for sentence_chars in batch_chars_ragged.to_list():
   print(sentence_chars)
print("Dense tensor with padding are printed")
batch_chars_padded = batch_chars_ragged.to_tensor(default_value=-1)
print(batch_chars_padded.numpy())
print("Converting to sparse matrix")
batch_chars_sparse = batch_chars_ragged.to_sparse()

Mã tín dụng:https://www.tensorflow.org/tutorials/load_data/unicode

Đầu ra

A set of Unicode strings which is represented as a UTF8-encoded string
[104, 195, 108, 108, 111]
[87, 104, 97, 116, 32, 105, 115, 32, 116, 104, 101, 32, 119, 101, 97, 116, 104, 101, 114, 32, 116, 111, 109, 111, 114, 114, 111, 119]
[71, 246, 246, 100, 110, 105, 103, 104, 116]
[128522]
Dense tensor with padding are printed
[[ 104      195      108      108      111       -1       -1       -1       -1       -1
   -1       -1       -1       -1       -1       -1       -1       -1       -1       -1
   -1       -1       -1       -1       -1       -1       -1       -1]
[87      104       97      116       32      105      115       32      116      104
 101       32      119      101       97      116      104      101      114       32
 116      111      109      111      114      114      111      119]
[71      246      246      100      110      105      103      104      116       -1
   -1       -1       -1       -1       -1       -1       -1       -1       -1       -1
   -1       -1       -1       -1       -1       -1       -1       -1]
[128522       -1       -1       -1       -1       -1       -1       -1       -1       -1
   -1       -1       -1       -1       -1       -1       -1       -1       -1       -1
   -1       -1       -1       -1       -1       -1       -1       -1]]
Converting to sparse matrix

Giải thích

  • Khi nhiều chuỗi được giải mã, số ký tự trong mỗi chuỗi có thể không bằng nhau.
  • Kết quả sẽ là tf.RaggedTensor, trong đó độ dài của thứ nguyên trong cùng thay đổi và biến thể này phụ thuộc vào số lượng ký tự trong mỗi chuỗi.
  • Tf.RaggedTensor này có thể được sử dụng trực tiếp hoặc nó có thể được chuyển đổi thành tf.Tensor dày đặc có đệm bằng cách sử dụng các phương thức tf.RaggedTensor.to_tensor hoặc tf.SparseTensor bằng cách sử dụng tf.RaggedTensor.to_sparse.