Hướng dẫn how to vectorize a sentence in python - làm thế nào để vectơ hóa một câu trong python

Tổng quan

  • Tìm hiểu về từ và câu nhúng
  • Biết 4 kỹ thuật nhúng câu hàng đầu được sử dụng trong ngành

Giới thiệu

Khả năng của con người để hiểu sắc thái trong ngôn ngữ là không thể so sánh được. Bộ não con người nhận thức có thể hiểu được sự hài hước, mỉa mai, tình cảm tiêu cực, và nhiều hơn nữa, rất dễ dàng trong một câu nhất định. Tiêu chí duy nhất cho điều này là chúng ta phải biết ngôn ngữ mà câu đang ở.

Chẳng hạn, nếu ai đó bình luận về bài viết của tôi bằng tiếng Nhật, tôi chắc chắn sẽ hiểu những gì người đang cố gắng nói. Đây là quy tắc chung, phải không? Để giao tiếp hiệu quả, chúng ta cần tương tác với người nghe bằng ngôn ngữ mà anh ấy/cô ấy hiểu rõ nhất.

Để một máy xử lý và hiểu bất kỳ loại văn bản nào, điều quan trọng là chúng tôi phải đại diện cho văn bản này bằng một ngôn ngữ mà máy có thể hiểu. Bạn nghĩ máy gì có ngôn ngữ nào hiểu rõ nhất? Vâng, đó là số lượng. Một máy chỉ có thể hoạt động với các số, bất kể chúng tôi cung cấp dữ liệu nào cho nó: video, âm thanh, hình ảnh hoặc văn bản. Đó là lý do tại sao, đại diện cho văn bản là số hoặc văn bản nhúng, như nó được gọi, là một trong những chủ đề được nghiên cứu tích cực nhất.

Hướng dẫn how to vectorize a sentence in python - làm thế nào để vectơ hóa một câu trong python

Trong bài viết này, tôi sẽ bao gồm 4 kỹ thuật nhúng câu hàng đầu với mã Python. Hơn nữa, tôi giới hạn phạm vi của bài viết này để cung cấp một cái nhìn tổng quan về kiến ​​trúc của họ và cách thực hiện các kỹ thuật này trong Python. Chúng tôi sẽ sử dụng trường hợp sử dụng cơ bản để tìm các câu tương tự được đưa ra một câu và trình bày cách sử dụng các kỹ thuật đó cho cùng. Tôi sẽ bắt đầu với một cái nhìn tổng quan về việc nhúng từ và câu.

Nếu bạn muốn bắt đầu hành trình học NLP, tôi khuyên bạn nên trải qua khóa học miễn phí này- Giới thiệu về xử lý ngôn ngữ tự nhiên này

Mục lục

  1. Từ nhúng là gì?
  2. Giới thiệu về nhúng câu
  3. Doc2Vec
  4. Câu
  5. Infersent
  6. Bộ mã hóa câu phổ quát

Từ nhúng là gì?

Giới thiệu về nhúng câu

Câu

Hướng dẫn how to vectorize a sentence in python - làm thế nào để vectơ hóa một câu trong python

Infersent

Bộ mã hóa câu phổ quát

Các kỹ thuật nhúng ban đầu chỉ xử lý các từ. Đưa ra một tập hợp các từ, bạn sẽ tạo ra một nhúng cho mỗi từ trong tập hợp. Phương pháp đơn giản nhất là một nóng mã hóa chuỗi các từ được cung cấp để mỗi từ được biểu diễn bằng 1 và các từ khác bằng 0. Trong khi điều này có hiệu quả trong việc thể hiện các từ và các tác vụ xử lý văn bản đơn giản khác, nó không thực sự hoạt động những cái phức tạp hơn, chẳng hạn như tìm từ tương tự.

Giới thiệu về nhúng câu

Câu

Infersent

Bộ mã hóa câu phổ quátSentence Embedding. Sentence embedding techniques represent entire sentences and their semantic information as vectors. This helps the machine in understanding the context, intention, and other nuances in the entire text.

