Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper • 1908.10084 • Published • 14
How to use TTHDZ/halong_embedding_finetuned with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("TTHDZ/halong_embedding_finetuned")
sentences = [
"Việc tích hợp siêu tụ với pin truyền thống có tác dụng gì đối với tuổi thọ pin?",
"Public_066\nCác phương pháp đặc tả mô hình\nMáy trạng thái UML\nCác phương pháp đặc tả hình thức như máy hữu hạn trạng thái, biểu đồ trạng thái, v.v. giúp ta đặc tả các hệ thống một cách chính xác với ý nghĩa duy nhất (vì chúng sử dụng các công cụ toán học). Tuy nhiên, các phương pháp này thường khó được áp dụng trong công nghiệp vì chúng đòi hỏi các chuyên gia về đặc tả hình thức.\nMáy trạng thái UML được xem là giải pháp tốt để giải quyết vấn đề này. Nó có thể được sử dụng để đặc tả hành vi động (chuyển trạng thái) của các lớp đối tượng, các ca sử dụng (use cases), các hệ thống con và thậm chí là toàn bộ hệ thống. Tuy nhiên, máy trạng thái UML thường được sử dụng cho các lớp đối tượng. Theo [AJ00], biểu đồ cộng tác đặc tả bằng UML là một mô hình quan trọng trong việc kiểm thử hệ thống bởi mô hình này đặc tả chính xác hành vi (tương tác giữa các đối tượng) của hệ thống cần kiểm thử.\nTrong UML, một trạng thái ứng với một điều kiện quan trọng của một đối tượng. Trạng thái này được quyết định bởi các giá trị hiện thời của đối tượng, các mối quan hệ với các đối tượng khác và các hành động (phương thức) mà đối tượng này thực hiện. Một phép chuyển trạng thái là mối quan hệ giữa hai trạng thái. Một phép chuyển trạng thái trong UML bao gồm một sự kiện được kích hoạt, điều kiện và hành động tương ứng. Các sự kiện được kích hoạt của các phép chuyển trạng thái có thể là một trong các sự kiện sau:\n * Một lời gọi ứng với một phương thức\n * Một tín hiệu nhận được từ các trạng thái khác trong máy trạng thái\n * Một sự thay đổi giá trị của một thuộc tính nào đó của một đối tượng\n * Hết thời gian (timeout)\nHình 8.4 là ví dụ về một máy trạng thái UML đặc tả hành vi của hệ thống quản lý bán hàng.\n**Hình 8.4: Một ví dụ về máy trạng thái UML.** |<image_4>|",
"Public_098\nTích hợp với pin truyền thống\n\n* Hệ thống song song: Siêu tụ xử lý các xung công suất cao, trong khi pin đảm nhận lưu trữ năng lượng dài hạn.\n * Tăng tuổi thọ pin: Giảm căng thẳng dòng điện và nhiệt cho pin, kéo dài thời gian sử dụng.\n * Tối ưu hiệu suất năng lượng tái tạo: Kết hợp với pin lưu trữ trong lưới điện gió, mặt trời.",
"Public_202\nTÁC DỤNG, VỊ TRÍ VÀ HÌNH DÁNG CÁC BỘ PHẬN CHỦ YẾU TRONG BUỒNG LÁI XE ÔTÔ\nVô lăng lái\nVô lăng lái dùng để điều khiển hướng chuyển động của xe ôtô.\nVị trí của vô lăng lái trong buồng lái phụ thuộc vào quy định của mỗi nước. Khi quy định chiều thuận của chuyển động là bên phải (theo hướng đi của mình) thì vô lăng lái được bố trí ở phía bên trái (còn gọi là tay lái thuận). Khi quy định chiều thuận của chuyển động là bên trái thì vô lăng lái được bố trí ở phía bên phải (còn gọi là tay lái nghịch).\nTrong giáo trình này chỉ giới thiệu loại “tay lái thuận” theo đúng Luật Giao thông đường bộ của nước Cộng hòa xã hội chủ nghĩa Việt Nam.\nVô lăng lái có dạng hình vành khăn tròn, các kiểu loại thông dụng được trình bày trên hình 1-2.\n|<image_1>|\n_Hình 1-3 : **Các kiểu vô lăng lái**_\n\\- Điều chỉnh Vô lăng lái:\nĐể người lái được thoải mái khi lái xe, nhà sản xuất cho phép người sử dụng có thể điều chỉnh vị trí vô lăng lái cho phù hợp\n|<image_2>|\n_Hình 1-4: Điều chỉnh vị trí vô lăng lái bằng cơ khí_\nĐể điều chỉnh vô lăng lái, người lái xe cần kéo khóa 1 theo chiều mũi tên, điều chỉnh chiều cao vô lăng theo chiều mũi tên 2, điều chỉnh độ gần xa vô lăng theo chiều mũi tên 3 (như trên hình 1-4).\n|<image_3>|\n_Hình 1-5: Điều chỉnh vô lăng bằng điện_\nĐể điều chỉnh vô lăng bên hông trụ lái có 4 nút điều chỉnh theo 4 hướng, người lái bấm nút để điều chỉnh vô lăng lên xuống và gần, xa như trên hình 1-5.\n\\- Bật, tắt sưởi vô lăng: Ở trên một số xe đời mới hiện đại có trang bị hệ thống sưởi cho vô lăng lái như trên hình 1-6.\n|<image_4>|\n_Hình 1-6: Điều khiển sưởi vô lăng_"
]
embeddings = model.encode(sentences)
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [4, 4]This is a sentence-transformers model finetuned from hiieu/halong_embedding. It maps sentences & paragraphs to a 768-dimensional dense vector space and can be used for semantic textual similarity, semantic search, paraphrase mining, text classification, clustering, and more.
SentenceTransformer(
(0): Transformer({'max_seq_length': 512, 'do_lower_case': False, 'architecture': 'XLMRobertaModel'})
(1): Pooling({'word_embedding_dimension': 768, 'pooling_mode_cls_token': False, 'pooling_mode_mean_tokens': True, 'pooling_mode_max_tokens': False, 'pooling_mode_mean_sqrt_len_tokens': False, 'pooling_mode_weightedmean_tokens': False, 'pooling_mode_lasttoken': False, 'include_prompt': True})
(2): Normalize()
)
First install the Sentence Transformers library:
pip install -U sentence-transformers
Then you can load this model and run inference.
from sentence_transformers import SentenceTransformer
# Download from the 🤗 Hub
model = SentenceTransformer("TTHDZ/halong_embedding_finetuned")
# Run inference
sentences = [
'Theo tài liệu Public_119, mục tiêu của LDA là gì?',
'Public_119\nGiới thiệu\n\nTrong hai bài viết trước, PCA (unsupervised) giữ lại tổng phương sai lớn nhất nhưng không dùng nhãn. Trong phân lớp (supervised), tận dụng nhãn thường cho kết quả tốt hơn. Ví dụ chiếu lên các hướng d1 (gần PC1) và d2 (gần thành phần phụ): d1 có thể làm hai lớp chồng lấn, trong khi d2 tách tốt hơn cho classification. Điều này cho thấy giữ lại nhiều phương sai nhất không phải lúc nào cũng tốt cho phân lớp. LDA ra đời để tìm phép chiếu tuyến tính (projection matrix) tối đa hóa khả năng phân biệt (discriminant). Với C lớp, số chiều mới không vượt quá C−1.',
'Public_496\nMẠNG NƠ-RON NHÂN TẠO\nMục đích của phần thí nghiệm\n<table>\n<colgroup>\n<col/>\n</colgroup>\n<thead>\n<tr>\n<th><p>Mục đích của phần thí nghiệm:</p>\n<ul>\n<li><p>Hiểu rõ khái niệm Markov Decision Process (MDP).</p></li>\n<li><p>Nắm được các hàm giá trị\n<math><semantics><msup><mi>V</mi><mi>π</mi></msup><annotation>V^{\\pi}</annotation></semantics></math>(s),\n<math><semantics><msup><mi>Q</mi><mi>π</mi></msup><annotation>Q^{\\pi}</annotation></semantics></math>(s,a)</p></li>\n<li><p>Làm quen với các phương trình Bellman và ý nghĩa tối ưu.</p></li>\n<li><p>Áp dụng các thuật toán Q-learning, SARSA, Policy Gradient,\nActor-Critic.</p></li>\n<li><p>Biết các kỹ thuật regularization và exploration trong\nRL.</p></li>\n</ul></th>\n</tr>\n</thead>\n<tbody>\n</tbody>\n</table>',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 768]
# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities)
# tensor([[1.0000, 1.0000, 1.0000],
# [1.0000, 1.0000, 1.0000],
# [1.0000, 1.0000, 1.0000]])
sentence_0, sentence_1, and sentence_2| sentence_0 | sentence_1 | sentence_2 | |
|---|---|---|---|
| type | string | string | string |
| details |
|
|
|
| sentence_0 | sentence_1 | sentence_2 | ||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Transistor NPN có các cực được sắp xếp như thế nào? |
Public_574 |
Public_028 |
||||||||||||||||||||||||||||||||||||||||
Theo tài liệu Public_087, ô nhiễm không khí là thách thức môi trường nghiêm trọng nhất tại đâu ở Việt Nam? |
Public_087 |
Public_100 |
||||||||||||||||||||||||||||||||||||||||
Theo tài liệu Public_107, nếu learning rate quá nhỏ, kết quả của thuật toán GD sẽ như thế nào? |
Public_107 |
Public_582 |
Base model
intfloat/multilingual-e5-base
from sentence_transformers import SentenceTransformer model = SentenceTransformer("TTHDZ/halong_embedding_finetuned") sentences = [ "Việc tích hợp siêu tụ với pin truyền thống có tác dụng gì đối với tuổi thọ pin?", "Public_066\nCác phương pháp đặc tả mô hình\nMáy trạng thái UML\nCác phương pháp đặc tả hình thức như máy hữu hạn trạng thái, biểu đồ trạng thái, v.v. giúp ta đặc tả các hệ thống một cách chính xác với ý nghĩa duy nhất (vì chúng sử dụng các công cụ toán học). Tuy nhiên, các phương pháp này thường khó được áp dụng trong công nghiệp vì chúng đòi hỏi các chuyên gia về đặc tả hình thức.\nMáy trạng thái UML được xem là giải pháp tốt để giải quyết vấn đề này. Nó có thể được sử dụng để đặc tả hành vi động (chuyển trạng thái) của các lớp đối tượng, các ca sử dụng (use cases), các hệ thống con và thậm chí là toàn bộ hệ thống. Tuy nhiên, máy trạng thái UML thường được sử dụng cho các lớp đối tượng. Theo [AJ00], biểu đồ cộng tác đặc tả bằng UML là một mô hình quan trọng trong việc kiểm thử hệ thống bởi mô hình này đặc tả chính xác hành vi (tương tác giữa các đối tượng) của hệ thống cần kiểm thử.\nTrong UML, một trạng thái ứng với một điều kiện quan trọng của một đối tượng. Trạng thái này được quyết định bởi các giá trị hiện thời của đối tượng, các mối quan hệ với các đối tượng khác và các hành động (phương thức) mà đối tượng này thực hiện. Một phép chuyển trạng thái là mối quan hệ giữa hai trạng thái. Một phép chuyển trạng thái trong UML bao gồm một sự kiện được kích hoạt, điều kiện và hành động tương ứng. Các sự kiện được kích hoạt của các phép chuyển trạng thái có thể là một trong các sự kiện sau:\n * Một lời gọi ứng với một phương thức\n * Một tín hiệu nhận được từ các trạng thái khác trong máy trạng thái\n * Một sự thay đổi giá trị của một thuộc tính nào đó của một đối tượng\n * Hết thời gian (timeout)\nHình 8.4 là ví dụ về một máy trạng thái UML đặc tả hành vi của hệ thống quản lý bán hàng.\n**Hình 8.4: Một ví dụ về máy trạng thái UML.** |<image_4>|", "Public_098\nTích hợp với pin truyền thống\n\n* Hệ thống song song: Siêu tụ xử lý các xung công suất cao, trong khi pin đảm nhận lưu trữ năng lượng dài hạn.\n * Tăng tuổi thọ pin: Giảm căng thẳng dòng điện và nhiệt cho pin, kéo dài thời gian sử dụng.\n * Tối ưu hiệu suất năng lượng tái tạo: Kết hợp với pin lưu trữ trong lưới điện gió, mặt trời.", "Public_202\nTÁC DỤNG, VỊ TRÍ VÀ HÌNH DÁNG CÁC BỘ PHẬN CHỦ YẾU TRONG BUỒNG LÁI XE ÔTÔ\nVô lăng lái\nVô lăng lái dùng để điều khiển hướng chuyển động của xe ôtô.\nVị trí của vô lăng lái trong buồng lái phụ thuộc vào quy định của mỗi nước. Khi quy định chiều thuận của chuyển động là bên phải (theo hướng đi của mình) thì vô lăng lái được bố trí ở phía bên trái (còn gọi là tay lái thuận). Khi quy định chiều thuận của chuyển động là bên trái thì vô lăng lái được bố trí ở phía bên phải (còn gọi là tay lái nghịch).\nTrong giáo trình này chỉ giới thiệu loại “tay lái thuận” theo đúng Luật Giao thông đường bộ của nước Cộng hòa xã hội chủ nghĩa Việt Nam.\nVô lăng lái có dạng hình vành khăn tròn, các kiểu loại thông dụng được trình bày trên hình 1-2.\n|<image_1>|\n_Hình 1-3 : **Các kiểu vô lăng lái**_\n\\- Điều chỉnh Vô lăng lái:\nĐể người lái được thoải mái khi lái xe, nhà sản xuất cho phép người sử dụng có thể điều chỉnh vị trí vô lăng lái cho phù hợp\n|<image_2>|\n_Hình 1-4: Điều chỉnh vị trí vô lăng lái bằng cơ khí_\nĐể điều chỉnh vô lăng lái, người lái xe cần kéo khóa 1 theo chiều mũi tên, điều chỉnh chiều cao vô lăng theo chiều mũi tên 2, điều chỉnh độ gần xa vô lăng theo chiều mũi tên 3 (như trên hình 1-4).\n|<image_3>|\n_Hình 1-5: Điều chỉnh vô lăng bằng điện_\nĐể điều chỉnh vô lăng bên hông trụ lái có 4 nút điều chỉnh theo 4 hướng, người lái bấm nút để điều chỉnh vô lăng lên xuống và gần, xa như trên hình 1-5.\n\\- Bật, tắt sưởi vô lăng: Ở trên một số xe đời mới hiện đại có trang bị hệ thống sưởi cho vô lăng lái như trên hình 1-6.\n|<image_4>|\n_Hình 1-6: Điều khiển sưởi vô lăng_" ] embeddings = model.encode(sentences) similarities = model.similarity(embeddings, embeddings) print(similarities.shape) # [4, 4]