Xóa các từ dừng khỏi chuỗi Python nltk

Bạn có thích Xử lý ngôn ngữ tự nhiên (NLP) đa dạng tuyệt vời như thế nào không? . thật thú vị

Nhưng làm việc với dữ liệu văn bản mang đến những thách thức riêng. Máy móc gặp khó khăn khi xử lý văn bản thô. Chúng tôi cần thực hiện một số bước nhất định, được gọi là tiền xử lý, trước khi có thể làm việc với dữ liệu văn bản bằng các kỹ thuật NLP

Bỏ lỡ các bước này, và chúng tôi đang ở trong một mô hình bị hỏng. Đây là những kỹ thuật NLP thiết yếu mà bạn cần kết hợp trong mã, khung và dự án của mình

Chúng tôi đã thảo luận bước đầu tiên về cách bắt đầu với NLP trong bài viết này. Hãy tiến xa hơn một chút và thực hiện một bước nhảy vọt. Chúng tôi sẽ thảo luận về cách xóa từ dừng và thực hiện chuẩn hóa văn bản trong Python bằng một số thư viện NLP rất phổ biến – NLTK, spaCy, Gensim và TextBlob

Bạn là người mới bắt đầu học NLP?

Mục lục

  • Từ dừng là gì?
  • Tại sao chúng ta cần Xóa Stopwords?
  • Khi nào chúng ta nên Xóa từ khóa?
  • Các phương pháp khác nhau để loại bỏ các từ dừng
    • Sử dụng NLTK
    • Sử dụng spaCy
    • Sử dụng Gensim
  • Giới thiệu về chuẩn hóa văn bản
  • Stemming và Lemmatization là gì?
  • Phương pháp thực hiện Stemming và Lemmatization
    • Sử dụng NLTK
    • Sử dụng spaCy
    • Sử dụng TextBlob

Từ dừng là gì?

Từ dừng là những từ phổ biến nhất trong bất kỳ ngôn ngữ tự nhiên nào. Với mục đích phân tích dữ liệu văn bản và xây dựng mô hình NLP, những từ khóa này có thể không bổ sung nhiều giá trị cho ý nghĩa của tài liệu

Nói chung, những từ phổ biến nhất được sử dụng trong văn bản là “the”, “is”, “in”, “for”, “where”, “when”, “to”, “at”, v.v.

Hãy xem xét chuỗi văn bản này - “Có một cây bút trên bàn”. Giờ đây, các từ “is”, “a”, “on” và  “the” không thêm ý nghĩa gì cho câu lệnh khi phân tích cú pháp câu lệnh đó. Trong khi những từ như “there”, “book” và “table” là những từ khóa và cho chúng ta biết nội dung của câu nói là gì

Một lưu ý ở đây - chúng tôi cần thực hiện mã thông báo trước khi xóa bất kỳ từ dừng nào. Tôi khuyến khích bạn xem qua bài viết của tôi bên dưới về các phương pháp khác nhau để thực hiện mã thông báo

Dưới đây là danh sách các từ khóa cơ bản mà bạn có thể thấy hữu ích

a about after all also always am an and any are at be been being but by came can cant come 
could did didn't do does doesn't doing don't else for from get give goes going had happen 
has have having how i if ill i'm in into is isn't it its i've just keep let like made make 
many may me mean more most much no not now of only or our really say see some something 
take tell than that the their them then they thing this to try up us use used uses very 
want was way we what when where which who why will with without wont you your youre

Tại sao chúng ta cần loại bỏ các từ dừng?

Một câu hỏi khá quan trọng và bạn phải có trong tâm trí

Loại bỏ các từ khóa không phải là một quy tắc khó và nhanh trong NLP. Nó phụ thuộc vào nhiệm vụ mà chúng tôi đang làm. Đối với các tác vụ như phân loại văn bản, trong đó văn bản được phân loại thành các danh mục khác nhau, các từ dừng sẽ được xóa hoặc loại trừ khỏi văn bản đã cho để có thể tập trung hơn vào những từ xác định ý nghĩa của văn bản

Giống như chúng ta đã thấy trong phần trên, những từ như there, book và table thêm nhiều ý nghĩa hơn cho văn bản so với các từ is và on

Tuy nhiên, trong các tác vụ như dịch máy và tóm tắt văn bản, không nên xóa từ dừng