Các kỹ thuật nhúng ban đầu chỉ xử lý các từ. Đưa ra một tập hợp các từ, bạn sẽ tạo ra một nhúng cho mỗi từ trong tập hợp. Phương pháp đơn giản nhất là một nóng mã hóa chuỗi các từ được cung cấp để mỗi từ được biểu diễn bằng 1 và các từ khác bằng 0. Trong khi điều này có hiệu quả trong việc thể hiện các từ và các tác vụ xử lý văn bản đơn giản khác, nó không thực sự hoạt động những cái phức tạp hơn, chẳng hạn như tìm từ tương tự.

  1. Doc2Vec
  2. Câu
  3. Infersent
  4. Bộ mã hóa câu phổ quát

Chúng tôi giả định rằng bạn có kiến ​​thức trước về các từ nhúng từ và các khái niệm NLP cơ bản khác. Trước khi tiếp tục, tôi khuyên bạn nên đọc các bài viết sau-

  • Hướng dẫn cuối cùng để hiểu và thực hiện xử lý ngôn ngữ tự nhiên (với mã trong Python)
  • Một hướng dẫn cần thiết cho việc nhúng từ trước cho các học viên NLP

Bây giờ chúng ta hãy bắt đầu!

Trước tiên chúng tôi sẽ thiết lập một số thư viện cơ bản và xác định danh sách các câu của chúng tôi. Các bước sau đây sẽ giúp bạn làm như vậy-

Bước 1:

Đầu tiên, nhập thư viện và tải xuống ‘punkt‘

Bước 2:

Sau đó, chúng tôi xác định danh sách các câu của chúng tôi. Bạn có thể sử dụng một danh sách lớn hơn (tốt nhất là sử dụng danh sách các câu để xử lý dễ dàng hơn của từng câu)

Bước 3:

Chúng tôi cũng sẽ giữ & nbsp; một phiên bản mã thông báo của những câu này

Mã Python:

Hướng dẫn how to vectorize a sentence in python - làm thế nào để vectơ hóa một câu trong python

Bước 4:

Cuối cùng, chúng tôi xác định một hàm trả về độ tương tự cosine giữa 2 vectơ

Chúng ta hãy bắt đầu bằng cách khám phá từng kỹ thuật nhúng câu từng.

Doc2Vec

Một phần mở rộng của Word2VEC, việc nhúng DOC2VEC là một trong những kỹ thuật phổ biến nhất hiện có. Được giới thiệu vào năm 2014, đây là một thuật toán không được giám sát và thêm vào mô hình Word2VEC bằng cách giới thiệu một vectơ đoạn văn khác. Ngoài ra, có 2 cách để thêm vectơ đoạn văn vào mô hình.

1.1) PVDM (Phiên bản bộ nhớ phân phối của vectơ đoạn văn): Chúng tôi gán một câu vectơ đoạn trong khi chia sẻ các vectơ từ giữa tất cả các câu. Sau đó, chúng tôi trung bình hoặc kết hợp (vectơ đoạn và vectơ từ) để có được biểu diễn câu cuối cùng. Nếu bạn chú ý, đó là một phần mở rộng của loại từ trong từ của Word2VEC liên tục, nơi chúng tôi dự đoán từ tiếp theo đưa ra một tập hợp các từ. Chỉ trong PVDM, chúng tôi dự đoán câu tiếp theo được đưa ra một tập hợp các câu. PVDM(Distributed Memory version of Paragraph Vector): We assign a paragraph vector sentence while sharing word vectors among all sentences. Then we either average or concatenate the (paragraph vector and words vector) to get the final sentence representation. If you notice, it is an extension of the Continuous Bag-of-Word type of Word2Vec where we predict the next word given a set of words. It is just that in PVDM, we predict the next sentence given a set of sentences.

Hướng dẫn how to vectorize a sentence in python - làm thế nào để vectơ hóa một câu trong python

