Phân cụm tài liệu Python

Đây là dự án áp dụng kỹ thuật phân cụm tài liệu bằng Python. Đối với bài tập này, chúng tôi đã bắt đầu với nội dung của 24 cuốn sách được lấy từ Google như một phần của Dự án Thư viện Google

Dọn dẹp dữ liệu

Các tệp được đọc bằng hệ thống OCR và chứa các thẻ HTML ở mọi nơi nên bước đầu tiên trước khi bắt đầu phân cụm là làm sạch dữ liệu. Quá trình làm sạch dữ liệu như dưới đây

1- Loại bỏ Thẻ HTML [với Thư viện Python HTMLParser]

2- Bỏ dấu câu

3- Xóa các ký tự không phải tiếng Anh

4- Chữ thường tất cả các từ

5- Bắt nguồn các từ bằng cách sử dụng Porter Stemmer

6- Xóa tất cả các từ dừng

7- Xóa các từ có tần suất xuất hiện cao [Các từ có tỷ lệ xuất hiện trên 75% trong tất cả các sách]

Tính tương đồng của tài liệu

Sau khi làm sạch dữ liệu, bước tiếp theo là tìm ma trận tương tự của tài liệu và các vectơ tài liệu thưa thớt bằng TF-IDF. Dưới đây là biểu diễn của ma trận tương tự

Phân cụm và giảm kích thước

Sau khi có được ma trận tương tự và các vectơ thưa thớt của tài liệu từ TF-IDF, chúng tôi bắt đầu áp dụng các kỹ thuật phân cụm và sử dụng các kỹ thuật giảm kích thước để có thể trực quan hóa nó ở dạng 2D

K-Means và Phân tích thành phần nguyên tắc

Phân cụm theo phương tiện K là một trong những kỹ thuật phân cụm phổ biến, với việc giảm kích thước K = 5 và PCA, nó đã tạo ra đầu ra sau

DBScan và nhân rộng đa chiều

DBScan là một thuật toán phân cụm khác mà chúng tôi có thể sử dụng để phân cụm tài liệu. Với giá trị epsilon 1. 2, nó tạo ra 4 cụm và nếu chúng ta kết hợp nó với MDS, nó sẽ tạo ra đầu ra sau

Phân cụm theo cấp bậc với WARD

Phương pháp của WARD thường được sử dụng để tạo các cụm phân cấp, bên dưới là biểu đồ phân cụm phân cấp được tạo nếu chúng tôi áp dụng nó vào tài liệu của mình

Cho trước các tài liệu văn bản, chúng ta có thể tự động nhóm chúng lại. phân cụm văn bản. Chúng tôi sẽ sử dụng KMeans, một thuật toán học máy không giám sát

Tôi đã sưu tầm một số bài viết về mèo và google. Bạn đã đoán ra. thuật toán sẽ tạo ra các cụm. Các bài viết có thể về bất cứ thứ gì, thuật toán phân cụm sẽ tự động tạo các cụm. Thậm chí mát hơn. sự dự đoán

khóa học liên quan. Hoàn thành khóa học Machine Learning với Python

Kmeans

Chúng tôi tạo tài liệu bằng danh sách Python. Trong ví dụ của chúng tôi, tài liệu chỉ đơn giản là các chuỗi văn bản vừa với màn hình. Trong một tình huống thực tế, chúng có thể là những tệp lớn

 
documents = ["This little kitty came to play when I was eating at a restaurant.",
"Merley has the best squooshy kitten belly.",
"Google Translate app is incredible.",
"If you open 100 tab in google you get a smiley face.",
"Best cat photo I've ever taken.",
"Climbing ninja cat.",
"Impressed with google map feedback.",
"Key promoter extension for Google Chrome."]

Khai thác tính năng

KMeans thường chỉ hoạt động với các số. chúng ta cần phải có số. Để lấy số, chúng tôi thực hiện một bước phổ biến được gọi là trích xuất tính năng

Tính năng chúng tôi sẽ sử dụng là TF-IDF, một thống kê số. Thống kê này sử dụng tần suất thuật ngữ và tần suất tài liệu nghịch đảo. Nói ngắn gọn. chúng tôi sử dụng số liệu thống kê để có được các tính năng số. Bởi vì tôi lười biếng, Chúng tôi sẽ sử dụng triển khai thuật toán TF-IDF hiện có trong sklearn

Phương thức TfidfVectorizer[] triển khai thuật toán TF-IDF. Tóm lại, phương pháp TfidfVectorizer chuyển đổi một tập hợp các tài liệu thô thành một ma trận các tính năng TF-IDF

phân cụm văn bản

Sau khi có các đặc trưng số, chúng ta khởi tạo thuật toán KMeans với K=2. Muốn xác định K tự động thì xem bài trước. Sau đó, chúng tôi sẽ in các từ hàng đầu cho mỗi cụm

Sau đó, chúng ta đến phần thú vị. chúng tôi cung cấp một tài liệu mới cho thuật toán phân cụm và để nó dự đoán lớp của nó. Trong đoạn mã dưới đây tôi đã làm điều đó hai lần

Mặc dù các khái niệm về tf-idf, tính tương tự của tài liệu và phân cụm tài liệu đã được thảo luận trong các bài viết trước của tôi, nhưng trong bài viết này, chúng tôi thảo luận về việc triển khai các khái niệm trên và tạo một bản demo hoạt động của phân cụm tài liệu trong Python

Tôi đã tạo tập dữ liệu của riêng mình có tên là 'Sách. csv' trong đó tôi đã thêm tên sách Khoa học máy tính liên quan đến các chủ đề như Khoa học dữ liệu, Lập trình Python, Trí tuệ nhân tạo, v.v., cùng với tên tác giả

