Zephyrnet-logo

NLP-zelfstudies deel I van basis tot vooruitgang

Datum:

Ik heb besloten een reeks artikelen te schrijven waarin alle basisprincipes van de geavanceerde concepten van NLP met python worden uitgelegd. Dus als je NLP wilt leren door het te lezen en te coderen, dan is dit een perfecte serie artikelen voor jou.

Iedereen die nieuw of nul is in NLP kan bij ons beginnen en deze serie artikelen volgen.

Gebruikte bibliotheken: Keras, Tensorflow, Scikit leren, NLTK, Handschoen, etc.

Alle onderwerpen worden uitgelegd met behulp van codes van python en populaire frameworks voor deep learning en machine learning, zoals sci-kit learn, Keras en TensorFlow.

Wat is NLP?

Natuurlijke taalverwerking is een onderdeel van de informatica waarmee computers taal op een natuurlijke manier kunnen begrijpen, zoals een persoon dat doet. Dit betekent dat de laptop gevoelens, spraak, vragen beantwoorden, tekstsamenvattingen, enz. zal begrijpen. We zullen niet veel praten over de geschiedenis en evolutie ervan. Als je geïnteresseerd bent, geef dan de voorkeur aan dit link.

Stap1 Gegevens opschonen

De onbewerkte tekstgegevens komen direct nadat de verschillende bronnen niet zijn opgeschoond. We passen meerdere stappen toe om gegevens schoon te maken. Niet-opgeschoonde tekstgegevens bevatten nutteloze informatie die afwijkt van de resultaten, dus het is altijd de eerste stap om de gegevens op te schonen. Sommige standaard voorbewerkingstechnieken moeten worden toegepast om gegevens schoner te maken. Opgeschoonde gegevens voorkomen ook dat modellen te veel passen.

In dit artikel zullen we de volgende onderwerpen zien onder tekstverwerking en verkennende data-analyse.

Ik converteer de onbewerkte tekstgegevens naar een panda-dataframe en voer verschillende technieken voor het opschonen van gegevens uit.

import pandas as pd text = ['Dit is het NLP TAKEN ARTIKEL geschreven door ABhishek Jaiswal**','IN dit artikel zal ik verschillende DATA-CLEANING technieken uitleggen', 'Dus stay tuned for FURther More &&','Nah Ik denk niet dat hij naar usf gaat, hij woont in de buurt'] df = pd.DataFrame({'text':text})

Output:

Gegevens opschonen | NLP-zelfstudies
                                                                                  Bron: Lokaal

Lagere behuizing

Werkwijze lower()converteert alle hoofdletters naar kleine letters en geeft terug.

Het toepassen van lower() methode met behulp van de lambda-functie

df['lower'] = df['text'].apply(lambda x: " ".join(x.lower() for x in x.split()))
Kleine letters | NLP-zelfstudies
                                                                                           Bron: Lokaal

Interpunctie verwijderen 

