Deze tutorial is een gewaardeerde bijdrage uit onze community en is door DataCamp bewerkt voor duidelijkheid en nauwkeurigheid.
Wil je je eigen expertise delen? We horen graag van je! Dien je artikelen of ideeën in via ons Community Contribution Form.
Als data practitioner ben je je vast bewust van het belang van een robuuste pijplijn voor het opschonen en voorbereiden van data in elk machinelearningproject. Bij tekstuele data is zo’n pijplijn echter nog crucialer, door de unieke uitdagingen die tekst met zich meebrengt. Ruis, spelfouten, afkortingen, slang en grammaticale fouten kunnen allemaal de prestaties van machinelearningmodellen negatief beïnvloeden.
Om te zorgen dat de tekstdata die in machinelearningmodellen wordt gebruikt accuraat, consistent en vrij van fouten is, is een goed ontworpen pijplijn voor opschonen en voorbereiding essentieel. Dit omvat doorgaans een reeks taken zoals tekstnormalisatie, tokenization, het verwijderen van stopwoorden, stemming, lemmatisering en datamasking.
Hoewel populaire bibliotheken zoals NLTK, gensim en spaCy een breed scala aan tools bieden voor tekstverwerking en -opschoning, kan het werken met tekstdata nog steeds unieke uitdagingen opleveren die de prestaties van modellen aanzienlijk kunnen beïnvloeden. Deze uitdagingen variëren van tekens normaliseren tot datamasking en meer. Hoewel je deze issues met bovengenoemde bibliotheken kunt aanpakken, kost dat vaak veel tijd en moeite.
Daar komt Textacy om de hoek kijken. Textacy is een Python-bibliotheek die een eenvoudige manier biedt om een reeks veelvoorkomende problemen bij tekstdata aan te pakken. Terwijl andere bibliotheken vergelijkbare functionaliteit bieden, onderscheidt Textacy zich door de focus op specifieke problemen, zoals tekens normaliseren en datamasking.
Textacy: tekens normaliseren
Tekens normaliseren is het proces waarbij tekstdata naar een standaardformaat wordt omgezet, wat vooral belangrijk kan zijn bij meertalige tekstdata.
Text = ‘ the cafe “Saint-Raphaël” is loca-/nted on Cote d’Azur.’
Geaccentueerde tekens zijn een veelvoorkomend probleem bij tekstnormalisatie en kunnen de nauwkeurigheid van machinelearningmodellen aanzienlijk beïnvloeden.
Het probleem ontstaat omdat mensen niet consequent geaccentueerde tekens gebruiken, wat tot inconsistenties in de data kan leiden.
Zo kunnen de tokens "Saint-Raphaël" en "Saint-Raphael" naar dezelfde entiteit verwijzen, maar zonder normalisatie worden ze niet als identiek herkend. Daarnaast bevatten teksten vaak woorden die met een koppelteken zijn gescheiden, en apostrofs zoals in de bovenstaande tekst kunnen een probleem zijn voor tokenization. Voor al deze issues is het zinvol om de tekst te normaliseren en accenten en speciale tekens te vervangen door ASCII-equivalenten.
We gebruiken hiervoor Textacy, omdat het een mooie collectie vooraf gedefinieerde functies heeft om dit probleem eenvoudig en efficiënt op te lossen. De onderstaande tabel toont een selectie van de preprocess-functies van Textacy die onafhankelijk van andere bibliotheken kunnen werken.
|
Functie |
Beschrijving |
|---|---|
|
normalize _hyphentated_words |
Stelt woorden opnieuw samen die door een regeleinde waren gescheiden |
|
normalize_quotation_marks |
Vervangt allerlei typografische aanhalingstekens door een ASCII-equivalent |
|
normalize_unicode |
Uniformeert verschillende coderingen van geaccentueerde tekens in Unicode |
|
remove_accents |
Vervangt geaccentueerde tekens door ASCII |
|
replace_emails |
Vervangt e-mails door __EMAIL__ |
|
replace_urls |
Vervangt urls door __URL__ |
text = "The café "Saint-Raphaël" is loca-\nted on Cote dʼAzur."
import textacy
import textacy.preprocessing as tprep
def normalize(text):
text = tprep.normalize_hyphenated_words(text)
text = tprep.normalize_quotation_marks(text)
text = tprep.normalize_unicode(text)
text = tprep.remove_accents(text)
return text
Met de bovenstaande functie normalize, die is gebaseerd op de vooraf gedefinieerde Textacy-preprocessfuncties, pakken we het normalisatieprobleem aan met minimale inspanning.
print(normalize(text)
Uitvoer:
The cafe Saint-Raphael is located in Cote d' Azure
Textacy: datamasking
Tekstdata bevat vaak niet alleen gewone woorden, maar ook allerlei identifiers, zoals URL’s, e-mailadressen of telefoonnummers. Soms zijn we juist in die items geïnteresseerd. In veel gevallen is het echter beter om deze informatie te verwijderen of te maskeren, omdat die niet relevant is of om privacyredenen.
Textacy heeft handige replace-functies voor datamasking, zoals getoond in de bovenstaande tabel. Deze vervangfuncties zijn vooraf gedefinieerd, waardoor je eenvoudig gevoelige of irrelevante informatie kunt maskeren zonder eigen reguliere-expressiefuncties te hoeven schrijven.
text = "Check out https://spacy.io/usage/spacy-101"print(replace_urls(text))
Uitvoer:
Check out __URL__
Samenvatting
In dit artikel lieten we zien hoe je Textacy kunt gebruiken om het voorbewerken van tekstdata te vereenvoudigen. Met het scala aan ingebouwde functies maakt Textacy het eenvoudig om veelvoorkomende uitdagingen aan te pakken, zoals tekens normaliseren en datamasking.
Door het voorbewerkingsproces te stroomlijnen, maakt Textacy de weg vrij om te focussen op de complexere en uitdagendere aspecten van natural language processing. Of je nu werkt aan sentimentanalyse, topic modeling of een andere NLP-taak, met Textacy maak je je data snel en efficiënt klaar voor analyse.
Sta je de volgende keer voor een voorbewerkingsuitdaging, overweeg dan Textacy om je workflow te vereenvoudigen en jezelf kostbare tijd en moeite te besparen.
Vond je deze gids over Textacy handig en wil je je begrip van het voorbewerken van tekstdata en natural language processing verdiepen? Overweeg dan om je in te schrijven voor DataCamp’s Natural Language Processing Fundamentals in Python-cursus.