Dưới đây là một vài lợi ích chính của việc loại bỏ từ dừng

  • Khi xóa từ khóa, kích thước tập dữ liệu giảm và thời gian đào tạo mô hình cũng giảm
  • Xóa từ dừng có khả năng giúp cải thiện hiệu suất vì có ít hơn và chỉ còn lại các mã thông báo có ý nghĩa. Do đó, nó có thể tăng độ chính xác phân loại
  • Ngay cả các công cụ tìm kiếm như Google cũng xóa các từ dừng để truy xuất dữ liệu nhanh chóng và phù hợp từ cơ sở dữ liệu

Khi nào chúng ta nên xóa từ khóa?

Tôi đã tóm tắt điều này thành hai phần. khi nào chúng ta có thể xóa từ khóa và khi nào chúng ta nên tránh làm như vậy

Chúng tôi có thể xóa từ dừng trong khi thực hiện các tác vụ sau

  • Phân loại văn bản
    • Lọc thư rác
    • Phân loại ngôn ngữ
    • Phân loại thể loại
  • Tạo phụ đề
  • Tạo thẻ tự động

Tránh xóa từ dừng

  • Dịch máy
  • Mô hình hóa ngôn ngữ
  • Tóm tắt văn bản
  • Vấn đề trả lời câu hỏi

Vui lòng thêm nhiều nhiệm vụ NLP vào danh sách này

Các phương pháp khác nhau để loại bỏ các từ dừng

1. Loại bỏ từ khóa bằng NLTK

NLTK, hay Bộ công cụ ngôn ngữ tự nhiên, là một kho tàng thư viện để xử lý trước văn bản. Đó là một trong những thư viện Python yêu thích của tôi. NLTK có một danh sách các từ khóa được lưu trữ bằng 16 ngôn ngữ khác nhau

Bạn có thể sử dụng mã bên dưới để xem danh sách các từ dừng trong NLTK

import nltk
from nltk.corpus import stopwords
set(stopwords.words('english'))

Bây giờ, để xóa từ khóa bằng NLTK, bạn có thể sử dụng khối mã sau. Đây là cửa sổ mã hóa TRỰC TIẾP để bạn có thể nghịch mã và xem kết quả mà không cần rời khỏi bài viết

Đây là danh sách chúng tôi thu được sau khi token hóa

He determined to drop his litigation with the monastry, and relinguish his claims to the 
wood-cuting and fishery rihgts at once. He was the more ready to do this becuase the rights
had become much less valuable, and he had indeed the vaguest idea where the wood and river
 in question were.

Và danh sách sau khi loại bỏ từ khóa

He determined drop litigation monastry, relinguish claims wood-cuting fishery rihgts. He 
ready becuase rights become much less valuable, indeed vaguest idea wood river question.

Lưu ý rằng kích thước của văn bản đã giảm gần một nửa. Bạn có thể hình dung được tính hữu ích tuyệt đối của việc loại bỏ các từ khóa không?

2. Loại bỏ từ khóa bằng spaCy

spaCy là một trong những thư viện linh hoạt và được sử dụng rộng rãi nhất trong NLP. Chúng tôi có thể xóa các từ dừng khỏi văn bản đã cho một cách nhanh chóng và hiệu quả bằng SpaCy. Nó có một danh sách các từ khóa riêng có thể được nhập dưới dạng STOP_WORDS từ spacy. lang thang. vi. lớp stop_words

Đây là cách bạn có thể xóa từ dừng bằng spaCy trong Python

Đây là danh sách chúng tôi thu được sau khi token hóa

He determined to drop his litigation with the monastry and relinguish his claims to the 
wood-cuting and \n fishery rihgts at once. He was the more ready to do this becuase the 
rights had become much less valuable, and he had \n indeed the vaguest idea where the wood
 and river in question were.

Và danh sách sau khi loại bỏ từ khóa

determined drop litigation monastry, relinguish claims wood-cuting \n fishery rihgts. ready
becuase rights become valuable, \n vaguest idea wood river question.

Một điểm quan trọng cần lưu ý – loại bỏ từ dừng không loại bỏ dấu chấm câu hoặc ký tự xuống dòng. Chúng tôi sẽ cần phải loại bỏ chúng bằng tay

Đọc thêm về spaCy trong bài viết này với những người đồng sáng lập thư viện

3. Loại bỏ từ khóa bằng Gensim

Gensim là một thư viện khá tiện dụng để làm việc với các tác vụ NLP. Trong khi tiền xử lý, gensim cũng cung cấp các phương pháp để loại bỏ các từ khóa. Chúng ta có thể dễ dàng nhập phương thức remove_stopwords từ lớp gensim. phân tích cú pháp. sơ chế

Hãy dùng thử Gensim để xóa các từ khóa trong cửa sổ mã hóa trực tiếp bên dưới

He determined drop litigation monastry, relinguish claims wood-cuting fishery rihgts once.
He ready becuase rights valuable, vaguest idea wood river question were.