Leestekens verwijderen(*,&,%#@#()) is een cruciale stap omdat interpunctie geen extra informatie of waarde toevoegt aan onze gegevens. Daarom verkleint het verwijderen van interpunctie de gegevensgrootte; daarom verbetert het de rekenefficiëntie.

Deze stap kan worden uitgevoerd met behulp van de Regex- of Replace-methode.

Interpunctie verwijderen
                                                                                                 Bron: Lokaal

string.punctuation geeft een string terug die alle leestekens bevat.

Interpunctie | NLP-zelfstudies
                                                                                               Bron: Lokaal

Leestekens verwijderen met normale uitdrukkingen:

Leestekens verwijderen
                                                                                                 Bron: Lokaal

Stop met het verwijderen van woorden

Woorden die vaak in zinnen voorkomen en geen significante betekenis hebben in zinnen. Deze zijn niet belangrijk voor voorspellingen, dus we verwijderen stopwoorden om de gegevensomvang te verkleinen en overfitting te voorkomen. Opmerking: Voordat u stopwoorden filtert, moet u ervoor zorgen dat u de gegevens in kleine letters gebruikt, aangezien onze stopwoorden kleine letters zijn.

Met behulp van de NLTK-bibliotheek kunnen we onze stopwoorden uit de dataset filteren.

# !pip install nltk import nltk nltk.download('stopwords') from nltk.corpus import stopwords allstopwords = stopwords.words('english') df.lower.apply(lambda x: " ".join(i for i in x .split() als ik niet in allstopwords))
Stop woorden verwijderen
                                                                                          Bron: Lokaal

Spellingscorrectie

De meeste tekstgegevens die worden geëxtraheerd in klantrecensies, blogs of tweets hebben enige kans op spelfouten.

Het corrigeren van spelfouten verbetert de nauwkeurigheid van het model.

Er zijn verschillende bibliotheken om spelfouten op te lossen, maar de handigste methode is om een ​​tekst-blob te gebruiken.

Werkwijze correct() werkt op tekstblob-objecten en corrigeert de spelfouten.

#Installeer textblob-bibliotheek !pip installeer textblob van textblob import TextBlob
Spellingscorrectie
                                                                        Bron: Lokaal

tokenization

Tokenisatie betekent het splitsen van tekst in betekenisvolle eenheidswoorden. Er zijn zowel zin-tokenizers als woord-tokenizers.

Zin-tokenizer splitst een alinea op in zinvolle zinnen, terwijl woord-tokenizer een zin opsplitst in betekenisvolle woorden. Veel bibliotheken kunnen tokenisatie uitvoeren, zoals SpaCy, NLTK en TextBlob.

Het splitsen van een zin op de spatie om individuele eenheidswoorden te krijgen, kan worden opgevat als tokenisatie.

import nltk mystring = "Mijn favoriete dier is een kat" nltk.word_tokenize(mystring)
mijnstring.split(" ")

output:

['Mijn', 'favoriet', 'dier', 'is', 'kat']

stammend

Stemming is het omzetten van woorden in hun stamwoord met behulp van een aantal regels, ongeacht de betekenis. D.w.z,

  • "vissen", "vissen" en "vissen" worden samengevoegd tot "vissen".
  • 'spelen', 'gespeeld', 'spelen' worden samengevoegd tot 'spelen'.
  • Stemming helpt om de woordenschat te verminderen en zo de nauwkeurigheid te verbeteren.

De eenvoudigste manier om stammen uit te voeren, is door NLTK of een TextBlob-bibliotheek te gebruiken.

NLTK biedt verschillende stamtechnieken, oa Snowball, PorterStemmer; verschillende technieken volgen verschillende sets regels om woorden om te zetten in hun basiswoord.

import nltk van nltk.stem import PorterStemmer st = PorterStemmer() df['text'].apply(lambda x:" ".join([st.stem(woord) voor woord in x.split()]))
stammend
Bron: lokaal

"artikel" is afgeleid van "articl","lives“ — -> “live'.

Lemmatisering

Lemmatisering is het omzetten van woorden in hun stamwoord met behulp van vocabulaire-mapping. Lemmatisering wordt gedaan met behulp van woordsoort en de betekenis ervan; daarom genereert het geen betekenisloze basiswoorden. Maar lemmatiseren gaat langzamer dan stammen.

  • "goed, ""beter, "Of"beste” wordt gelemmatiseerd in “goed'.
  • Lemmatisering zet alle synoniemen om in één stamwoord. dwz "auto","auto"" truck"" voertuigen’ worden gelemmatiseerd tot ‘automobiel’.
  • Lemmatisering levert meestal betere resultaten op.

D.w.z. leafs Gestemd op. bladeren kwamen voort uit leav en leafs , leaves gelemmatiseerd tot leaf

Lemmatisatie kan worden gedaan met behulp van NLTK, TextBlob-bibliotheek.

lemmatisering
                                                                                                 Bron: lokaal

Lemmatiseer de hele dataset.

Lemmatisering 2 | NLP-zelfstudies
                                                                                                   Bron: lokaal

Stap 2 Verkennende gegevensanalyse

Tot nu toe hebben we de verschillende tekstvoorbewerkingstechnieken gezien die moeten worden uitgevoerd na het verkrijgen van de onbewerkte gegevens. Nadat we onze gegevens hebben opgeschoond, kunnen we nu verkennende gegevensanalyses uitvoeren en de tekstgegevens verkennen en begrijpen.

Woordfrequentie in gegevens

Door de unieke woorden in onze gegevens te tellen, krijgt u een idee van de meest voorkomende en minst voorkomende termen in onze gegevens. Vaak laten we de minst frequente opmerkingen achterwege om onze modeltraining algemener te maken.

nltk biedt Freq_dist class om de woordfrequentie te berekenen, en er is een zak woorden voor nodig.

all_words = [] voor zin in df['processed']: all_words.extend(sentence.split())

all_words Bevat alle woorden die beschikbaar zijn in onze dataset. We noemen het vaak woordenschat.

import nltk nltk.Freq_dist(alle_woorden)
Woordfrequentie in gegevens
                                                                                                 Bron: Lokaal

Dit toont het woord als sleutel en het aantal keren dat in onze gegevens voorkomt als waarde.

Word Cloud

Wordcloud is de picturale weergave van de woordfrequentie van de dataset. WordCloud is gemakkelijker te begrijpen en geeft een beter idee van onze tekstuele gegevens.

De bibliotheek wordcloud Laten we een woordwolk maken in een paar regels code.

bibliotheken importeren:

uit wordcloud import WordCloud uit wordcloud import STOPWORDS import matplotlib.pyplot als plt

We kunnen een woordwolk tekenen met tekst die alle woorden van onze gegevens bevat.

woorden = [] voor bericht in df['verwerkt']: woorden.extend([woord voor woord in bericht.split() als woord niet in STOPWORDS]) wordcloud = WordCloud(breedte = 1000, hoogte = 500).generate( " ".join(woorden)) plt.imshow(wordcloud, interpolation='bilineair') plt.axis("uit") plt.show()
Woordwolk | NLP-zelfstudies
                                                             Bron: Lokaal
  • background_color = 'white' met deze parameter kunnen we de achtergrondkleur van de woordwolk wijzigen.
  • collocations = False Als u het op False houdt, worden de collocatiewoorden genegeerd. Collocaties zijn die woorden die worden gevormd door die woorden die samen voorkomen. Dwz opletten, huiswerk maken, etc.
  • We kunnen de hoogte en breedte aanpassen met behulp van de parameters.

Note : Voordat u de woordwolk maakt, moet u altijd de stopwoorden verwijderen.

Eindopmerkingen

In dit artikel hebben we verschillende noodzakelijke technieken gezien voor het voorbewerken van tekstuele gegevens. Na het opschonen van de gegevens hebben we verkennende gegevensanalyse uitgevoerd met behulp van woordwolk en een woordfrequentie gemaakt.

In het tweede artikel van deze serie zullen we de volgende onderwerpen leren:

Bron: https://www.analyticsvidhya.com/blog/2022/01/nlp-tutorials-part-i-from-basics-to-advance/

spot_img

Laatste intelligentie

spot_img