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

KeyBERT: Trích xuất từ khóa một cách dễ dàng

0 0 8

Người đăng: Minh Le

Theo Viblo Asia

Phát hiện những từ khóa quan trọng nhất từ văn bản của bạn một cách dễ dàng

Giới thiệu

Trong quá trình phát triển hệ thống RAG, mình nhận thấy người dùng thường đưa ra các câu hỏi mơ hồ thay vì những câu hỏi cụ thể. Điều này khiến LLM khó hiểu và khiến việc tìm kiếm trong cơ sở dữ liệu vector trở nên khó khăn hơn. Do đó, cần có những phương pháp để giải quyết vấn đề này.

image.png

Từ khóa là yếu tố quan trọng đối với mọi nội dung thành công, dù đó là một cuộc thảo luận, một bài viết hay bất kỳ thứ gì khác. Chiến lược này bao gồm việc tìm kiếm từ khóa trong các truy vấn của người dùng, giúp bộ thu thập tập trung vào các thuật ngữ đó để xác định các cụm từ tương tự, làm cho việc thu được kết quả gần đúng trở nên đơn giản hơn.

KeyBERT là một công cụ trích xuất từ khóa dựa trên LLM. Nó sử dụng các embedding BERT và độ tương tự cosine cơ bản để xác định các cụm từ con trong một tài liệu nào đó có độ tương tự cao nhất với chính tài liệu đó. Cách thức hoạt động của nó được mô tả như sau:

  • Trích xuất các embedding tài liệu bằng BERT để có được biểu diễn cấp tài liệu.
  • Sử dụng các embedding từ để trích xuất các từ/cụm từ N-gram.
  • KeyBERT sử dụng độ tương tự cosine để xác định các từ/cụm từ nào có độ tương tự cao nhất với tài liệu. Các cụm từ tương ứng nhất được chọn là những cụm từ mô tả tốt nhất toàn bộ tài liệu.

Dưới đây là repo Github của KeyBERT: https://github.com/MaartenGr/KeyBERT.git

Lưu ý: Mình khuyến khích các bạn truy cập repo KeyBERT vì nó giới thiệu cách tích hợp với sentence_transformers và LLMs một cách cụ thể, cho phép KeyBERT cập nhật theo kịp những đổi mới mới nhất trong lĩnh vực này.

Thực thi code

Trước tiên, tôi cài đặt và gọi các thư viện cần thiết:

# Install necessary packages
!pip install -q keybert pypdf # Our sample
!wget https://arxiv.org/pdf/1706.03762.pdf # Import libraries
import re
from keybert import KeyBERT
from pypdf import PdfReader

Sau đó, tôi phân tích tệp .pdf bằng PdfReader. Chúng ta có thể xem số trang và nội dung của mỗi trang:

reader = PdfReader("/content/1706.03762.pdf")
print(len(reader.pages)) # 15 pages page_no = 0
page = reader.pages[page_no]
text = page.extract_text()
print(text) """
...
The dominant sequence transduction models are based on complex recurrent or
convolutional neural networks that include an encoder and a decoder. The best
performing models also connect the encoder and decoder through an attention
mechanism. We propose a new simple network architecture, the Transformer,
based solely on attention mechanisms, dispensing with recurrence and convolutions
entirely. Experiments on two machine translation tasks show these models to
be superior in quality while being more parallelizable and requiring significantly
less time to train. Our model achieves 28.4 BLEU on the WMT 2014 English-
to-German translation task, improving over the existing best results, including
ensembles, by over 2 BLEU. On the WMT 2014 English-to-French translation task,
our model establishes a new single-model state-of-the-art BLEU score of 41.8 after
training for 3.5 days on eight GPUs, a small fraction of the training costs of the
best models from the literature. We show that the Transformer generalizes well to
other tasks by applying it successfully to English constituency parsing both with
large and limited training data.
....
"""

Tôi sử dụng KeyBERT để trích xuất từ khóa:

