Hướng dẫn find similar keywords python - tìm từ khóa tương tự python

Bài viết này đã được xuất bản như một phần của Blogathon khoa học dữ liệu.

Giới thiệu

Hướng dẫn find similar keywords python - tìm từ khóa tương tự python

Dữ liệu phi cấu trúc chứa rất nhiều thông tin. Nó giống như năng lượng khi khai thác, sẽ tạo ra giá trị cao cho các bên liên quan. Rất nhiều công việc đã được thực hiện trong lĩnh vực này bởi các công ty khác nhau. Không có nghi ngờ rằng dữ liệu phi cấu trúc là ồn ào và quan trọng phải được thực hiện để làm sạch, phân tích và làm cho chúng có ý nghĩa khi sử dụng. Bài viết này nói về một khu vực giúp phân tích một lượng lớn dữ liệu bằng cách tóm tắt nội dung và xác định các chủ đề quan tâm - trích xuất từ ​​khóaKeyword Extraction

Tổng quan về trích xuất từ ​​khóa

Đó là một kỹ thuật phân tích văn bản. Chúng ta có thể có được những hiểu biết quan trọng về chủ đề trong một khoảng thời gian ngắn. Nó giúp ngắn gọn văn bản và có được các từ khóa có liên quan. Nó tiết kiệm thời gian đi qua toàn bộ tài liệu. Ví dụ sử dụng các trường hợp đang tìm kiếm các chủ đề quan tâm từ một bài báo tin tức và xác định các vấn đề dựa trên đánh giá của khách hàng và như vậy. Một trong những kỹ thuật được sử dụng để trích xuất từ ​​khóa là TF-IDF (tần số thời hạn-tần số tài liệu nghịch đảo)

TF - Tổng quan IDF

Tần số thời hạn - tần suất một thuật ngữ xảy ra trong một văn bản. Nó được đo bằng số lần một thuật ngữ t xuất hiện trong văn bản / tổng số từ trong tài liệu – How frequently a term occurs in a text. It is measured as the number of times a term t appears in the text / Total number of words in the document

Tần suất tài liệu nghịch đảo - tầm quan trọng của một từ trong một tài liệu. Nó được đo là & nbsp; log (tổng số câu / số câu có thuật ngữ t) – How important a word is in a document. It is measured as log(total number of sentences / Number of sentences with term t)

TF-IDF-Tầm quan trọng của Words Words được đo lường bằng điểm số này. Nó được đo là tf * idf – Words’ importance is measure by this score. It is measured as TF * IDF

Chúng tôi sẽ sử dụng cùng một khái niệm và cố gắng viết mã theo từng dòng bằng cách sử dụng Python. Chúng tôi sẽ lấy một bộ tài liệu văn bản nhỏ hơn và thực hiện tất cả các bước trên. Mặc dù các khái niệm cao hơn để trích xuất từ ​​khóa đã được đưa ra trên thị trường, bài viết này nhằm mục đích tìm hiểu khái niệm cơ bản đằng sau việc xác định tầm quan trọng của từ. Bắt đầu nào!

Thực hiện

1. Nhập gói

Chúng ta cần phải token hóa để tạo mã thông báo Word, itemgetter để sắp xếp từ điển và toán học để thực hiện hoạt động của cơ sở nhật ký

from nltk import tokenize
from operator import itemgetter
import math

2. Khai báo các biến

Chúng tôi sẽ khai báo một biến chuỗi. Nó sẽ là một trình giữ chỗ cho tài liệu văn bản mẫu

doc = 'I am a graduate. I want to learn Python. I like learning Python. Python is easy. Python is interesting. Learning increases thinking. Everyone should invest time in learning'

3. Tháo các điểm dừng

Kỷ luật là những từ thường xuyên xảy ra có thể không mang ý nghĩa đối với phân tích của chúng tôi. Chúng tôi có thể xóa thư viện NLTK bằng cách sử dụng

import nltk
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize 
stop_words = set(stopwords.words('english'))

4. Tìm tổng số từ trong tài liệu & nbsp;

Điều này sẽ được yêu cầu trong khi tính toán tần số thời hạn

5. Tìm tổng số câu

Điều này sẽ được yêu cầu trong khi tính toán tần số tài liệu nghịch đảo

total_sentences = tokenize.sent_tokenize(doc)
total_sent_len = len(total_sentences)
print(total_sent_len)

6. Tính TF cho mỗi từ

Chúng tôi sẽ bắt đầu bằng cách tính toán số từ cho mỗi từ không ngừng và cuối cùng chia từng phần tử cho kết quả của bước 4

tf_score = {}
for each_word in total_words:
    each_word = each_word.replace('.','')
    if each_word not in stop_words:
        if each_word in tf_score:
            tf_score[each_word] += 1
        else:
            tf_score[each_word] = 1

# Dividing by total_word_length for each dictionary element
tf_score.update((x, y/int(total_word_length)) for x, y in tf_score.items())
print(tf_score)

7. Chức năng kiểm tra xem từ có có trong danh sách câu không

Phương pháp này sẽ được yêu cầu khi tính toán IDF

def check_sent(word, sentences): 
    final = [all([w in x for w in word]) for x in sentences] 
    sent_len = [sentences[i] for i in range(0, len(final)) if final[i]]
    return int(len(sent_len))

8. Tính IDF cho mỗi từ

Chúng tôi sẽ sử dụng chức năng trong bước 7 để lặp lại từ không ngừng và lưu trữ kết quả cho tần số tài liệu nghịch ngợm

idf_score = {}
for each_word in total_words:
    each_word = each_word.replace('.','')
    if each_word not in stop_words:
        if each_word in idf_score:
            idf_score[each_word] = check_sent(each_word, total_sentences)
        else:
            idf_score[each_word] = 1

# Performing a log and divide
idf_score.update((x, math.log(int(total_sent_len)/y)) for x, y in idf_score.items())

print(idf_score)

9. Tính TF * IDF

Vì khóa của cả hai từ điển là như nhau, chúng ta có thể lặp lại một từ điển để lấy các phím và nhân các giá trị của cả hai

tf_idf_score = {key: tf_score[key] * idf_score.get(key, 0) for key in tf_score.keys()}
print(tf_idf_score)

10. Tạo một hàm để có được n từ quan trọng trong tài liệu

def get_top_n(dict_elem, n):
    result = dict(sorted(dict_elem.items(), key = itemgetter(1), reverse = True)[:n]) 
    return result

11. Nhận 5 từ quan trọng hàng đầu

print(get_top_n(tf_idf_score, 5))

Sự kết luận

Vì vậy, đây là một trong những cách bạn có thể xây dựng trình trích xuất từ ​​khóa của riêng bạn trong Python! Các bước trên có thể được tóm tắt theo cách đơn giản dưới dạng tài liệu -> Xóa các từ dừng -> Tìm tần số thuật ngữ (tf) -> Tìm tần số tài liệu nghịch đảo (IDF) -> Tìm tf*idf -> Nhận từ khóa đầu N. Hãy chia sẻ suy nghĩ của bạn nếu bài viết này thú vị hoặc giúp bạn bằng mọi cách. Luôn luôn mở cho các cải tiến và đề xuất. Bạn có thể tìm thấy mã trên github