Cấu trúc dữ liệu như sau

Tác giảTiêu đề sáchTim RoughgardenAlgorithms IlluminatedSteven SkienaHướng dẫn thiết kế khoa học dữ liệuKevin Ferguson, Max PumperlaDeep Learning and the Game of GoZed ShawTìm hiểu Python theo cách khó

Nhiệm vụ là phân cụm các tên sách bằng tf-idf và K-Means Clustering

Đầu tiên, tôi đã nhập tất cả các thư viện cần thiết

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.cluster import KMeans
import numpy as np
import pandas as pd
import csv

tôi đã nhập khẩu. csv bằng cách chỉ định đường dẫn

data=pd.read_csv["/home/Documents/Books.csv"]
print[data.shape]
print [list[data.columns]]#returns list
data.describe[]

đầu ra

[31, 2]
['Author', 'Title']
Tác giảTiêu đềcount3131unique3129topMax BramerGiới thiệu về Deep Learningfreq12

Vì, tôi dự định chỉ áp dụng K-Means Clustering trên tên Sách, nên tôi đã triển khai đoạn mã sau để tạo 2 danh sách riêng cho tác giả và tên sách

authors = []
titles = []
with open["/home/Documents/Books.csv"] as csvfobj: #csvfobj=object
    readCSV= csv.reader[csvfobj, delimiter=','] #as each field is separated by ','
    #if file is not in the same project, add file path
    #Reader object creates matrix
    title = []
    #to iterate through file row by row
    for row in readCSV:
        author = row[0]
        title = row[1]
        
        #adding to the list
        authors.append[author]
        titles.append[title]
        
print [authors]
print[titles]

đầu ra

['Brian Christian, Tom Griffiths', 'Jeff Erickson', 'Martin Erwig', 'Robert Sedgewick', 'Tim Roughgarden', 'Steven Skiena', 'Max Bramer',. ]
['Thuật toán để tồn tại', 'Thuật toán', 'Thuật toán Ngày xửa ngày xưa', 'Thuật toán', 'Làm sáng tỏ thuật toán', 'Sổ tay thiết kế khoa học dữ liệu', 'Nguyên tắc dữ liệu . ]

tf-idf

Bây giờ, các vectơ tf-idf cho tất cả các tiêu đề được tính toán bằng cách sử dụng sklearn. khai thác tính năng. chữ. TfidfVectorizer

  • Để hiển thị vectơ tf-idf cho bất kỳ tiêu đề nào, cần phải đặt nó trong DataFrame trình bày đầu ra ở dạng bảng
tfidfvect = TfidfVectorizer[stop_words='english']
X = tfidfvect.fit_transform[titles]

first_vector = X[0]
 
dataframe = pd.DataFrame[first_vector.T.todense[], index = vectorizer.get_feature_names[], columns = ["tfidf"]]
dataframe.sort_values[by = ["tfidf"],ascending=False]

đầu ra

tfidflive0. 796514thuật toán0. 604621phần mềm0. 000000. lịch sử0. 000000

Phân cụm K-Means

Cuối cùng, mô hình K-Means Clustering được xây dựng bằng sklearn. cụm. KMeans

num = 5
kmeans = KMeans[n_clusters = num, init = 'k-means++', max_iter = 500, n_init = 1]
kmeans.fit[X]
print[kmeans.cluster_centers_] #This will print cluster centroids as tf-idf vectors

đầu ra

[[0. 034752240. 076923080. 246864710. 034752240. 0. 150460020. 0. 055813890. 034752240. 035805370. 0. 0. 0. 0. 0. 064922190. 0. 0. 064922190. 0. 0. 0. 0. 040003350. 034752240. 0. 0. 034752240. 088483660. 034752240. 061270280. 0. 150460020. 0. 034752240. 0. 0. 061270280. 0. 035805370. 0. 0. 0. 0. 0. 0. 128026330. 034752240. 035805370. 0. 0. 0. 0. 0. 0. 0. 040003350. ][. ]]

Để dự đoán cụm cho tên sách mới

X = tfidfvect.transform[["Data Structures and Algorithms"]]
predicted = kmeans.predict[X]
print[predicted]

đầu ra

________số 8

Điều này sẽ cho kết quả ở dạng [n] trong đó n sẽ chỉ ra số cụm mà cuốn sách "Cấu trúc dữ liệu và thuật toán" sẽ thuộc về

Có thể sử dụng phân cụm cho dữ liệu văn bản không?

Phân cụm văn bản là nhiệm vụ nhóm một tập hợp các văn bản không được gắn nhãn sao cho các văn bản trong cùng một cụm giống nhau hơn so với các văn bản trong các cụm khác . Các thuật toán phân cụm văn bản xử lý văn bản và xác định xem có tồn tại các cụm [nhóm] tự nhiên trong dữ liệu hay không.

Phân cụm Python là gì?

Phân cụm là một tập hợp các kỹ thuật được sử dụng để phân vùng dữ liệu thành các nhóm hoặc cụm . Các cụm được định nghĩa một cách lỏng lẻo là các nhóm đối tượng dữ liệu giống với các đối tượng khác trong cụm của chúng hơn là với các đối tượng dữ liệu trong các cụm khác. Trong thực tế, phân cụm giúp xác định hai phẩm chất của dữ liệu. ý nghĩa.

Cụm DM là gì?

Phân cụm trong Khai thác dữ liệu là gì? . Phân cụm là một phương pháp phân vùng một tập hợp dữ liệu hoặc đối tượng thành một tập hợp các lớp con quan trọng được gọi là cụm. the method of converting a group of abstract objects into classes of similar objects. Clustering is a method of partitioning a set of data or objects into a set of significant subclasses called clusters.

Chủ Đề