1.2) PVDOBW (Túi phân phối phiên bản từ của vectơ đoạn văn): Chỉ cần vôi PVDM, PVDOBW là một phần mở rộng khác, lần này là loại bỏ qua. Ở đây, chúng tôi chỉ lấy mẫu các từ ngẫu nhiên từ câu và làm cho mô hình dự đoán câu nào nó đến từ (một nhiệm vụ phân loại). PVDOBW( Distributed Bag of Words version of Paragraph Vector): Just lime PVDM, PVDOBW is another extension, this time of the Skip-gram type. Here, we just sample random words from the sentence and make the model predict which sentence it came from(a classification task).

Hướng dẫn how to vectorize a sentence in python - làm thế nào để vectơ hóa một câu trong python

Các tác giả của bài báo khuyến nghị sử dụng cả hai kết hợp, nhưng nói rằng PVDM thường là quá đủ cho hầu hết các nhiệm vụ.

Bước 1:

Đầu tiên, nhập thư viện và tải xuống ‘punkt‘

Hướng dẫn how to vectorize a sentence in python - làm thế nào để vectơ hóa một câu trong python

Bước 2:

Sau đó, chúng tôi xác định danh sách các câu của chúng tôi. Bạn có thể sử dụng một danh sách lớn hơn (tốt nhất là sử dụng danh sách các câu để xử lý dễ dàng hơn của từng câu)

Hướng dẫn how to vectorize a sentence in python - làm thế nào để vectơ hóa một câu trong python

Bước 3:

Chúng tôi cũng sẽ giữ & nbsp; một phiên bản mã thông báo của những câu này

Hướng dẫn how to vectorize a sentence in python - làm thế nào để vectơ hóa một câu trong python

Mã Python:

Bước 4:

  • Cuối cùng, chúng tôi xác định một hàm trả về độ tương tự cosine giữa 2 vectơ
  • Chúng ta hãy bắt đầu bằng cách khám phá từng kỹ thuật nhúng câu từng.
  • Một phần mở rộng của Word2VEC, việc nhúng DOC2VEC là một trong những kỹ thuật phổ biến nhất hiện có. Được giới thiệu vào năm 2014, đây là một thuật toán không được giám sát và thêm vào mô hình Word2VEC bằng cách giới thiệu một vectơ đoạn văn khác. Ngoài ra, có 2 cách để thêm vectơ đoạn văn vào mô hình.
  • 1.1) PVDM (Phiên bản bộ nhớ phân phối của vectơ đoạn văn): Chúng tôi gán một câu vectơ đoạn trong khi chia sẻ các vectơ từ giữa tất cả các câu. Sau đó, chúng tôi trung bình hoặc kết hợp (vectơ đoạn và vectơ từ) để có được biểu diễn câu cuối cùng. Nếu bạn chú ý, đó là một phần mở rộng của loại từ trong từ của Word2VEC liên tục, nơi chúng tôi dự đoán từ tiếp theo đưa ra một tập hợp các từ. Chỉ trong PVDM, chúng tôi dự đoán câu tiếp theo được đưa ra một tập hợp các câu.

1.2) PVDOBW (Túi phân phối phiên bản từ của vectơ đoạn văn): Chỉ cần vôi PVDM, PVDOBW là một phần mở rộng khác, lần này là loại bỏ qua. Ở đây, chúng tôi chỉ lấy mẫu các từ ngẫu nhiên từ câu và làm cho mô hình dự đoán câu nào nó đến từ (một nhiệm vụ phân loại).

Hướng dẫn how to vectorize a sentence in python - làm thế nào để vectơ hóa một câu trong python

Các tác giả của bài báo khuyến nghị sử dụng cả hai kết hợp, nhưng nói rằng PVDM thường là quá đủ cho hầu hết các nhiệm vụ.

!pip install sentence-transformers

Bước 1:

Đầu tiên, nhập thư viện và tải xuống ‘punkt‘

Bước 2:

Sau đó, chúng tôi xác định danh sách các câu của chúng tôi. Bạn có thể sử dụng một danh sách lớn hơn (tốt nhất là sử dụng danh sách các câu để xử lý dễ dàng hơn của từng câu)

