Khai thác từ khóa python

mục tiêu. Trong hướng dẫn này, tôi sẽ giới thiệu cho bạn bốn phương pháp để trích xuất từ ​​khóa/cụm từ khóa từ một văn bản, đó là Rake, Yake, Keybert và Textrank. Chúng tôi sẽ tổng quan ngắn gọn về từng tình huống và sau đó áp dụng nó để trích xuất các từ khóa bằng ví dụ đính kèm

Điều kiện tiên quyết. Hiểu biết cơ bản về Python

từ khóa. trích xuất từ ​​khóa, trích xuất cụm từ khóa, Python, NLP, TextRank, Rake, BERT

Tôi muốn chỉ ra rằng trong bài viết trước của mình, tôi đã trình bày một phương pháp trích xuất từ ​​khóa từ tài liệu bằng công cụ tạo véc tơ TFIDF. Phương pháp TFIDF dựa vào số liệu thống kê kho văn bản để tính trọng số cho các từ khóa được trích xuất, do đó, phương pháp này không thể được áp dụng ở đây cho một văn bản và đây là một trong những nhược điểm của phương pháp này

Để minh họa cách thức hoạt động của từng phương pháp (Rake, Yake, Keybert và Textrank), tôi sẽ sử dụng phần tóm tắt bài báo khoa học đã xuất bản của mình với các từ khóa được chỉ định theo chủ đề và tôi sẽ kiểm tra từng phương pháp hiện có và kiểm tra xem phương pháp nào trả về . Biết rằng trong các nhiệm vụ trích xuất từ ​​khóa như vậy, có những từ khóa được gọi là rõ ràng, xuất hiện rõ ràng trong văn bản và những từ khóa tiềm ẩn, được tác giả đề cập đến như những từ khóa không xuất hiện rõ ràng trong văn bản, mà liên quan đến lĩnh vực này.

Khai thác từ khóa python
Ví dụ về văn bản và từ khóa của nó. Nguồn. tác giả (Ali Mansour)

Trong ví dụ hiển thị trong hình ảnh, chúng tôi có tiêu đề văn bản và tóm tắt bài viết và các từ khóa tiêu chuẩn (do tác giả xác định trong bài viết gốc) được đánh dấu màu vàng. Lưu ý rằng từ “học máy” không rõ ràng và không được tìm thấy trong phần tóm tắt. Tất nhiên, chúng tôi có thể lấy toàn văn bài viết, nhưng ở đây để đơn giản, chúng tôi chỉ giới hạn ở phần tóm tắt.

Soạn thảo văn bản

Tiêu đề thường được kết hợp với văn bản được cung cấp vì tiêu đề chứa thông tin có giá trị và phản ánh ngắn gọn nội dung của bài báo. Như vậy, chúng ta sẽ kết hợp text và title đơn giản bằng dấu cộng giữa 2 biến text và title

title = "VECTORIZATION OF TEXT USING DATA MINING METHODS"
text = "In the text mining tasks, textual representation should be not only efficient but also interpretable, as this enables an understanding of the operational logic underlying the data mining models. Traditional text vectorization methods such as TF-IDF and bag-of-words are effective and characterized by intuitive interpretability, but suffer from the «curse of dimensionality», and they are unable to capture the meanings of words. On the other hand, modern distributed methods effectively capture the hidden semantics, but they are computationally intensive, time-consuming, and uninterpretable. This article proposes a new text vectorization method called Bag of weighted Concepts BoWC that presents a document according to the concepts’ information it contains. The proposed method creates concepts by clustering word vectors (i.e. word embedding) then uses the frequencies of these concept clusters to represent document vectors. To enrich the resulted document representation, a new modified weighting function is proposed for weighting concepts based on statistics extracted from word embedding information. The generated vectors are characterized by interpretability, low dimensionality, high accuracy, and low computational costs when used in data mining tasks. The proposed method has been tested on five different benchmark datasets in two data mining tasks; document clustering and classification, and compared with several baselines, including Bag-of-words, TF-IDF, Averaged GloVe, Bag-of-Concepts, and VLAC. The results indicate that BoWC outperforms most baselines and gives 7% better accuracy on average"
full_text = title +", "+ text 
print("The whole text to be usedn",full_text)

Toàn bộ văn bản được sử dụng. Nguồn. tác giả (Ali Mansour)

Bây giờ chúng ta sẽ bắt đầu áp dụng từng phương pháp đã đề cập để trích xuất từ ​​khóa

YẾU

Đó là một phương pháp trích xuất từ ​​khóa tự động nhẹ, không giám sát, dựa trên các tính năng văn bản thống kê được trích xuất từ ​​​​các tài liệu riêng lẻ để xác định các từ khóa có liên quan nhất trong văn bản. Hệ thống này không cần phải được đào tạo trên một bộ tài liệu cụ thể, cũng như không phụ thuộc vào từ điển, kích thước văn bản, tên miền hoặc ngôn ngữ. Yake định nghĩa một bộ năm tính năng nắm bắt các đặc điểm từ khóa được kết hợp theo kinh nghiệm để gán một điểm duy nhất cho mọi từ khóa. Điểm càng thấp, từ khóa sẽ càng quan trọng. Bạn có thể đọc thêm về nó ở đây. Gói Python cho yake

