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ệuDữ 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 IDFTầ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ện1. Nhập góiChú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ếnChú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ừngKỷ 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ôngPhươ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 * IDFVì 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ệudef 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 đầuprint(get_top_n(tf_idf_score, 5)) Sự kết luậnVì 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 |