Để lấy mã điểm (code point) của từng từ trong câu, ta thực hiện các bước:
- Kiểm tra xem vị trí có phải là bắt đầu của từ hay không.
- Kiểm tra chỉ số ký tự có bắt đầu từ chỉ số cụ thể của từ trong danh sách phẳng (flattened) tất cả ký tự của các câu.
- Sử dụng offset bắt đầu để xây dựng
RaggedTensorchứa danh sách từ.
Các định danh script (script identifiers) giúp xác định ranh giới từ: ranh giới được thêm ở đầu câu và tại mỗi ký tự có script khác với ký tự trước.
Mã ví dụ
print("Kiểm tra câu có bắt đầu từ không")
sentence_char_starts_word = tf.concat(
[tf.fill([sentence_char_script.nrows(), 1], True),
tf.not_equal(sentence_char_script[:, 1:], sentence_char_script[:, :-1])],
axis=1)
print("Kiểm tra chỉ số ký tự bắt đầu từ index từ trong danh sách phẳng")
word_starts = tf.squeeze(tf.where(sentence_char_starts_word.values), axis=1)
print(word_starts)
print("Lấy mã điểm mỗi ký tự trong mỗi từ")
word_char_codepoint = tf.RaggedTensor.from_row_starts(
values=sentence_char_codepoint.values,
row_starts=word_starts)
print(word_char_codepoint)
Nguồn mã: TensorFlow Unicode Tutorial
Đầu ra
Kiểm tra câu có bắt đầu từ không Kiểm tra chỉ số ký tự bắt đầu từ index từ trong danh sách phẳng tf.Tensor([ 0 5 7 12 13 15], shape=(6,), dtype=int64) Lấy mã điểm mỗi ký tự trong mỗi từ <tf.RaggedTensor [[72, 101, 108, 108, 111], [44, 32], [116, 104, 101, 114, 101], [46], [19990, 30028], [12371, 12435, 12395, 12385, 12399]]>
Giải thích
- Script identifiers xác định vị trí thêm ranh giới từ.
- Ranh giới từ được thêm ở đầu câu và khi script thay đổi so với ký tự trước.
- Start offsets dùng để xây dựng RaggedTensor chứa danh sách từ của tất cả batch.