K-nghĩa là trực quan hóa cụm văn bản Python

Hiến pháp nắm giữ các nguyên tắc và quy tắc cơ bản tạo thành cơ sở pháp lý của một quốc gia. Họ xác định hệ thống chính phủ và mối quan hệ giữa các chi nhánh và tổ chức

Khi được viết, các tài liệu này có thể khá độc đáo và khác biệt về nhiều mặt, chẳng hạn như độ dài và thuật ngữ pháp lý. Tuy nhiên, họ cũng có thể chia sẻ một số tính năng khác, vì chúng có xu hướng có mục đích tương tự

Một phân tích văn bản của dữ liệu như vậy có thể hữu ích. Chúng tôi sẽ áp dụng một số kỹ thuật để so sánh và nhóm các hiến pháp khác nhau. Công việc này cố gắng xem liệu các tập văn bản hiến pháp có phải là biểu thị của các hệ thống chính phủ được thiết lập và vạch ra hay không.

Để làm như vậy, chúng tôi sẽ sử dụng trọng số thuật ngữ TF-IDF và phân cụm K-Means từ scikit-learning. Nếu bạn cần bồi dưỡng phân tích văn bản, vui lòng kiểm tra tại đây

# importing the libraries
import os
import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.cluster import KMeans

%matplotlib inline

Có 35 hiến pháp trong bộ dữ liệu của chúng tôi. Hầu hết các tài liệu đã được truy vấn từ dự án cấu thành vào tháng 4 năm 2021, sử dụng trình thu thập thông tin đơn giản triển khai thư viện

print[df['document'].tolist[]]
1

Nếu bạn có ý định lấy dữ liệu của mình từ nguồn ở trên và như một nghi thức cạo tốt nói chung, vui lòng thông cảm và tránh làm quá tải máy chủ của họ với các yêu cầu

Sau khi nhập các thư viện cần thiết, chúng tôi đọc tài liệu của mình tới

print[df['document'].tolist[]]
2

# Construct an empty DataFrame with two columns
df = pd.DataFrame[columns=['document', 'content']]
# Go through the files in working directory
# If it's a text file, open it and append the content to the DataFrame
for filename in os.listdir[os.getcwd[]]:
    if filename.endswith['.txt']:
        df = df.append[{"document": filename[:len[filename]-4],
                        "content": open[filename, encoding='latin_1'].read[].replace["\n"," "]},
                       ignore_index=True]

Chúng ta nên kiểm tra tên của các tài liệu. Vì các cột

print[df['document'].tolist[]]
3
print[df['document'].tolist[]]
2 là
print[df['document'].tolist[]]
5, chúng ta có thể kéo chúng ra và gọi
print[df['document'].tolist[]]
6 để biến chúng thành danh sách Python

print[df['document'].tolist[]]

['algeria_constitution', 'australia_constitution', 'austria_constitution', 'belgium_constitution', 'brazil_constitution', 'burkinafaso_constitution', 'china_constitution', 'costarica_constitution', 'ecuador_constitution', 'france_constitution', 'germany_constitution', 'india_constitution', 'japan_constitution', 'korea_constitution', 'malaysia_constitution', 'mexico_constitution', 'morocco_constitution', 'netherlands_constitution', 'nigeria_constitution', 'norway_constitution', 'pakistan_constitution', 'peru_constitution', 'portugal_constitution', 'rwanda_constitution', 'senegal_constitution', 'singapore_constitution', 'southafrica_constitution', 'spain_constitution', 'sweden_constitution', 'switzerland_constitution', 'tunisia_constitution', 'turkey_constitution', 'us_constitution', 'vietnam_constitution', 'zambia_constitution']

Như chúng ta có thể thấy, hiến pháp liên quan đến các quốc gia khác nhau trên khắp thế giới, với các hệ thống chính quyền khác nhau. Một số quốc gia trong danh sách là các chế độ quân chủ, những quốc gia khác là các nước cộng hòa. Một số có một chính phủ đơn nhất, trong khi những người khác là liên bang. Và sự khác biệt cũng mở rộng đến cơ quan lập pháp.
Trên thực tế, đây là một bộ sưu tập đa dạng. Tuy nhiên, chúng ta nên nhớ rằng hầu hết các bản hiến pháp này đều được dịch từ ngôn ngữ mẹ đẻ của chúng. Ý nghĩa ban đầu trong mỗi tài liệu có thể không được truyền đạt với cùng mức độ chính xác.

Xử lý văn bản và phân tích thăm dò

Tiếp theo, chúng ta bắt đầu phân tích.
Đầu tiên, chúng tôi chọn danh sách _______ 17 từ dự án Bộ công cụ ngôn ngữ tự nhiên [________ 18]. Đây là những thuật ngữ có tần suất xuất hiện cao [như ai và cái] mà chúng tôi có thể muốn lọc ra khỏi tài liệu trước khi xử lý.

