Gensim - Tài liệu & Corpus
Ở đây, chúng ta sẽ tìm hiểu về các khái niệm cốt lõi của Gensim, với trọng tâm chính là các tài liệu và kho dữ liệu.
Các khái niệm cốt lõi của Gensim
Sau đây là các khái niệm và thuật ngữ cốt lõi cần thiết để hiểu và sử dụng Gensim:
Document - ZIt đề cập đến một số văn bản.
Corpus - Nó đề cập đến một tập hợp các tài liệu.
Vector - Biểu diễn toán học của một tài liệu được gọi là véc tơ.
Model - Nó đề cập đến một thuật toán được sử dụng để chuyển đổi vectơ từ biểu diễn này sang biểu diễn khác.
Tài liệu là gì?
Như đã thảo luận, nó đề cập đến một số văn bản. Nếu chúng ta đi vào một số chi tiết, nó là một đối tượng của kiểu chuỗi văn bản được gọi là‘str’ trong Python 3. Ví dụ, trong Gensim, một tài liệu có thể là bất kỳ thứ gì như:
- Tweet ngắn gồm 140 ký tự
- Một đoạn văn, tức là bài báo hoặc bài báo nghiên cứu tóm tắt
- Bài báo
- Book
- Novel
- Theses
Trình tự văn bản
Loại trình tự văn bản thường được gọi là ‘str’ trong Python 3. Như chúng ta biết rằng trong Python, dữ liệu dạng văn bản được xử lý bằng chuỗi hoặc cụ thể hơn ‘str’các đối tượng. Các chuỗi về cơ bản là chuỗi bất biến của các điểm mã Unicode và có thể được viết theo những cách sau:
Single quotes - Ví dụ, ‘Hi! How are you?’. Nó cũng cho phép chúng tôi nhúng dấu ngoặc kép. Ví dụ,‘Hi! “How” are you?’
Double quotes - Ví dụ, "Hi! How are you?". Nó cũng cho phép chúng tôi nhúng các dấu ngoặc kép. Ví dụ,"Hi! 'How' are you?"
Triple quotes - Nó có thể có ba dấu nháy đơn như, '''Hi! How are you?'''. hoặc ba dấu ngoặc kép như,"""Hi! 'How' are you?"""
Tất cả các khoảng trắng sẽ được bao gồm trong chuỗi ký tự.
Thí dụ
Sau đây là một ví dụ về Tài liệu trong Gensim -
Document = “Tutorialspoint.com is the biggest online tutorials library and it’s all free also”
Corpus là gì?
Ngữ liệu có thể được định nghĩa là một tập hợp lớn và có cấu trúc gồm các văn bản có thể đọc được bằng máy được tạo ra trong một môi trường giao tiếp tự nhiên. Trong Gensim, một tập hợp các đối tượng tài liệu được gọi là kho ngữ liệu. Số nhiều của ngữ liệu làcorpora.
Vai trò của Corpus trong Gensim
Một kho văn bản trong Gensim phục vụ hai vai trò sau:
Đóng vai trò là đầu vào để đào tạo một mô hình
Vai trò đầu tiên và quan trọng của kho ngữ liệu trong Gensim, là đầu vào để đào tạo một mô hình. Để khởi tạo các thông số bên trong của mô hình, trong quá trình đào tạo, mô hình tìm kiếm một số chủ đề và chủ đề phổ biến từ kho dữ liệu đào tạo. Như đã thảo luận ở trên, Gensim tập trung vào các mô hình không được giám sát, do đó nó không yêu cầu bất kỳ sự can thiệp nào của con người.
Phục vụ như Trình trích xuất chủ đề
Sau khi mô hình được đào tạo, nó có thể được sử dụng để trích xuất các chủ đề từ các tài liệu mới. Ở đây, các tài liệu mới là những tài liệu không được sử dụng trong giai đoạn đào tạo.
Thí dụ
Kho tài liệu có thể bao gồm tất cả các tweet của một người cụ thể, danh sách tất cả các bài báo của một tờ báo hoặc tất cả các bài nghiên cứu về một chủ đề cụ thể, v.v.
Thu thập Corpus
Sau đây là một ví dụ về kho tài liệu nhỏ chứa 5 tài liệu. Ở đây, mọi tài liệu là một chuỗi bao gồm một câu đơn.
t_corpus = [
"A survey of user opinion of computer system response time",
"Relation of user perceived response time to error measurement",
"The generation of random binary unordered trees",
"The intersection graph of paths in trees",
"Graph minors IV Widths of trees and well quasi ordering",
]
Tiền xử lý Thu thập Corpus
Sau khi chúng tôi thu thập tài liệu, một số bước xử lý trước nên được thực hiện để giữ cho tập tài liệu đơn giản. Chúng tôi chỉ cần loại bỏ một số từ tiếng Anh thường được sử dụng như 'the'. Chúng tôi cũng có thể loại bỏ các từ chỉ xuất hiện một lần trong ngữ liệu.
Ví dụ: tập lệnh Python sau được sử dụng để viết thường mỗi tài liệu, chia nó theo khoảng trắng và lọc ra các từ dừng:
Thí dụ
import pprint
t_corpus = [
"A survey of user opinion of computer system response time",
"Relation of user perceived response time to error measurement",
"The generation of random binary unordered trees",
"The intersection graph of paths in trees",
"Graph minors IV Widths of trees and well quasi ordering",
]
stoplist = set('for a of the and to in'.split(' '))
processed_corpus = [[word for word in document.lower().split() if word not in stoplist]
for document in t_corpus]
pprint.pprint(processed_corpus)
]
Đầu ra
[['survey', 'user', 'opinion', 'computer', 'system', 'response', 'time'],
['relation', 'user', 'perceived', 'response', 'time', 'error', 'measurement'],
['generation', 'random', 'binary', 'unordered', 'trees'],
['intersection', 'graph', 'paths', 'trees'],
['graph', 'minors', 'iv', 'widths', 'trees', 'well', 'quasi', 'ordering']]
Tiền xử lý hiệu quả
Gensim cũng cung cấp chức năng để xử lý trước tập tin hiệu quả hơn. Theo kiểu xử lý trước như vậy, chúng ta có thể chuyển đổi một tài liệu thành một danh sách các mã thông báo viết thường. Chúng tôi cũng có thể bỏ qua các mã thông báo quá ngắn hoặc quá dài. Chức năng như vậy làgensim.utils.simple_preprocess(doc, deacc=False, min_len=2, max_len=15).
gensim.utils.simple_preprocess() fucntion
Gensim cung cấp chức năng này để chuyển đổi tài liệu thành danh sách các mã thông báo viết thường và cũng để bỏ qua các mã thông báo quá ngắn hoặc quá dài. Nó có các thông số sau:
doc (str)
Nó đề cập đến tài liệu đầu vào mà quá trình tiền xử lý nên được áp dụng.
deacc (bool, tùy chọn)
Tham số này được sử dụng để xóa các dấu trọng âm khỏi các mã thông báo. Nó sử dụngdeaccent() để làm điều này.
min_len (int, tùy chọn)
Với sự trợ giúp của tham số này, chúng tôi có thể đặt độ dài tối thiểu của mã thông báo. Các mã thông báo ngắn hơn độ dài đã xác định sẽ bị loại bỏ.
max_len (int, tùy chọn)
Với sự trợ giúp của tham số này, chúng ta có thể đặt độ dài tối đa của mã thông báo. Các mã thông báo dài hơn độ dài đã xác định sẽ bị loại bỏ.
Đầu ra của hàm này sẽ là các mã thông báo được trích xuất từ tài liệu đầu vào.