Chúng tôi cài đặt Yake. đầu tiên, sau đó chúng tôi nhập nó

pip install git+https://github.com/LIAAD/yake
import yake

Sau đó, chúng ta phải xây dựng một đối tượng KeywordExtractor. Từ ví dụ Yake, chúng tôi gọi hàm tạo KeywordExtractor, chấp nhận một số tham số, trong đó quan trọng nhất là. số lượng từ được truy xuất (trên cùng) và ở đây chúng tôi đặt nó thành 10. Lan. ở đây chúng tôi sử dụng “en” mặc định. Một danh sách các từ dừng có thể được thông qua. Tiếp theo, chúng ta chuyển văn bản tới hàm extract_keywords, hàm này sẽ trả về một danh sách các bộ (từ khóa. ghi bàn). Từ khóa có độ dài từ 1 đến 3

kw_extractor = yake.KeywordExtractor(top=10, stopwords=None)
keywords = kw_extractor.extract_keywords(full_text)
for kw, v in keywords:
  print("Keyphrase: ",kw, ": score", v)

kết quả Yake. Nguồn. tác giả (Ali Mansour)

Chúng tôi lưu ý rằng có ba từ khóa giống hệt với các từ mà tác giả cung cấp, đó là phương pháp khai thác văn bản, khai thác dữ liệu và vector hóa văn bản. Điều thú vị là YAKE. chú ý đến chữ in hoa và coi trọng hơn những từ bắt đầu bằng chữ in hoa

cào

Rake là viết tắt của Rapid Automatic Keyword Extraction và nó là phương pháp trích xuất từ ​​khóa từ các tài liệu riêng lẻ. Nó cũng có thể được áp dụng vào các lĩnh vực mới rất dễ dàng và rất hiệu quả trong việc xử lý nhiều loại văn bản, đặc biệt là văn bản yêu cầu các quy ước ngữ pháp cụ thể. Rake xác định các cụm từ chính trong văn bản bằng cách phân tích sự xuất hiện của một từ và khả năng tương thích của nó với các từ khác trong văn bản (cùng xuất hiện)

Chúng tôi sẽ sử dụng gói có tên multi_rake. Đầu tiên, cài đặt nó, sau đó chúng tôi nhập Rake

pip install multi_rake

from multi_rake import Rake
rake = Rake()
keywords = rake.apply(full_text)
print(keywords[:10])

kết quả cào. Nguồn. tác giả (Ali Mansour)

Chúng tôi nhận thấy rằng có hai từ khóa có liên quan đó là khai thác văn bản và khai thác dữ liệu

Xếp hạng văn bản

TextRank là một phương pháp không giám sát để trích xuất các từ khóa và câu. Nó dựa trên một biểu đồ trong đó mỗi nút là một từ và các cạnh biểu thị mối quan hệ giữa các từ được hình thành bằng cách xác định sự xuất hiện đồng thời của các từ trong một cửa sổ chuyển động có kích thước xác định trước. Thuật toán được lấy cảm hứng từ PageRank được Google sử dụng để xếp hạng các trang web. Đầu tiên, nó Tokenizes và chú thích văn bản bằng Part of Speech (PoS). Nó chỉ xem xét các từ đơn lẻ. Tuy nhiên, không có n-gram nào được sử dụng, nhiều từ được xây dựng lại sau. Một cạnh được tạo nếu các đơn vị từ vựng cùng xuất hiện trong một cửa sổ gồm N từ để thu được một đồ thị vô hướng không trọng số. Sau đó, nó chạy thuật toán xếp hạng văn bản để xếp hạng các từ. Các từ vựng quan trọng nhất được chọn và sau đó các từ khóa liền kề được sắp xếp thành một từ khóa nhiều từ

Để tạo từ khóa bằng Textrank, trước tiên bạn phải cài đặt gói summa và sau đó phải nhập từ khóa mô-đun

pip install summa
from summa import keywords

Sau đó, bạn chỉ cần gọi hàm từ khóa và chuyển văn bản cần xử lý cho nó. Chúng tôi cũng sẽ đặt điểm thành true để in ra mức độ liên quan của từng từ khóa kết quả

TR_keywords = keywords.keywords(full_text, scores=True)
print(TR_keywords[0:10])

kết quả xếp hạng văn bản. Nguồn. tác giả

KeyBert

