Mã hóa tệp Python

Bạn có bị mê hoặc bởi lượng dữ liệu văn bản có sẵn trên internet không? . Và đó có thể là một bối cảnh phức tạp để điều hướng trong học máy

Vậy làm thế nào chúng ta có thể thao tác và làm sạch dữ liệu văn bản này để xây dựng một mô hình?

Giải quyết vấn đề NLP là một quá trình gồm nhiều giai đoạn. Trước tiên, chúng ta cần làm sạch dữ liệu văn bản phi cấu trúc trước khi có thể nghĩ đến việc chuyển sang giai đoạn lập mô hình. Làm sạch dữ liệu bao gồm một số bước chính

  • Mã thông báo từ
  • Dự đoán các phần của bài phát biểu cho mỗi mã thông báo
  • bổ đề văn bản
  • Xác định và loại bỏ các từ dừng, v.v.

Trong bài viết này, chúng ta sẽ nói về bước đầu tiên – token hóa. Trước tiên, chúng ta sẽ xem mã thông báo là gì và tại sao nó lại cần thiết trong NLP. Sau đó, chúng tôi sẽ xem xét sáu cách duy nhất để thực hiện mã thông báo trong Python

Bài viết này không có điều kiện tiên quyết. Bất kỳ ai quan tâm đến NLP hoặc khoa học dữ liệu đều có thể theo dõi. Nếu bạn đang tìm kiếm một nguồn tài nguyên đầu cuối để học NLP, bạn nên xem khóa học toàn diện của chúng tôi

Mục lục

  • Tokenization trong NLP là gì?
  • Tại sao cần có mã thông báo?
  • Các phương pháp khác nhau để thực hiện mã thông báo trong Python
    • Mã thông báo bằng cách sử dụng Python split() Hàm
    • Mã thông báo bằng cách sử dụng Biểu thức chính quy
    • Token hóa bằng NLTK
    • Token hóa bằng Spacy
    • Token hóa bằng Keras
    • Token hóa bằng Gensim

Tokenization trong NLP là gì?

Tokenization là một trong những nhiệm vụ phổ biến nhất khi làm việc với dữ liệu văn bản. Nhưng thuật ngữ 'tokenization' thực sự có nghĩa là gì?

Tokenization về cơ bản là chia một cụm từ, câu, đoạn văn hoặc toàn bộ tài liệu văn bản thành các đơn vị nhỏ hơn, chẳng hạn như các từ hoặc thuật ngữ riêng lẻ. Mỗi đơn vị nhỏ hơn này được gọi là mã thông báo

Kiểm tra hình ảnh dưới đây để hình dung định nghĩa này

Các mã thông báo có thể là từ, số hoặc dấu chấm câu. Trong mã thông báo, các đơn vị nhỏ hơn được tạo bằng cách định vị các ranh giới từ. Đợi đã - ranh giới từ là gì?

Đây là điểm kết thúc của một từ và bắt đầu của từ tiếp theo. Những mã thông báo này được coi là bước đầu tiên để tạo gốc và từ vựng (giai đoạn tiếp theo trong quá trình tiền xử lý văn bản mà chúng tôi sẽ đề cập trong bài viết tiếp theo)

Khó? . Thế kỷ 21 khiến việc học tập và tiếp cận tri thức trở nên dễ dàng. Bất kỳ Khóa học xử lý ngôn ngữ tự nhiên nào cũng có thể được sử dụng để học chúng một cách dễ dàng

Tại sao Mã thông báo được yêu cầu trong NLP?

Tôi muốn bạn nghĩ về ngôn ngữ tiếng Anh ở đây. Chọn bất kỳ câu nào bạn có thể nghĩ ra và giữ nó trong đầu khi bạn đọc phần này. Điều này sẽ giúp bạn hiểu tầm quan trọng của mã thông báo theo cách dễ dàng hơn nhiều

Trước khi xử lý một ngôn ngữ tự nhiên, chúng ta cần xác định các từ cấu thành một chuỗi ký tự. Đó là lý do tại sao token hóa là bước cơ bản nhất để tiến hành với NLP (dữ liệu văn bản). Điều này rất quan trọng vì ý nghĩa của văn bản có thể dễ dàng được giải thích bằng cách phân tích các từ có trong văn bản

Hãy lấy một ví dụ. Hãy xem xét chuỗi dưới đây

“Đây là một con mèo. ”

Bạn nghĩ điều gì sẽ xảy ra sau khi chúng tôi thực hiện mã thông báo trên chuỗi này?

Có rất nhiều cách sử dụng để làm điều này. Chúng tôi có thể sử dụng biểu mẫu được mã hóa này để

  • Đếm số từ trong văn bản
  • Đếm tần số xuất hiện của từ, tức là số lần xuất hiện của một từ cụ thể