Trong khi sử dụng gensim để loại bỏ từ khóa, chúng ta có thể sử dụng trực tiếp nó trên văn bản thô. Không cần thực hiện mã thông báo trước khi xóa từ khóa. Điều này có thể tiết kiệm cho chúng ta rất nhiều thời gian

Giới thiệu về chuẩn hóa văn bản

Trong bất kỳ ngôn ngữ tự nhiên nào, các từ có thể được viết hoặc nói ở nhiều dạng tùy thuộc vào tình huống. Đó là điều làm cho ngôn ngữ trở thành một phần thú vị trong cuộc sống của chúng ta, phải không?

  • Lisa vừa ăn vừa rửa bát
  • Họ đang ăn mì ở một quán cà phê
  • Bạn không muốn ăn trước khi chúng tôi rời đi?
  • chúng tôi vừa mới ăn sáng
  • Nó cũng ăn trái cây và rau quả

Trong tất cả các câu này, chúng ta có thể thấy rằng từ ăn đã được sử dụng dưới nhiều hình thức. Đối với chúng tôi, thật dễ hiểu rằng ăn uống là hoạt động ở đây. Vì vậy, việc đó là 'ăn', 'ăn' hay 'ăn' không thực sự quan trọng đối với chúng tôi – chúng tôi biết điều gì đang xảy ra

Thật không may, đó không phải là trường hợp của máy. Họ đối xử với những từ này khác nhau. Do đó, chúng ta cần chuẩn hóa chúng thành từ gốc của chúng, đó là “ăn” trong ví dụ của chúng ta

Do đó, chuẩn hóa văn bản là một quá trình chuyển đổi một từ thành một dạng chính tắc duy nhất. Điều này có thể được thực hiện bằng hai quá trình, xuất phát và từ vựng. Hãy hiểu chi tiết chúng là gì

Stemming và Lemmatization là gì?

Từ gốc và từ vựng chỉ đơn giản là chuẩn hóa các từ, có nghĩa là giảm một từ về dạng gốc của nó

Trong hầu hết các ngôn ngữ tự nhiên, một từ gốc có thể có nhiều biến thể. Ví dụ: từ 'play' có thể được sử dụng như 'play', 'played', 'plays', v.v. Bạn có thể nghĩ về các ví dụ tương tự (và có rất nhiều)

Trước tiên hãy hiểu về xuất phát

  • Từ gốc là một kỹ thuật chuẩn hóa văn bản giúp cắt bỏ phần cuối hoặc phần đầu của một từ bằng cách tính đến danh sách các tiền tố hoặc hậu tố phổ biến có thể tìm thấy trong từ đó
  • Đó là một quy trình dựa trên quy tắc thô sơ để loại bỏ các hậu tố (“ing”, “ly”, “es”, “s” v.v.) khỏi một từ

Mặt khác, từ vựng là một quy trình có tổ chức và từng bước để lấy dạng gốc của từ. Nó sử dụng từ vựng (tầm quan trọng của từ trong từ điển) và phân tích hình thái (cấu trúc từ và quan hệ ngữ pháp)

Tại sao chúng ta cần thực hiện Stemming hoặc Lemmatization?

Hãy xem xét hai câu sau đây

  • Anh đang lái xe
  • Anh ấy đã lái xe

Chúng ta có thể dễ dàng nói rằng cả hai câu đều truyền đạt cùng một nghĩa, đó là hoạt động thúc đẩy trong quá khứ. Máy sẽ xử lý cả hai câu khác nhau. Vì vậy, để văn bản có thể hiểu được đối với máy, chúng ta cần thực hiện từ gốc hoặc từ vựng.

Một lợi ích khác của chuẩn hóa văn bản là nó làm giảm số lượng từ duy nhất trong dữ liệu văn bản. Điều này giúp giảm thời gian đào tạo của mô hình học máy (và không phải tất cả chúng ta đều muốn điều đó sao?)

S0, chúng ta nên chọn cái nào hơn?

Thuật toán gốc hoạt động bằng cách cắt hậu tố hoặc tiền tố khỏi từ. Lemmatization là một hoạt động mạnh mẽ hơn vì nó xem xét phân tích hình thái của từ

Lemmatization trả về bổ đề, là từ gốc của tất cả các dạng uốn của nó

Chúng ta có thể nói rằng từ gốc là một phương pháp nhanh chóng và bẩn thỉu để cắt các từ về dạng gốc của nó trong khi mặt khác, từ vựng là một hoạt động thông minh sử dụng từ điển được tạo ra bởi kiến ​​thức ngôn ngữ chuyên sâu. Do đó, Lemmatization giúp hình thành các tính năng tốt hơn