KeyBERT là một thuật toán trích xuất từ ​​khóa đơn giản, dễ sử dụng, tận dụng các nhúng SBERT để tạo từ khóa và cụm từ khóa từ một tài liệu giống với tài liệu đó hơn. Đầu tiên, nhúng tài liệu (một đại diện) được tạo bằng mô hình câu-BERT. Tiếp theo, phần nhúng của các từ được trích xuất cho các cụm từ N-gram. Sau đó, độ tương tự của từng cụm từ khóa với tài liệu được đo bằng độ tương tự cosine. Những từ tương tự nhất sau đó có thể được xác định là những từ mô tả đúng nhất toàn bộ tài liệu và được coi là từ khóa

Để tạo từ khóa bằng keybert, trước tiên bạn phải cài đặt gói keybert và sau đó có thể nhập mô-đun keyBERT

pip install keybert
from keybert import KeyBERT

Sau đó, bạn tạo một thể hiện của keyBERT chấp nhận một tham số, đó là mô hình Câu-Bert. Bạn có thể chọn bất kỳ mô hình nhúng nào bạn muốn từ nguồn sau. Theo tác giả, mô hình all-mpnet-base-v2 là tốt nhất

________số 8

Nó sẽ bắt đầu tải xuống như thế

Tải xuống mô hình được đào tạo trước BERT. Nguồn. tác giả Ali mansour

Hàm extract_keywords chấp nhận một số tham số, trong đó quan trọng nhất là. văn bản, số từ tạo nên cụm từ khóa (n,m), top_n. số lượng từ khóa được truy xuất và cuối cùng đánh dấu. nếu highlight=true nó sẽ in văn bản và đánh dấu các từ khóa bằng màu vàng

keywords = kw_model.extract_keywords(full_text, 

                                     keyphrase_ngram_range=(1, 3), 

                                     stop_words='english', 

                                     highlight=False,

                                     top_n=10)

keywords_list= list(dict(keywords).keys())

print(keywords_list)

Kết quả Keybert với phạm vi n-gram (1,3). Nguồn. tác giả

Bạn có thể thay đổi cụm từ khóa ngram_range thành (1,2), vì hầu hết các cụm từ khóa đều có độ dài từ 1 đến 2. Lần này chúng ta sẽ đặt highlight thành true

Kết quả Keybert với phạm vi n-gram (1,2). Nguồn. tác giả

Thật là đáng kinh ngạc

Phần kết luận

Chúng tôi đã trình bày bốn trong số các kỹ thuật hiện đại được sử dụng trong lĩnh vực trích xuất từ ​​khóa/cụm từ khóa với việc triển khai mã cho từng kỹ thuật đó. Mỗi phương pháp trong số bốn phương pháp đều có ưu điểm riêng. Mỗi người trong số họ đã thành công trong việc trích xuất các từ khóa giống hệt với các từ khóa được chỉ định bởi tác giả hoặc gần với chúng và liên quan đến lĩnh vực này. Ưu điểm chính của tất cả các phương pháp được đề cập là chúng không yêu cầu đào tạo về các nguồn lực bên ngoài

Công việc này liên quan đến hoạt động khoa học của tôi khi đang làm luận án tiến sĩ. D. Tôi hy vọng rằng thông tin được cung cấp sẽ có ích cho tất cả. Trong tương lai, chúng tôi sẽ trình bày một phương pháp cải tiến mới để tự động trích xuất từ ​​khóa và hiệu suất của nó sẽ được so sánh với các đường cơ sở đã đề cập và nhiều phương pháp khác

Bạn có thể kiểm tra mã trên kho lưu trữ của tôi tại GitHub. Tôi sẽ biết ơn bất kỳ thông tin phản hồi

Về tôi. Tên tôi là Ali Mahmoud Mansour. Tôi đến từ Syria và hiện tại (vào năm 2022) tôi đang là sinh viên tốt nghiệp (Ph. D. nhà nghiên cứu) trong lĩnh vực khoa học máy tính. Đam mê khai thác văn bản và khoa học dữ liệu

Người giới thiệu

  1. Yake. Campos, Ricardo, và cộng sự. “YẾU. Trích xuất từ ​​khóa từ các tài liệu đơn lẻ bằng nhiều tính năng cục bộ. ” Khoa học thông tin 509 (2020). 257-289
  2. cào. Rake Rose, Stuart, và cộng sự. “Trích xuất từ ​​khóa tự động từ các tài liệu riêng lẻ. ” Khai thác văn bản. ứng dụng và lý thuyết 1 (2010). 1-20
  3. Xếp hạng văn bản. Mihalcea, Rada, và Paul Tarau. “Xếp hạng văn bản. Đưa trật tự vào văn bản. ” Kỷ yếu hội nghị năm 2004 về các phương pháp thực nghiệm trong xử lý ngôn ngữ tự nhiên. 2004
  4. chìa khóaBert. Grootendorst M. Keybert. Khai thác từ khóa tối thiểu với bert //. – 2020

Phương tiện hiển thị trong bài viết này không thuộc sở hữu của Analytics Vidhya và được sử dụng theo quyết định của Tác giả