Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Cách lấy mã điểm của từng từ trong câu với TensorFlow và Python

Để lấy mã điểm (code point) của từng từ trong câu, ta thực hiện các bước:

  1. Kiểm tra xem vị trí có phải là bắt đầu của từ hay không.
  2. 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.
  3. Sử dụng offset bắt đầu để xây dựng RaggedTensor chứ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.