Bước 3:

Chúng tôi cũng sẽ giữ & nbsp; một phiên bản mã thông báo của những câu này

Bước 4:

Cuối cùng, chúng tôi xác định một hàm trả về độ tương tự cosine giữa 2 vectơ

Hướng dẫn how to vectorize a sentence in python - làm thế nào để vectơ hóa một câu trong python

Chúng ta hãy bắt đầu bằng cách khám phá từng kỹ thuật nhúng câu từng.

Một phần mở rộng của Word2VEC, việc nhúng DOC2VEC là một trong những kỹ thuật phổ biến nhất hiện có. Được giới thiệu vào năm 2014, đây là một thuật toán không được giám sát và thêm vào mô hình Word2VEC bằng cách giới thiệu một vectơ đoạn văn khác. Ngoài ra, có 2 cách để thêm vectơ đoạn văn vào mô hình.

1.1) PVDM (Phiên bản bộ nhớ phân phối của vectơ đoạn văn): Chúng tôi gán một câu vectơ đoạn trong khi chia sẻ các vectơ từ giữa tất cả các câu. Sau đó, chúng tôi trung bình hoặc kết hợp (vectơ đoạn và vectơ từ) để có được biểu diễn câu cuối cùng. Nếu bạn chú ý, đó là một phần mở rộng của loại từ trong từ của Word2VEC liên tục, nơi chúng tôi dự đoán từ tiếp theo đưa ra một tập hợp các từ. Chỉ trong PVDM, chúng tôi dự đoán câu tiếp theo được đưa ra một tập hợp các câu.entailment, contradiction, or neutral.

1.2) PVDOBW (Túi phân phối phiên bản từ của vectơ đoạn văn): Chỉ cần vôi PVDM, PVDOBW là một phần mở rộng khác, lần này là loại bỏ qua. Ở đây, chúng tôi chỉ lấy mẫu các từ ngẫu nhiên từ câu và làm cho mô hình dự đoán câu nào nó đến từ (một nhiệm vụ phân loại).

  • Kết nối
  • sản phẩm yếu tố khôn ngoan
  • Sự khác biệt hoàn toàn yếu tố khôn ngoan.

Hướng dẫn how to vectorize a sentence in python - làm thế nào để vectơ hóa một câu trong python

Vectơ đầu ra của các hoạt động này sau đó được đưa cho một trình phân loại phân loại vectơ thành một trong 3 loại được xác định ở trên. Bài viết thực tế đề xuất các kiến ​​trúc bộ mã hóa khác nhau, tập trung chủ yếu xung quanh GRUS, LSTM và BILSTM.

Một tính năng quan trọng khác là Infersent sử dụng các vectơ găng tay cho các từ nhúng từ được đào tạo trước. Một phiên bản gần đây hơn của Infersent, được gọi là Infersent2 sử dụng fasttext.

Hãy cho chúng tôi xem cách tác vụ tương tự câu hoạt động bằng cách sử dụng thông tin. Chúng tôi sẽ sử dụng Pytorch cho việc này, vì vậy hãy đảm bảo rằng bạn có phiên bản Pytorch mới nhất được cài đặt từ đây.

Bước 1:

Như đã đề cập ở trên, có 2 phiên bản infersent. Phiên bản 1 sử dụng găng tay trong khi phiên bản 2 sử dụng vectơ fasttext. Bạn có thể chọn làm việc với bất kỳ mô hình nào (tôi đã sử dụng phiên bản 2). Do đó, chúng tôi tải xuống mô hình infersent và các vectơ từ được đào tạo trước. Đối với điều này, trước tiên vui lòng lưu tệp model.py từ đây và lưu trữ nó trong thư mục làm việc của bạn.

Chúng tôi cũng cần lưu mô hình được đào tạo và các vectơ từ găng tay được đào tạo trước. Theo mã dưới đây, thư mục làm việc của chúng tôi nên có một thư mục acders mã hóa và một thư mục có tên ‘Găng tay. Thư mục bộ mã hóa sẽ có mô hình của chúng tôi trong khi thư mục găng tay nên có các vectơ từ:

Sau đó, chúng tôi tải mô hình của chúng tôi và từ nhúng của chúng tôi:

Bước 2:

Sau đó, chúng tôi xây dựng từ vựng từ danh sách các câu mà chúng tôi đã xác định ở đầu:

Hướng dẫn how to vectorize a sentence in python - làm thế nào để vectơ hóa một câu trong python

Bước 3:

Giống như trước đây, chúng tôi có truy vấn thử nghiệm và chúng tôi sử dụng thông tin để mã hóa truy vấn thử nghiệm này và tạo ra một nhúng cho nó.

Hướng dẫn how to vectorize a sentence in python - làm thế nào để vectơ hóa một câu trong python

Bước 4:

Cuối cùng, chúng tôi tính toán độ tương tự cosine của truy vấn này với mỗi câu trong văn bản của chúng tôi:

Hướng dẫn how to vectorize a sentence in python - làm thế nào để vectơ hóa một câu trong python

Bộ mã hóa câu phổ quát

Một trong những kỹ thuật nhúng câu có hiệu suất tốt nhất ngay bây giờ là bộ mã hóa câu phổ quát. Và nó sẽ không có gì ngạc nhiên từ bất kỳ ai mà nó đã được đề xuất bởi Google. Tính năng chính ở đây là chúng ta có thể sử dụng nó cho việc học đa nhiệm vụ.

Điều này có nghĩa là các bản nhúng câu mà chúng tôi tạo có thể được sử dụng cho nhiều nhiệm vụ như phân tích tình cảm, phân loại văn bản, tương tự câu, v.v. và kết quả của những yêu cầu này sau đó được đưa trở lại mô hình để có được các vectơ câu tốt hơn trước đó.

Phần thú vị nhất là bộ mã hóa này dựa trên hai mô hình bộ mã hóa và chúng ta có thể sử dụng một trong hai mô hình:

  • Máy biến áp

  • Mạng trung bình sâu (Dan)

Cả hai mô hình này đều có khả năng lấy một từ hoặc câu làm đầu vào và tạo nhúng cho cùng. Sau đây là luồng cơ bản:

  1. Token hóa các câu sau khi chuyển đổi chúng thành chữ thường
  2. Tùy thuộc vào loại bộ mã hóa, câu được chuyển đổi thành vectơ 512 chiều
    • Nếu chúng ta sử dụng máy biến áp, nó tương tự như mô-đun bộ mã hóa của kiến ​​trúc máy biến áp và sử dụng cơ chế tự chú ý.
    • Tùy chọn Dan tính toán Unigram và Bigram nhúng trước và sau đó tính trung bình chúng để có được một nhúng duy nhất. Điều này sau đó được chuyển đến một mạng lưới thần kinh sâu để nhận được một câu cuối cùng nhúng 512 chiều.
  3. Các bản nhúng câu này sau đó được sử dụng cho các nhiệm vụ không được giám sát và giám sát khác nhau như SkipThoughts, NLI, v.v. Mô hình được đào tạo sau đó được sử dụng lại để tạo ra một bản nhúng câu 512 mới.

Để bắt đầu sử dụng Nhúng sử dụng, trước tiên chúng ta cần cài đặt TensorFlow và TensorFlow Hub:

Bước 1: Thứ nhất, chúng tôi sẽ nhập các thư viện cần thiết sau: Firstly, we will import the following necessary libraries:

Bước 2: Mô hình có sẵn cho chúng tôi thông qua TFHUB. Hãy để tải mô hình: The model is available to us via the TFHub. Let’s load the model:

Hướng dẫn how to vectorize a sentence in python - làm thế nào để vectơ hóa một câu trong python

