Tokeniseer tekst met NLTK in Python

Teksttokenisatie is een fundamentele Natural Language Processing (NLP)-techniek en een van die technieken is Tokenisatie.  Het is het proces waarbij tekst in kleinere componenten of tokens wordt verdeeld. Dit kunnen zijn:

  • Woorden: Ik hou van NLP → ['Ik' 'hou van' 'NLP']
  • Zinnen: Ik hou van NLP. Python is geweldig. → ['Ik hou van NLP.' 'Python is geweldig.']

Met de populaire bibliotheek van Python  NLTK (Natural Language Toolkit) wordt het opsplitsen van tekst in betekenisvolle eenheden zowel eenvoudig als uiterst effectief.

Basisimplementatie

Laten we eens kijken naar de implementatie van tokenisatie met behulp van NLTK in Python

Stap 1: Installeren en instellen

Installeer de punt tokenizer-modellen die nodig zijn voor tokenisatie van zinnen en woorden.

Python
   !  pip   install   nltk   import   nltk   nltk  .  download  (  'punkt'  )   

Stap 2: Zinnen tokeniseren

sent_tokenize() splitst een tekenreeks op in een lijst met zinnen waarin interpunctie en afkortingen worden verwerkt.

Python
   from   nltk.tokenize   import   sent_tokenize   text   =   'NLTK is a great NLP toolkit. It makes processing text easy!'   sentences   =   sent_tokenize  (  text  )   print  (  sentences  )   

Uitgang:

['NLTK is een geweldige NLP-toolkit.' 'Het maakt het verwerken van tekst gemakkelijk!']

Stap 3: Tokeniseer woorden

  • word_tokenize() splitst een zin op in woorden en leestekens als afzonderlijke tokens.
  • Verwerkt samentrekkingen, leestekens en meer.
Python
   from   nltk.tokenize   import   word_tokenize   sentence   =   'Tokenization is easy with NLTK's word_tokenize.'   words   =   word_tokenize  (  sentence  )   print  (  words  )   

Uitgang:

['Tokenisatie' 'is' 'gemakkelijk' 'met' 'NLTK' ''s' 'word_tokenize' '.']

Laten we nog wat voorbeelden bekijken

1. WordPunctTokenizer

Het Splitst tekst op in alfabetische en niet-alfabetische tekens

  • Scheidt alle reeksen woordtekens en leestekens in tokens.
  • Splitst vooral weeën (wordt niet Don't).
  • Splitst e-mails op in e-mails.
Python
   from   nltk.tokenize   import   WordPunctTokenizer   tokenizer   =   WordPunctTokenizer  ()   tokens   =   tokenizer  .  tokenize  (   'Don't split contractions. E-mails: [email protected]!'  )   print  (  tokens  )   

Uitgang:

['Don' ''' 't' 'splitsen' 'weeën' '.' 'E' '-' 'mails' ':' 'hallo' '@' 'voorbeeld' '.' 'com' '!']

2. TreebankWordTokenizer

Het is geschikt voor taalkundige analyse van interpunctie en samentrekkingen.

  • Bootst tokenisatie in Penn Treebank-stijl na, die vaak wordt gebruikt voor NLP-taalanalyse.
  • Gaat intelligenter om met bepaalde Engelse grammaticale structuren.
Python
   from   nltk.tokenize   import   TreebankWordTokenizer   tokenizer   =   TreebankWordTokenizer  ()   tokens   =   tokenizer  .  tokenize  (  'Have a look at NLTK's tokenizers.'  )   print  (  tokens  )   

Uitgang:

['Neem' 'een' 'kijkje' 'naar' 'NLTK' ''s' 'tokenizers' '.']

3. Regex-tokenizer

Het past patroongebaseerde splitsing aan.

  • Tokeniseert op basis van een reguliere-expressiepatroon.
  • w+ komt overeen met woorden en cijfers waarbij de interpunctie volledig wordt weggelaten.
Python
   from   nltk.tokenize   import   RegexpTokenizer   tokenizer   =   RegexpTokenizer  (  r  'w+'  )   tokens   =   tokenizer  .  tokenize  (   'Custom rule: keep only words & numbers drop punctuation!'  )   print  (  tokens  )   

Uitgang:

['Aangepast' 'regel' 'behouden' 'alleen' 'woorden' 'cijfers' 'laten vallen' 'interpunctie']

NLTK biedt een nuttige en gebruiksvriendelijke toolkit voor het tokeniseren van tekst in Python en ondersteunt een reeks tokenisatiebehoeften, van het standaard splitsen van woorden en zinnen tot geavanceerde aangepaste patronen.

Quiz maken