Zephyrnet-logo

Tekstopschoningsmethoden in NLP

Datum:

Iilding. Welnu, het opschonen van gegevens hangt af van het type gegevens en als de gegevens tekstueel zijn, is het belangrijker om de gegevens op te schonen.

Welnu, er zijn verschillende soorten tekstverwerkingstechnieken die we kunnen toepassen op de tekstgegevens, maar we moeten voorzichtig zijn bij het toepassen en kiezen van de verwerkingsstappen. Hier zijn de stappen voor het verwerken van de tekstuele gegevens afhankelijk van de gebruikssituaties.

Bij sentimentanalyse hoeven we bijvoorbeeld geen emoji's of emoticons uit de tekst te verwijderen omdat ze het sentiment van de tekst overbrengen. In dit artikel zullen we enkele veelvoorkomende methoden en hun code zien om de tekstuele gegevens op te schonen.

Tekst opschonen

Het opschonen van tekst is taakspecifiek en men moet een sterk idee hebben van wat ze willen dat hun eindresultaat is en zelfs de gegevens bekijken om te zien wat ze precies kunnen bereiken.

Neem een ​​paar minuten de tijd en verken de gegevens. Wat valt je op het eerste gezicht op?

Dit is wat een getrainde ik zie:

  • Te veel type- of spelfouten in de tekst
  • Te veel cijfers en leestekens hebben (bijv. Love!!!!)
  • Tekst staat vol met emoji's en emoticons en ook gebruikersnaam en links. (Als de tekst van Twitter of Facebook is)
  • Sommige tekstdelen zijn niet in de Engelse taal. Gegevens hebben een combinatie van meer dan één taal
  • Sommige woorden worden gecombineerd met het koppelteken of gegevens met samentrekkingen. (Bijv. tekstverwerking)
  • Herhalingen van woorden (bijv. gegevens)

Nou, eerlijk gezegd zijn er nog veel meer dingen die een getraind oog kan zien. Maar als we in het algemeen kijken en gewoon een overzicht willen, volg dan het artikel ervoor.

Meest gebruikelijke methoden voor het opschonen van de gegevens

We zullen zien hoe we de tekstuele gegevens coderen en opschonen voor de volgende methoden.

  • De gegevens verkleinen
  • Leestekens verwijderen
  • Nummers verwijderen
  • Extra ruimte verwijderen
  • De herhalingen van interpuncties vervangen
  • Emoji's verwijderen
  • Emoticons verwijderen
  • Weeën verwijderen

De bibliotheek importeren

importeer panda's als pd

Laten we de voorbeeldgegevens lezen

text = "Ik had zulke hoge verwachtingen dat deze jurk maat 15 of (mijn gebruikelijke maat) voor mij zou werken."

print (tekst)

#Uitvoer

Ik had zulke hoge verwachtingen dat deze jurk maat 15 of (mijn gebruikelijke maat) voor mij zou werken.


Onderkast van de gegevens

Vanaf het eerste gezicht maken we de gegevens alleen in kleine letters. Het idee is om de invoertekst om te zetten in hetzelfde hoofdletterformaat zodat 'DATA', 'Data', 'DaTa', 'DATa' wordt omgezet in 'data'.

In sommige gebruiksgevallen, zoals de tokenizer- en vectorisatieprocessen, wordt de onderste behuizing vooraf gedaan. Maar kies juist de kleine letters, want als we een sentimentanalyse van de tekst uitvoeren, kunnen we, als we de tekst in kleine letters maken, soms missen wat het woord eigenlijk aangeeft. Als het woord bijvoorbeeld in hoofdletters staat, verwijst het naar woede enzovoort.

Hier, voor kleine letters van de gegevens, zullen we de methode lower() gebruiken om alle tekst naar één algemeen lager formaat te converteren.

ans = tekst.lager()

ans

#Uitvoer

'Ik had zulke hoge verwachtingen dat deze jurk maat 15 of (mijn gebruikelijke maat) voor mij zou werken.'


Leestekens verwijderen

De tweede meest gebruikte tekstverwerkingstechniek is het verwijderen van leestekens uit de tekstuele gegevens. Het proces voor het verwijderen van interpunctie helpt om elke tekst gelijk te behandelen. Bijvoorbeeld het woord data en data! worden gelijk behandeld na het verwijderen van leestekens.