print[df['document'].tolist[]]
2

print[df['document'].tolist[]]
3

Sau đó, chúng tôi sẽ mã hóa các văn bản của mình. NLTK cung cấp một số loại mã thông báo cho mục đích đó. Chúng tôi sẽ sử dụng trình mã thông báo biểu thức chính quy tùy chỉnh, phát hiện các từ chỉ chứa các ký tự chữ và số

print[df['document'].tolist[]]
4

Để có thông tin chi tiết tốt hơn từ kho văn bản của chúng tôi, hãy tạo 4 cột mới

  • print[df['document'].tolist[]]
    
    9 cho số lượng từ trong mỗi tài liệu
  • ['algeria_constitution', 'australia_constitution', 'austria_constitution', 'belgium_constitution', 'brazil_constitution', 'burkinafaso_constitution', 'china_constitution', 'costarica_constitution', 'ecuador_constitution', 'france_constitution', 'germany_constitution', 'india_constitution', 'japan_constitution', 'korea_constitution', 'malaysia_constitution', 'mexico_constitution', 'morocco_constitution', 'netherlands_constitution', 'nigeria_constitution', 'norway_constitution', 'pakistan_constitution', 'peru_constitution', 'portugal_constitution', 'rwanda_constitution', 'senegal_constitution', 'singapore_constitution', 'southafrica_constitution', 'spain_constitution', 'sweden_constitution', 'switzerland_constitution', 'tunisia_constitution', 'turkey_constitution', 'us_constitution', 'vietnam_constitution', 'zambia_constitution']
    
    0 cho số lượng từ duy nhất trong mỗi tài liệu
  • ['algeria_constitution', 'australia_constitution', 'austria_constitution', 'belgium_constitution', 'brazil_constitution', 'burkinafaso_constitution', 'china_constitution', 'costarica_constitution', 'ecuador_constitution', 'france_constitution', 'germany_constitution', 'india_constitution', 'japan_constitution', 'korea_constitution', 'malaysia_constitution', 'mexico_constitution', 'morocco_constitution', 'netherlands_constitution', 'nigeria_constitution', 'norway_constitution', 'pakistan_constitution', 'peru_constitution', 'portugal_constitution', 'rwanda_constitution', 'senegal_constitution', 'singapore_constitution', 'southafrica_constitution', 'spain_constitution', 'sweden_constitution', 'switzerland_constitution', 'tunisia_constitution', 'turkey_constitution', 'us_constitution', 'vietnam_constitution', 'zambia_constitution']
    
    1 cho số lượng từ không có trong danh sách từ dừng
  • ['algeria_constitution', 'australia_constitution', 'austria_constitution', 'belgium_constitution', 'brazil_constitution', 'burkinafaso_constitution', 'china_constitution', 'costarica_constitution', 'ecuador_constitution', 'france_constitution', 'germany_constitution', 'india_constitution', 'japan_constitution', 'korea_constitution', 'malaysia_constitution', 'mexico_constitution', 'morocco_constitution', 'netherlands_constitution', 'nigeria_constitution', 'norway_constitution', 'pakistan_constitution', 'peru_constitution', 'portugal_constitution', 'rwanda_constitution', 'senegal_constitution', 'singapore_constitution', 'southafrica_constitution', 'spain_constitution', 'sweden_constitution', 'switzerland_constitution', 'tunisia_constitution', 'turkey_constitution', 'us_constitution', 'vietnam_constitution', 'zambia_constitution']
    
    2 cho tỷ lệ phần trăm từ dừng trong mỗi kho văn bản

print[df['document'].tolist[]]
9

Hãy để chúng tôi sử dụng

['algeria_constitution', 'australia_constitution', 'austria_constitution', 'belgium_constitution', 'brazil_constitution', 'burkinafaso_constitution', 'china_constitution', 'costarica_constitution', 'ecuador_constitution', 'france_constitution', 'germany_constitution', 'india_constitution', 'japan_constitution', 'korea_constitution', 'malaysia_constitution', 'mexico_constitution', 'morocco_constitution', 'netherlands_constitution', 'nigeria_constitution', 'norway_constitution', 'pakistan_constitution', 'peru_constitution', 'portugal_constitution', 'rwanda_constitution', 'senegal_constitution', 'singapore_constitution', 'southafrica_constitution', 'spain_constitution', 'sweden_constitution', 'switzerland_constitution', 'tunisia_constitution', 'turkey_constitution', 'us_constitution', 'vietnam_constitution', 'zambia_constitution']
3 để xem trước 6 hàng đầu tiên của Khung dữ liệu của chúng tôi