Bước 3: Sau đó, chúng tôi sẽ tạo ra các nhúng cho danh sách câu của chúng tôi cũng như cho truy vấn của chúng tôi. Điều này đơn giản như chỉ chuyển các câu cho mô hình: Then we will generate embeddings for our sentence list as well as for our query. This is as simple as just passing the sentences to the model:

Bước 4: Cuối cùng, chúng tôi sẽ tính toán sự tương đồng giữa truy vấn kiểm tra của chúng tôi và danh sách các câu: Finally, we will compute the similarity between our test query and the list of sentences:

Hướng dẫn how to vectorize a sentence in python - làm thế nào để vectơ hóa một câu trong python

Ghi chú kết thúc

Để kết luận, chúng tôi đã thấy 4 kỹ thuật nhúng câu hàng đầu trong NLP và các mã cơ bản để sử dụng chúng để tìm sự tương đồng về văn bản. Tôi đề nghị bạn tham gia một bộ dữ liệu lớn hơn và thử các mô hình này trên bộ dữ liệu này cho các tác vụ NLP khác. Ngoài ra, đây chỉ là một mã cơ bản để tính toán tương tự câu. Đối với một mô hình thích hợp, bạn sẽ cần phải xử lý trước các câu này trước và sau đó biến chúng thành nhúng.

Ngoài ra, tôi đã đưa ra một cái nhìn tổng quan về kiến ​​trúc và tôi có thể chờ đợi để khám phá nhiều hơn về cách các kỹ thuật nhúng câu sẽ tăng cường để giúp các máy hiểu ngôn ngữ của chúng tôi tốt hơn ngày càng tốt hơn!

Nếu bạn quan tâm để tìm hiểu NLP, tôi khuyên bạn nên xử lý ngôn ngữ tự nhiên (NLP) khóa học này bằng cách sử dụng Python

Hơn nữa, bài viết này không nói rằng không có mô hình phổ biến nào khác. Một số đề cập danh dự bao gồm FastSent, Skip-Suped, Soup-Suped, Word Movers nhúng, v.v ... Nếu bạn đã thử những điều này hoặc bất kỳ mô hình nào khác, vui lòng chia sẻ nó với chúng tôi trong các bình luận bên dưới!

Làm thế nào để bạn vector hóa dữ liệu văn bản?

Vectơ văn bản là quá trình chuyển đổi văn bản thành biểu diễn số ...
Tần số thuật ngữ nhị phân ..
Túi từ (cung) tần số thời hạn ..
(L1) Tần số thời hạn chuẩn hóa ..
(L2) TF-idf được chuẩn hóa ..
Word2Vec..

Vector hóa trong Python là gì?

Vectorization là một kỹ thuật thực hiện các hoạt động mảng mà không cần sử dụng cho các vòng lặp.Thay vào đó, chúng tôi sử dụng các chức năng được xác định bởi các mô -đun khác nhau được tối ưu hóa cao giúp giảm thời gian chạy và thực hiện của mã.a technique of implementing array operations without using for loops. Instead, we use functions defined by various modules which are highly optimized that reduces the running and execution time of code.

Nó có nghĩa là gì khi vectorize văn bản?

Trong xử lý ngôn ngữ tự nhiên (NLP), chúng ta thường nói về vector hóa văn bản - đại diện cho các từ, câu hoặc thậm chí các đơn vị văn bản lớn hơn dưới dạng vectơ (hoặc vectơ vector nhúng).Các loại dữ liệu khác, như hình ảnh, âm thanh và video, cũng có thể được mã hóa dưới dạng vectơ.

Làm thế nào để các từ trở thành vectơ?

Chuyển đổi các từ sang vectơ, hoặc vectơ từ, là một quá trình xử lý ngôn ngữ tự nhiên (NLP).Quá trình sử dụng các mô hình ngôn ngữ để ánh xạ các từ vào không gian vector.Một không gian vector đại diện cho mỗi từ bằng một vectơ của các số thực.Nó cũng cho phép các từ có nghĩa tương tự có biểu diễn tương tự.uses language models to map words into vector space. A vector space represents each word by a vector of real numbers. It also allows words with similar meanings have similar representations.