Và như thế. Chúng tôi có thể trích xuất nhiều thông tin hơn mà chúng tôi sẽ thảo luận chi tiết trong các bài viết trong tương lai. Hiện tại, đã đến lúc đi sâu vào nội dung chính của bài viết này – các phương pháp thực hiện mã thông báo khác nhau trong NLP

Các phương pháp để thực hiện mã thông báo bằng Python

Chúng tôi sẽ xem xét sáu cách độc đáo để chúng tôi có thể thực hiện mã thông báo trên dữ liệu văn bản. Tôi đã cung cấp mã Python cho từng phương pháp để bạn có thể làm theo trên máy của mình

1. Token hóa bằng hàm split() của Python

Hãy bắt đầu với phương thức split() vì nó là phương thức cơ bản nhất. Nó trả về một danh sách các chuỗi sau khi ngắt chuỗi đã cho bằng dấu phân cách đã chỉ định. Theo mặc định, split() ngắt chuỗi ở mỗi khoảng trắng. Chúng ta có thể thay đổi dấu phân cách thành bất cứ thứ gì. Hãy cùng kiểm tra nào

Mã thông báo từ

Output : ['Founded', 'in', '2002,', 'SpaceX’s', 'mission', 'is', 'to', 'enable', 'humans', 
          'to', 'become', 'a', 'spacefaring', 'civilization', 'and', 'a', 'multi-planet', 
          'species', 'by', 'building', 'a', 'self-sustaining', 'city', 'on', 'Mars.', 'In', 
          '2008,', 'SpaceX’s', 'Falcon', '1', 'became', 'the', 'first', 'privately', 
          'developed', 'liquid-fuel', 'launch', 'vehicle', 'to', 'orbit', 'the', 'Earth.']

Mã thông báo câu

Điều này tương tự như mã thông báo từ. Sau đây, chúng ta nghiên cứu cấu tạo câu trong bài phân tích. Một câu thường kết thúc bằng dấu chấm (. ), vì vậy chúng ta có thể sử dụng “. ” làm dấu phân cách để ngắt chuỗi