print[df['document'].tolist[]]
1

Tất cả các giá trị phần trăm nhỏ hơn 50. Trên thực tế, chúng ta có thể phỏng đoán rằng một văn bản pháp lý được viết tốt không nên có nhiều từ khóa. Tuy nhiên, điều đó có thể không phải lúc nào cũng đúng. Vui lòng chia sẻ ý kiến ​​​​của bạn về điều này, trong phần bình luận bên dưới hoặc qua email

Chúng ta có thể đẩy mạnh việc khám phá hơn nữa và kiểm tra hiến pháp nào có nhiều từ độc đáo nhất và ít nhất. Một biện pháp như vậy có thể là một chỉ báo về mức độ phong phú của từ vựng được sử dụng và cả độ phức tạp của nó.

print[df['document'].tolist[]]
2

# Construct an empty DataFrame with two columns
df = pd.DataFrame[columns=['document', 'content']]
# Go through the files in working directory
# If it's a text file, open it and append the content to the DataFrame
for filename in os.listdir[os.getcwd[]]:
    if filename.endswith['.txt']:
        df = df.append[{"document": filename[:len[filename]-4],
                        "content": open[filename, encoding='latin_1'].read[].replace["\n"," "]},
                       ignore_index=True]
0

Sau giai đoạn khám phá trước đó, chúng tôi chuyển sang trọng số thuật ngữ và

['algeria_constitution', 'australia_constitution', 'austria_constitution', 'belgium_constitution', 'brazil_constitution', 'burkinafaso_constitution', 'china_constitution', 'costarica_constitution', 'ecuador_constitution', 'france_constitution', 'germany_constitution', 'india_constitution', 'japan_constitution', 'korea_constitution', 'malaysia_constitution', 'mexico_constitution', 'morocco_constitution', 'netherlands_constitution', 'nigeria_constitution', 'norway_constitution', 'pakistan_constitution', 'peru_constitution', 'portugal_constitution', 'rwanda_constitution', 'senegal_constitution', 'singapore_constitution', 'southafrica_constitution', 'spain_constitution', 'sweden_constitution', 'switzerland_constitution', 'tunisia_constitution', 'turkey_constitution', 'us_constitution', 'vietnam_constitution', 'zambia_constitution']
4

Giống như chúng tôi đã làm trong bài viết trước được liên kết ở trên, chúng tôi sẽ sử dụng

['algeria_constitution', 'australia_constitution', 'austria_constitution', 'belgium_constitution', 'brazil_constitution', 'burkinafaso_constitution', 'china_constitution', 'costarica_constitution', 'ecuador_constitution', 'france_constitution', 'germany_constitution', 'india_constitution', 'japan_constitution', 'korea_constitution', 'malaysia_constitution', 'mexico_constitution', 'morocco_constitution', 'netherlands_constitution', 'nigeria_constitution', 'norway_constitution', 'pakistan_constitution', 'peru_constitution', 'portugal_constitution', 'rwanda_constitution', 'senegal_constitution', 'singapore_constitution', 'southafrica_constitution', 'spain_constitution', 'sweden_constitution', 'switzerland_constitution', 'tunisia_constitution', 'turkey_constitution', 'us_constitution', 'vietnam_constitution', 'zambia_constitution']
5 từ
['algeria_constitution', 'australia_constitution', 'austria_constitution', 'belgium_constitution', 'brazil_constitution', 'burkinafaso_constitution', 'china_constitution', 'costarica_constitution', 'ecuador_constitution', 'france_constitution', 'germany_constitution', 'india_constitution', 'japan_constitution', 'korea_constitution', 'malaysia_constitution', 'mexico_constitution', 'morocco_constitution', 'netherlands_constitution', 'nigeria_constitution', 'norway_constitution', 'pakistan_constitution', 'peru_constitution', 'portugal_constitution', 'rwanda_constitution', 'senegal_constitution', 'singapore_constitution', 'southafrica_constitution', 'spain_constitution', 'sweden_constitution', 'switzerland_constitution', 'tunisia_constitution', 'turkey_constitution', 'us_constitution', 'vietnam_constitution', 'zambia_constitution']
6 để chuyển đổi bộ sưu tập tài liệu thành ma trận các tính năng TF-IDF. Điều đó sẽ cho phép chúng tôi tính đến tần suất một thuật ngữ xuất hiện.
Một lần nữa,
['algeria_constitution', 'australia_constitution', 'austria_constitution', 'belgium_constitution', 'brazil_constitution', 'burkinafaso_constitution', 'china_constitution', 'costarica_constitution', 'ecuador_constitution', 'france_constitution', 'germany_constitution', 'india_constitution', 'japan_constitution', 'korea_constitution', 'malaysia_constitution', 'mexico_constitution', 'morocco_constitution', 'netherlands_constitution', 'nigeria_constitution', 'norway_constitution', 'pakistan_constitution', 'peru_constitution', 'portugal_constitution', 'rwanda_constitution', 'senegal_constitution', 'singapore_constitution', 'southafrica_constitution', 'spain_constitution', 'sweden_constitution', 'switzerland_constitution', 'tunisia_constitution', 'turkey_constitution', 'us_constitution', 'vietnam_constitution', 'zambia_constitution']
4 là thước đo thống kê đánh giá mức độ liên quan của một từ với tài liệu trong bộ sưu tập tài liệu. Bạn có thể tham khảo tài liệu chính thức của
['algeria_constitution', 'australia_constitution', 'austria_constitution', 'belgium_constitution', 'brazil_constitution', 'burkinafaso_constitution', 'china_constitution', 'costarica_constitution', 'ecuador_constitution', 'france_constitution', 'germany_constitution', 'india_constitution', 'japan_constitution', 'korea_constitution', 'malaysia_constitution', 'mexico_constitution', 'morocco_constitution', 'netherlands_constitution', 'nigeria_constitution', 'norway_constitution', 'pakistan_constitution', 'peru_constitution', 'portugal_constitution', 'rwanda_constitution', 'senegal_constitution', 'singapore_constitution', 'southafrica_constitution', 'spain_constitution', 'sweden_constitution', 'switzerland_constitution', 'tunisia_constitution', 'turkey_constitution', 'us_constitution', 'vietnam_constitution', 'zambia_constitution']
6 để giải thích toán học phức tạp.