We moeten voor de tekst zorgen terwijl we de interpunctie verwijderen, omdat de samentrekkingswoorden geen betekenis hebben na het proces van het verwijderen van interpunctie. Zoals 'niet' wordt omgezet in 'niet' of 'niet', afhankelijk van wat u instelt in de parameter.

We moeten ook extra voorzichtig zijn bij het kiezen van de lijst met interpunctietekens die we willen uitsluiten van de gegevens, afhankelijk van de gebruikssituaties. Omdat string.punctuation in python deze symbolen bevat !"#$%&'()*+,-./:;[email protected][\]^_{|}~`

tekenreeks importeren

text = “Ik had zulke hoge verwachtingen! voor deze kledingmaat of (mijn gebruikelijke maat) om voor mij te werken.”

PUNCT_TO_REMOVE = tekenreeks.interpunctie

ans = tekst.translate(str.maketrans(”, ”, PUNCT_TO_REMOVE))

ans

#Uitvoer

#'Ik had zulke hoge verwachtingen dat deze jurk maat 15 of mijn gebruikelijke maat voor mij zou werken'


Nummers verwijderen

Soms bevat nummer geen essentiële informatie in de tekst, afhankelijk van de gebruikssituaties. Je kunt ze dus beter verwijderen dan bewaren.

Als we bijvoorbeeld sentimentanalyse uitvoeren, heeft het nummer geen specifieke betekenis voor de gegevens, maar als het de taak is om NER (Name Entity Recognition) of POS (Part of Speech tagging) uit te voeren, gebruik dan de techniek voor het verwijderen van nummers voorzichtig.

Hier gebruiken we de functie isdigit() om te zien of de gegevens een nummer bevatten of niet, en als we het nummer tegenkomen, vervangen we het nummer door de blanco.

ans = ''.join([i for i in text if not i.isdigit()]) ans #Output 'Ik had zulke hoge verwachtingen dat deze kledingmaat of (mijn gebruikelijke maat) voor mij zou werken.''

Extra ruimte verwijderen

Welnu, het verwijderen van de extra ruimte is goed omdat het geen extra geheugen opslaat en zelfs wij kunnen de gegevens duidelijk zien.

ans = " ".join(text.split()) ans #Output 'Ik had zulke hoge verwachtingen dat deze jurk maat 15 of (mijn gebruikelijke maat) voor mij zou werken.'

De herhalingen van interpunctie vervangen

Kennis van reguliere expressies zal helpen om sneller en gemakkelijker te coderen. Het is erg handig om de herhaling van leestekens te verwijderen omdat het geen essentiële informatie bevat als we meer dan één leesteken in het woord gebruiken, bijvoorbeeld data!!! moeten converteren naar data.

Laten we eerst kijken hoe we de herhalingen van leestekens kunnen vervangen. Hier vervangen we het woord jurk!!!! aankleden en slechts één leesteken vervangen.

text1 = "Ik had zulke... hoge verwachtingen van deze jurk!!!!" ans = re.sub(r'(!)1+', '', text1) ans #Output 'Ik had zulke... hoge verwachtingen van deze jurk'

Wat als de tekst meer dan één leesteken bevat, laten we naar het onderstaande voorbeeld kijken om het te begrijpen.

import re text1 = "Ik had zulke... hoge verwachtingen van deze jurk!!!!" ans = re.sub(r'(!|.)1+', '', text1) ans #Output 'Ik had zulke hoge verwachtingen van deze jurk'

Emoji's verwijderen

Door het groeiende aantal gebruikers van het publiek op de sociale-mediaplatforms, is er een aanzienlijke explosie van het gebruik van emoji's in het dagelijks leven. Welnu, wanneer we tekstanalyse uitvoeren, is het verwijderen van emoji's in sommige gevallen de juiste manier, omdat ze soms geen informatie bevatten.

Hieronder staat de helperfunctie waaruit de emoji's worden vervangen door de blanco.