Output : ['Founded in 2002, SpaceX’s mission is to enable humans to become a spacefaring 
           civilization and a multi-planet \nspecies by building a self-sustaining city on 
           Mars', 
          'In 2008, SpaceX’s Falcon 1 became the first privately developed \nliquid-fuel 
           launch vehicle to orbit the Earth.']

Một nhược điểm lớn của việc sử dụng phương thức split() của Python là chúng ta chỉ có thể sử dụng một dấu tách tại một thời điểm. Một điều khác cần lưu ý - trong mã thông báo từ, split() không coi dấu chấm câu là mã thông báo riêng

2. Token hóa bằng Biểu thức chính quy (RegEx)

Đầu tiên, hãy hiểu biểu thức chính quy là gì. Về cơ bản, nó là một chuỗi ký tự đặc biệt giúp bạn khớp hoặc tìm các chuỗi hoặc bộ chuỗi khác bằng cách sử dụng chuỗi đó làm mẫu

Chúng ta có thể sử dụng thư viện re trong Python để làm việc với biểu thức chính quy. Thư viện này được cài đặt sẵn trong gói cài đặt Python

Bây giờ, hãy thực hiện mã hóa từ và mã hóa câu theo RegEx

Mã thông báo từ

Mã Python

Ở đó. Hàm findall() tìm tất cả các từ khớp với mẫu được truyền vào nó và lưu nó vào danh sách

Output : ['Founded in 2002, SpaceX’s mission is to enable humans to become a spacefaring 
           civilization and a multi-planet \nspecies by building a self-sustaining city on 
           Mars', 
          'In 2008, SpaceX’s Falcon 1 became the first privately developed \nliquid-fuel 
           launch vehicle to orbit the Earth.']
4” đại diện cho “bất kỳ ký tự từ nào” thường có nghĩa là chữ và số (chữ cái, số) và dấu gạch dưới (_). '+' có nghĩa là bất kỳ số lần nào. Vì vậy, [\w’]+ báo hiệu rằng mã sẽ tìm thấy tất cả các ký tự chữ và số cho đến khi gặp bất kỳ ký tự nào khác

Để thực hiện mã thông báo câu, chúng ta có thể sử dụng lại. chức năng tách (). Điều này sẽ chia văn bản thành các câu bằng cách chuyển một mẫu vào đó

Output : ['Founded in 2002, SpaceX’s mission is to enable humans to become a spacefaring 
           civilization and a multi-planet \nspecies by building a self-sustaining city on 
           Mars.', 
          'In 2008, SpaceX’s Falcon 1 became the first privately developed \nliquid-fuel 
           launch vehicle to orbit the Earth.']

Ở đây, chúng ta có lợi thế hơn so với phương thức split() vì chúng ta có thể chuyển nhiều dấu phân cách cùng một lúc. Trong đoạn mã trên, chúng tôi đã sử dụng lại. compile() trong đó chúng tôi đã thông qua [. ?. ]. Điều này có nghĩa là các câu sẽ tách ra ngay khi gặp bất kỳ ký tự nào trong số này

Quan tâm đến việc đọc thêm về RegEx?

3. Token hóa bằng NLTK

Bây giờ, đây là một thư viện mà bạn sẽ đánh giá cao khi làm việc nhiều hơn với dữ liệu văn bản. NLTK, viết tắt của Natural Language ToolKit, là một thư viện được viết bằng Python để xử lý ngôn ngữ tự nhiên tượng trưng và thống kê

Bạn có thể cài đặt NLTK bằng mã bên dưới

pip install --user -U nltk

NLTK chứa một mô-đun có tên tokenize() phân loại thành hai danh mục phụ

  • Mã thông báo từ. Chúng tôi sử dụng phương thức word_tokenize() để chia một câu thành các mã thông báo hoặc từ
  • mã hóa câu. Chúng tôi sử dụng phương thức send_tokenize() để chia tài liệu hoặc đoạn văn thành các câu

Hãy xem từng cái một

Mã thông báo từ

Output: ['Founded', 'in', '2002', ',', 'SpaceX', '’', 's', 'mission', 'is', 'to', 'enable', 
         'humans', 'to', 'become', 'a', 'spacefaring', 'civilization', 'and', 'a', 
         'multi-planet', 'species', 'by', 'building', 'a', 'self-sustaining', 'city', 'on', 
         'Mars', '.', 'In', '2008', ',', 'SpaceX', '’', 's', 'Falcon', '1', 'became', 
         'the', 'first', 'privately', 'developed', 'liquid-fuel', 'launch', 'vehicle', 
         'to', 'orbit', 'the', 'Earth', '.']

Lưu ý cách NLTK coi dấu câu là một mã thông báo?

Mã thông báo câu

Output: ['Founded in 2002, SpaceX’s mission is to enable humans to become a spacefaring 
          civilization and a multi-planet \nspecies by building a self-sustaining city on 
          Mars.', 
         'In 2008, SpaceX’s Falcon 1 became the first privately developed \nliquid-fuel 
          launch vehicle to orbit the Earth.']

4. Token hóa bằng thư viện spaCy

Tôi yêu thư viện spaCy. Tôi không thể nhớ lần cuối cùng tôi không sử dụng nó khi tôi đang thực hiện một dự án NLP. Nó chỉ là hữu ích

spaCy là một thư viện nguồn mở dành cho Xử lý ngôn ngữ tự nhiên (NLP) nâng cao. Nó hỗ trợ hơn 49 ngôn ngữ và cung cấp tốc độ tính toán hiện đại

Để cài đặt Spacy trong Linux

pip install -U spacy
python -m spacy download en

Để cài đặt nó trên các hệ điều hành khác, hãy đi qua liên kết này

Vì vậy, hãy xem cách chúng ta có thể sử dụng sự tuyệt vời của spaCy để thực hiện mã thông báo. Chúng tôi sẽ sử dụng spacy. lang thang. en hỗ trợ ngôn ngữ tiếng Anh

Mã thông báo từ

________số 8_______

Mã thông báo câu

Output : ['Founded in 2002, SpaceX’s mission is to enable humans to become a spacefaring 
           civilization and a multi-planet \nspecies by building a self-sustaining city on 
           Mars.', 
          'In 2008, SpaceX’s Falcon 1 became the first privately developed \nliquid-fuel 
           launch vehicle to orbit the Earth.']

spaCy khá nhanh so với các thư viện khác khi thực hiện các tác vụ NLP (vâng, thậm chí cả NLTK). Tôi khuyến khích bạn nghe podcast DataHack Radio dưới đây để biết câu chuyện đằng sau cách spaCy được tạo ra và nơi bạn có thể sử dụng nó

Và đây là hướng dẫn chuyên sâu để giúp bạn bắt đầu với spaCy

5. Token hóa bằng Keras

máy ảnh. Một trong những framework deep learning hot nhất trong ngành hiện nay. Nó là một thư viện mạng thần kinh mã nguồn mở cho Python. Keras siêu dễ sử dụng và cũng có thể chạy trên TensorFlow

Trong ngữ cảnh NLP, chúng tôi có thể sử dụng Keras để xóa dữ liệu văn bản phi cấu trúc mà chúng tôi thường thu thập

Bạn có thể cài đặt Keras trên máy của mình chỉ bằng một dòng mã

pip install Keras

Chúng ta hãy nứt. Để thực hiện mã thông báo từ bằng Keras, chúng tôi sử dụng phương thức text_to_word_sequence từ máy ảnh. sơ chế. lớp văn bản

Hãy xem Keras hoạt động

Mã thông báo từ

Output : ['Founded in 2002, SpaceX’s mission is to enable humans to become a spacefaring 
           civilization and a multi-planet \nspecies by building a self-sustaining city on 
           Mars', 
          'In 2008, SpaceX’s Falcon 1 became the first privately developed \nliquid-fuel 
           launch vehicle to orbit the Earth.']
0

Keras hạ thấp trường hợp của tất cả các bảng chữ cái trước khi mã hóa chúng. Điều đó giúp chúng tôi tiết kiệm khá nhiều thời gian như bạn có thể tưởng tượng

6. Token hóa bằng Gensim

Phương pháp mã thông báo cuối cùng mà chúng tôi sẽ trình bày ở đây là sử dụng thư viện Gensim. Nó là một thư viện nguồn mở để lập mô hình chủ đề không giám sát và xử lý ngôn ngữ tự nhiên và được thiết kế để tự động trích xuất các chủ đề ngữ nghĩa từ một tài liệu nhất định

Đây là cách bạn có thể cài đặt Gensim

Output : ['Founded in 2002, SpaceX’s mission is to enable humans to become a spacefaring 
           civilization and a multi-planet \nspecies by building a self-sustaining city on 
           Mars', 
          'In 2008, SpaceX’s Falcon 1 became the first privately developed \nliquid-fuel 
           launch vehicle to orbit the Earth.']
1

Chúng ta có thể sử dụng gensim. utils để nhập phương thức tokenize để thực hiện mã hóa từ

Mã thông báo từ

Output : ['Founded in 2002, SpaceX’s mission is to enable humans to become a spacefaring 
           civilization and a multi-planet \nspecies by building a self-sustaining city on 
           Mars', 
          'In 2008, SpaceX’s Falcon 1 became the first privately developed \nliquid-fuel 
           launch vehicle to orbit the Earth.']
2

Mã thông báo câu

Để thực hiện mã hóa câu, chúng tôi sử dụng phương thức split_sentences từ gensim. tóm tắt. lớp văn bản

Output : ['Founded in 2002, SpaceX’s mission is to enable humans to become a spacefaring 
           civilization and a multi-planet \nspecies by building a self-sustaining city on 
           Mars', 
          'In 2008, SpaceX’s Falcon 1 became the first privately developed \nliquid-fuel 
           launch vehicle to orbit the Earth.']
3

Bạn có thể nhận thấy rằng Gensim khá nghiêm khắc với dấu câu. Nó tách ra bất cứ khi nào gặp dấu chấm câu. Trong việc tách câu cũng vậy, Gensim đã mã hóa văn bản khi gặp “\n” trong khi các thư viện khác bỏ qua nó

Ghi chú kết thúc

Mã thông báo là một bước quan trọng trong quy trình NLP tổng thể. Chúng ta không thể đơn giản nhảy vào phần xây dựng mô hình mà không làm sạch văn bản trước

Trong bài viết này, chúng ta đã thấy sáu phương pháp mã hóa khác nhau (từ cũng như câu) từ một văn bản nhất định. Cũng có nhiều cách khác nhưng những cách này đủ tốt để giúp bạn bắt đầu với chủ đề này

Tôi sẽ đề cập đến các bước làm sạch văn bản khác như xóa từ dừng, gắn thẻ một phần của bài phát biểu và nhận dạng các thực thể được đặt tên trong các bài đăng trong tương lai của tôi. Cho đến lúc đó, hãy tiếp tục học hỏi

Tokenization của một tập tin là gì?

Mã hóa là quá trình thay thế các phần tử dữ liệu nhạy cảm thực tế bằng các phần tử dữ liệu không nhạy cảm không có giá trị khai thác cho mục đích bảo mật dữ liệu .

Sự khác biệt giữa tokenize và tách Python là gì?

tokenize() , trả về một danh sách, sẽ bỏ qua chuỗi rỗng (khi dấu phân cách xuất hiện hai lần liên tiếp) trong khi split() giữ nguyên chuỗi đó. split() có thể lấy regex làm dấu phân cách trong khi tokenize thì không

Mục đích của chức năng Tokenize là gì?

Fn. chức năng tokenize ngắt một chuỗi thành một chuỗi các chuỗi con .