# Construct an empty DataFrame with two columns
df = pd.DataFrame[columns=['document', 'content']]
# Go through the files in working directory
# If it's a text file, open it and append the content to the DataFrame
for filename in os.listdir[os.getcwd[]]:
    if filename.endswith['.txt']:
        df = df.append[{"document": filename[:len[filename]-4],
                        "content": open[filename, encoding='latin_1'].read[].replace["\n"," "]},
                       ignore_index=True]
1

phân cụm K-Means

Chúng ta hãy xem qua một lời giải thích ngắn gọn về phân cụm nói chung trước khi đi sâu vào phân cụm K-Means mà chúng ta sẽ sử dụng

Phân cụm là quá trình nhóm một tập hợp các đối tượng, sao cho các đối tượng trong cùng một phân vùng [hoặc cụm] giống nhau hơn [theo một nghĩa nào đó] so với các đối tượng trong các nhóm [cụm] khác.
Có rất nhiều thuật toán phân cụm có thể được sử dụng và việc sử dụng chúng được điều chỉnh theo các điều kiện cụ thể trong các trường hợp sử dụng.

Đối với thuật toán K-Means, nó phân cụm dữ liệu bằng cách cố gắng tách các mẫu thành n nhóm có phương sai bằng nhau. Nó giảm thiểu bình phương khoảng cách giữa trung bình cụm [tâm] và các điểm trong cụm. Thuật toán này yêu cầu số lượng cụm được chỉ định

Dưới đây, chúng tôi đặt số lượng cụm mong muốn. Sự lựa chọn đó không phải là một nhiệm vụ dễ dàng. Có một số cách để xác định số lượng cụm tối ưu, nhưng vì lợi ích của phần trình diễn này, chúng tôi sẽ không đi qua chúng

có thể k

Trong bài báo này, chúng tôi thảo luận về phương pháp phân loại văn bản dựa trên lựa chọn tính năng phân cụm k-mean. K-means là thuật toán cổ điển để phân cụm dữ liệu trong khai thác văn bản, nhưng nó hiếm khi được sử dụng để lựa chọn tính năng . Đối với dữ liệu văn bản, những từ có thể diễn đạt đúng ngữ nghĩa trong một lớp thường là những đặc trưng tốt.

Netflix có sử dụng k

Thuật toán sử dụng dữ liệu bổ sung ngoài tập huấn luyện Netflix. Cụ thể, nó sử dụng ánh xạ từ Netflix tới các tính năng lượm lặt được từ IMDB, chẳng hạn như đạo diễn và thể loại. Sử dụng phân cụm k-means, trước tiên, thuật toán sẽ phân cụm người dùng lại với nhau theo các tính năng IMDB mà mỗi phim có .

Có thể phân cụm trên 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 chưa đượ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.

Bạn có thể sử dụng Kmeans trên dữ liệu phân loại không?

Thuật toán k-Means không áp dụng cho dữ liệu phân loại , vì các biến phân loại rời rạc và không có bất kỳ nguồn gốc tự nhiên nào. Vì vậy, việc tính toán khoảng cách euclide cho không gian chẳng hạn là không có ý nghĩa.

Chủ Đề