def remove_emoji(string): emoji_pattern = re.compile("[" u"U0001F600-U0001F64F" # emoticons u"U0001F300-U0001F5FF" # symbolen en pictogrammen u"U0001F680-U0001F6FF" # transport- en kaartsymbolen u"U0001F1F0E0001-"U1F00002702E000027 # flags (iOS) u"U0-U000024B2" u"U0001C251-UXNUMXFXNUMX" "]+", flags=re.UNICODE) return emoji_pattern.sub(r'', string) remove_emoji("game is on 🔥🔥") # Uitgang 'spel is aan'

De code voor het verwijderen van emoji's is afkomstig van: hier

Emoticons verwijderen

Terwijl we de tekstanalyse van Twitter- en Instagram-gegevens doen, vinden we deze emoticon vaak en tegenwoordig is er bijna geen tekst die geen emoticons bevat.

De onderstaande helperfunctie helpt om de emoticons uit de tekst te verwijderen. Het EMOTICONS-woordenboek bestaat uit de symbolen en namen van de emoticons. U kunt de EMOTICONS naar wens aanpassen.

# Emoticons verwijderen

EMOTICA = {

u”:‑)”:”Blij gezicht of smiley”,

u”:)”:”Blij gezicht of smiley”,

u”:-]”:”Blij gezicht of smiley”,

u”:]”:”Blij gezicht of smiley”,

u”:-3″:”Gelukkige smiley”,

u”:3″:”Gelukkige smiley”,

u”:->”:”Gelukkige smiley”,

u”:>”:”Gelukkige smiley”,

u”8-)”:”Gelukkige smiley”,

u”:o)”:”Gelukkige smiley”,

u”:-}”:”Gelukkige smiley”,

u”:}”:”Gelukkige smiley”,

u”:-)”:”Gelukkige smiley”,

u”:c)”:”Gelukkige smiley”,

u”:^)”:”Gelukkige smiley”,

u”=]”:”Gelukkige smiley”

}

text = 'Ik had zulke hoge verwachtingen van deze jurk maat 15, ik wilde echt dat het voor mij zou werken :-)'

ans = re.compile(u'(' + u'|'.join(k voor k in EMOTICONS) + u')')

ans = ans.sub(r”,tekst)

ans

#Uitvoer

#Ik had zulke hoge verwachtingen van deze jurk, maat 15 wilde echt dat het voor mij zou werken


De code voor het verwijderen van emoticons is afkomstig van: hier

Hoewel we de emoticons soms niet willen, verwijderen we ze, maar wat als ik zeg dat er een manier is om het te omzeilen. Laten we eens kijken of we de emoties verwijderen en alternatieve woorden plaatsen, bijvoorbeeld deze ":-)" emoticon verwijderen en vervangen door tekst zoals Happy face smiley of een aangepaste naam die je leuk vindt.

def convert_emoticons(text): voor emot in EMOTICONS: text = re.sub(u'('+emot+')', "_".join(EMOTICONS[emot].replace(",","").split( )), tekst) return text text = "Hallo :-)" convert_emoticons(text) #Output 'Hallo Happy_face_smiley'

De referentie van de code is ontleend aan: hier

Weeën verwijderen

Er zijn zoveel samentrekkingen in de tekst die we typen, dus om ze uit te breiden, zullen we de samentrekkingenbibliotheek gebruiken.

De Twitter- en Instagram-gegevens bevatten zoveel samentrekkingen en als we de leestekens uit die tekst verwijderen, ziet het er zo uit.

Bijvoorbeeld de tekst "Ik eet pizza" en als we de leestekens verwijderen, ziet de tekst er zo uit "Ik zal pizza eten". Hier, "Ik zal" bevat geen informatie over de tekst, daarom gebruiken we de samentrekking.

De bibliotheek importeren

!pip installeer weeën

Laten we eens kijken hoe het gedaan is.

import contractions text = "Ze zou graag willen weten hoe ik dat zou doen!" contractions.fix(text) #Output ze zou graag willen weten hoe ik dat zou doen!

Referentie

Afbeeldingsreferentie op de kop: hier

Over de auteur,

U kunt contact met mij opnemen via een van de onderstaande media: 

LinkedIn | Kaggle | Tableau | Medium | Analytics Vidhya

De in dit artikel getoonde media zijn geen eigendom van Analytics Vidhya en worden naar goeddunken van de auteur gebruikt. 

spot_img

VC Café

VC Café

Laatste intelligentie

spot_img