# You can un-note the remove \n if you want.
# text = text.replace("\n", " ") kw_model = KeyBERT()
keywords = kw_model.extract_keywords(text, keyphrase_ngram_range=(1, 3), highlight=True, stop_words='english', use_maxsum=True, top_n=10)

Dưới đây là một số giải thích về mã:

  • Để chỉ định độ dài của các từ khóa/cụm từ khóa được tạo, bạn có thể sử dụng tham số keyphrase_ngram_range. Ví dụ: đặt keyphrase_ngram_range thành (1, 2) hoặc cao hơn, tùy thuộc vào số lượng từ bạn muốn trong các cụm từ khóa được tạo.
  • Hàm use_maxsum trong KeyBERT chọn 2 x top_n từ/cụm từ tương tự nhất trong tài liệu. Sau đó, nó lấy tất cả top_n khả năng từ 2 x top_n từ và trích xuất sự kết hợp có độ tương tự cosine nhỏ nhất.
  • top_n chỉ ra số lượng từ khóa phản hồi mà bạn muốn.

Dưới đây là kết quả: image.png

Kết luận

Trong bài đăng này, tôi đã giới thiệu KeyBERT, một công cụ trích xuất từ khóa sử dụng các embedding BERT và độ tương tự cosine cơ bản để xác định các cụm từ con trong một văn bản có độ tương tự cao nhất với chính nội dung đó. Theo quan điểm của tôi, công cụ này nhẹ nhàng và dễ sử dụng. Hơn nữa, nó hỗ trợ nhiều mô hình và LLM thay thế khác nhau, giúp dễ dàng kết hợp với các hệ thống khác.

Bình luận

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

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

Các thuật toán cơ bản trong AI - Phân biệt Best First Search và Uniform Cost Search (UCS)

Nếu bạn từng đọc các thuật toán trong AI (Artificial Intelligence - Trí tuệ nhân tạo), rất có thể bạn từng nghe qua về các thuật toán tìm kiếm cơ bản: UCS (thuộc chiến lược tìm kiếm mù) và Best First Search (thuộc chiến lược tìm kiếm kinh nghiệm). Khác nhau rõ từ khâu phân loại rồi, thế nhưng hai th

0 0 169

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

Con đường AI của tôi

Gần đây, khá nhiều bạn nhắn tin hỏi mình những câu hỏi đại loại như: có nên học AI, bắt đầu học AI như nào, làm sao tự học cho đúng, cho nhanh, học không bị nản, lộ trình học AI như nào... Sau nhiều lần trả lời, mình nghĩ rằng nên viết hẳn một bài để trả lời chi tiết hơn, cũng như để các bạn sau này

0 0 157

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

[ChatterBot] Thư viện chatbot hay ho dành cho Python| phần 3

Trong bài trước mình đã trình bày về Training data cho chatbot và tiền xử lý dữ liệu. Trong phần này sẽ trình bày với các bạn về logic adapter.

0 0 62

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

[Deep Learning] Kỹ thuật Dropout (Bỏ học) trong Deep Learning

. Trong bài viết này, mình xin phép giới thiệu về Dropout (Bỏ học) trong mạng Neural, sau đó là mình sẽ có 1 số đoạn code để xem Dropout ảnh hưởng thế nào đến hiệu suất của mạng Neural. 1.1. Dropout trong mạng Neural là gì.

0 0 63

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

Kỹ thuật Dropout (Bỏ học) trong Deep Learning

Trong bài viết này, mình xin phép giới thiệu về Dropout (Bỏ học) trong mạng Neural, sau đó là mình sẽ có 1 số đoạn code để xem Dropout ảnh hưởng thế nào đến hiệu suất của mạng Neural. 1.

0 1 80

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

Blockchain dưới con mắt làng Vũ Đại 4.0

Mở bài. Hey nhô các bạn, lại là mình đây .

0 0 50