- vừa được xem lúc

Paraphrase text trên Python với Parrot

0 0 29

Người đăng: Thao Hoang Thu

Theo Viblo Asia

Nếu từng có trải nghiệm làm chatbot (ví dụ với Rasa), chắc hẳn bạn cũng từng phải vò đầu bứt tai cố nghĩ ra các cách nói khác nhau (paraphrase) của cùng một user intent để tạo training data cho chatbot. Paraphrase với tiếng mẹ đẻ là tiếng Việt đã rất nản và mất thời gian rồi chứ đừng nói đến những ngôn ngữ khác. Ngoài ra khi augment data cho một số task NLU khác (ví dụ slot-filling) chúng ta cũng cần đến paraphrasing.

Vì vậy trong bài này mình sẽ giới thiệu với các bạn một công cụ hỗ trợ text paraphrasing cho tiếng Anh dùng python, đó là Parrot Paraphraser.

Parrot là một augmentation framework dựa trên việc paraphrase được xây dựng để tăng tốc độ training của các mô hình NLU (Natural Language Understanding). Công nghệ paraphrasing của PARROT được dựa trên thuật toán T5 (viết tắt của Text-To-Text Transfer Transformer) được phát triển bởi Google (tham khảo thêm về thuật toán này tại đây).

Cài đặt thư viện Parrot và import các thư viện cần thiết

Thư viện Parrot chứa các mô hình text paraphrasing được pre-trained. Mô hình này được gọi là parrot_paraphraser_on_T5 và được list trên trang web của Hugging Face.

! pip install git+https://github.com/PrithivirajDamodaran/Parrot.git from parrot import Parrot
import torch
import warnings
warnings.filterwarnings("ignore")

Reproducibility of the Text Paraphrasing

Để có thể tái hiện lại kết quả paraphrasing, chúng ta sẽ thiết lập một số random seed. Nói cách khác, khi chạy lại code nhiều lần thì kết quả trả ra sẽ giống nhau với mỗi random seed number.

def random_state(seed): torch.manual_seed(seed) if torch.cuda.is_available(): torch.cuda.manual_seed_all(seed) random_state(1234)

Load model

parrot = Parrot(model_tag="prithivida/parrot_paraphraser_on_T5")

Thử nghiệm model nào

phrases = ["Where can I buy the product?", "How do I use this?", "My aircon is not working"]
for phrase in phrases: print("-"*100) print("Input_phrase: ", phrase) print("-"*100) para_phrases = parrot.augment(input_phrase=phrase) for para_phrase in para_phrases: print(para_phrase)

Kết quả : image.png

Chúng ta có thể thấy:

  • Các câu sinh ra đúng ngữ pháp (Fluency)
  • Nghĩa của câu được bảo toàn khá ổn (Adequacy)
  • Mô hình có thể sinh ra một số câu khá là "sáng tạo" - không phải chỉ đơn thuần là thay thế các từ trong câu gốc bằng synonym hoặc sửa đổi cấu trúc ngữ pháp (Diversity)

Một số tùy biến khác

para_phrases = parrot.augment(input_phrase=phrase, use_gpu=False, diversity_ranker="levenshtein", do_diverse=False, max_return_phrases = 10, max_length=32, adequacy_threshold = 0.99, fluency_threshold = 0.90) 

Như vậy chúng ta có thể "tweak" các thông số này để sinh ra được các paraphrases đa dạng hơn tùy theo mục đích sử dụng.

Kết luận

Parrot chủ yếu tập trung vào augmentation cho các văn bản theo dạng conversational interfaces (giao diện đối thoại) cho các bài toán NLU, tức là các câu được nhập vào qua bàn phím hoặc giọng nói của người sử dụng, như vậy các câu sẽ không quá dài. Do đó, mô hình được pre-trained với các mẫu văn bản có độ dài tối đa là 32 và nó cũng perform tốt hơn với các câu đầu vào ngắn gọn, thuộc dạng question hoặc command.

Như vậy trong bài này mình đã giới thiệu đến các bạn thư viện Parrot Paraphraser, có thể được sử dụng để sinh dữ liệu augmentation để training cho chatbot hoặc các bài toán NLU khác. Với mỗi câu paraphrases sinh ra bạn lại có thể dùng nó để paraphrasing tiếp, nhờ vậy việc sinh dữ liệu sẽ đỡ vất vả và nhàm chán hơn rất nhiều ?

Hơi tiếc là hiện tại thư viện này mới chỉ support text tiếng Anh, mình cũng đang nghiên cứu và sẽ chia sẻ thêm về augmentation với các ngôn ngữ khác như tiếng Việt, tiếng Nhật trong các bài tiếp theo.

References

Bình luận

Bài viết tương tự

- vừa được xem lúc

Rasa 2.0 có gì hot?

Kể từ khi ra mắt đến nay, Rasa luôn nằm trong top những chatbot framework phổ biến nhất bởi tính hiệu quả và dễ tùy biến của nó. Nối tiếp sự thành công của những phiên bản trước, tháng 10 vừa rồi đội ngũ phát triển đã cho ra mắt phiên bản mới: Rasa Open Source 2.

0 0 313

- vừa được xem lúc

[RASA 3.0] Tuỳ chỉnh pipeline với BERT và RoBERTa

Giới thiệu về Rasa. Rasa là framework mã nguồn mở được phát triển bởi RASA Inc vào năm 2017, Rasa giúp cho việc phát triển các chatbot máy học một cách thuận tiện hơn, có thể giúp cho những người chưa

0 0 36

- vừa được xem lúc

[RASA 3] - Bài 1: Làm quen Rasa 3 - tạo chatbot chào hỏi đơn giản

Rasa là framework mã nguồn mở giúp xây dựng chatbot - sử dụng ngôn ngữ lập trình Python. Mục đích chính của chuỗi bài viết này là chia sẻ lại quá trình thực hành với Rasa 3 của mình, hy vọng có thể gi

0 0 14

- vừa được xem lúc

[RASA 3] - Bài 2: Nhúng Chatbot Rasa vào website UI

Bài trước mình đã thực hành làm quen với Rasa 3 và dạy chatbot chào hỏi cơ bản. Vì mục đích bài này chỉ là có một giao diện chat thay thế command line cho đẹp thôi nên mình sẽ làm theo cách đơn giản v

0 0 21

- vừa được xem lúc

[RASA 3] Bài 3 - Trích lọc thông tin từ nội dung chat của người dùng

Bài trước mình đã thực hành làm quen với Rasa 3 và dạy chatbot chào hỏi cơ bản, và cũng gắn giao diện lên website UI nhìn cho thân thiện rồi. Bây giờ mình sẽ tìm hiểu tiếp làm sao để chatbot phản hồi

0 0 13

- vừa được xem lúc

Xác định ý định câu hỏi trong hệ thống hỏi đáp

Mục tiêu bài viết. Phân tích câu hỏi là pha đầu tiên trong kiến trúc chung của một hệ thống hỏi đáp, có nhiệm vụ tìm ra các thông tin cần thiết làm đầu vào cho quá trình xử lý của các pha sau (trích c

0 0 83