Phương pháp thực hiện chuẩn hóa văn bản

1. Chuẩn hóa văn bản bằng NLTK

Thư viện NLTK có rất nhiều phương pháp tuyệt vời để thực hiện các bước tiền xử lý dữ liệu khác nhau. Có các phương thức như PorterStemmer() và WordNetLemmatizer() để thực hiện từ gốc và từ vựng tương ứng

Hãy xem chúng hoạt động

Nhét đầy

He determined drop litigation monastry, relinguish claims wood-cuting fishery rihgts. He 
ready becuase rights become much less valuable, indeed vaguest idea wood river question.
He determin drop litig monastri, relinguish claim wood-cut fisheri rihgt. He readi becuas
right become much less valuabl, inde vaguest idea wood river question.

Chúng ta có thể thấy rõ sự khác biệt ở đây. Bây giờ, hãy thực hiện từ vựng trên cùng một văn bản

bổ đề

He determined drop litigation monastry, relinguish claims wood-cuting fishery rihgts. He 
ready becuase rights become much less valuable, indeed vaguest idea wood river question.

import nltk
from nltk.corpus import stopwords
set(stopwords.words('english'))
0

Ở đây, v là động từ, a là tính từ và n là danh từ. Bộ bổ trợ từ vựng chỉ bổ sung từ vựng cho những từ khớp với tham số pos của phương pháp bổ trợ từ vựng

Lemmatization được thực hiện trên cơ sở gắn thẻ một phần của lời nói (POS tagging). Chúng tôi sẽ nói chi tiết về việc gắn thẻ POS trong một bài viết sắp tới

2. Chuẩn hóa văn bản bằng spaCy

spaCy, như chúng ta đã thấy trước đó, là một thư viện NLP tuyệt vời. Nó cung cấp nhiều phương pháp cấp ngành để thực hiện từ vựng. Thật không may, spaCy không có mô-đun để bắt đầu. Để thực hiện từ vựng, hãy kiểm tra đoạn mã dưới đây

import nltk
from nltk.corpus import stopwords
set(stopwords.words('english'))
1

Ở đây -PRON- là ký hiệu cho đại từ có thể dễ dàng loại bỏ bằng các biểu thức chính quy. Lợi ích của spaCy là chúng ta không phải truyền bất kỳ tham số pos nào để thực hiện từ vựng hóa

3. Chuẩn hóa văn bản bằng TextBlob

TextBlob là một thư viện Python được tạo đặc biệt để xử lý trước dữ liệu văn bản. Nó dựa trên thư viện NLTK. Chúng ta có thể sử dụng TextBlob để thực hiện từ vựng. Tuy nhiên, không có mô-đun để bắt đầu trong TextBlob

Vì vậy, hãy xem cách thực hiện từ vựng bằng TextBlob trong Python

import nltk
from nltk.corpus import stopwords
set(stopwords.words('english'))
2

Giống như chúng ta đã thấy ở trên trong phần NLTK, TextBlob cũng sử dụng gắn thẻ POS để thực hiện từ vựng hóa. Bạn có thể đọc thêm về cách sử dụng TextBlob trong NLP tại đây

Ghi chú kết thúc

Từ dừng đóng một vai trò quan trọng trong các vấn đề như phân tích tình cảm, hệ thống trả lời câu hỏi, v.v. Đó là lý do tại sao việc xóa từ khóa có thể ảnh hưởng nghiêm trọng đến độ chính xác của mô hình của chúng tôi

Như tôi đã đề cập, đây là phần hai trong loạt bài của tôi về 'Làm thế nào để bắt đầu với NLP'. Bạn có thể xem phần 1 về mã thông báo tại đây

Và nếu bạn đang tìm kiếm một nơi để cuối cùng bạn có thể bắt đầu hành trình NLP của mình, thì chúng tôi có khóa học hoàn hảo dành cho bạn

Tôi có nên xóa các từ dừng trước khi bổ đề không?

Không bắt buộc . Xóa mật khẩu đôi khi có thể hữu ích và đôi khi không. Bạn nên thử cả hai.

Mô-đun Python nào được sử dụng để loại bỏ các từ dừng?

Xóa các từ dừng bằng NLTK trong Python.

Tại sao loại bỏ các từ dừng trong NLP?

Dừng từ có sẵn rất nhiều trong bất kỳ ngôn ngữ nào của loài người. Bằng cách xóa những từ này, chúng tôi xóa thông tin cấp thấp khỏi văn bản của mình để tập trung hơn vào thông tin quan trọng .