Naturlig språkbehandling är en aspekt av maskininlärning som låter dig bearbeta skrivna ord till ett maskinvänligt språk. Sådana texter blir sedan tweakable, och du kan köra beräkningsalgoritmer på dem som du vill.

Logiken bakom denna fängslande teknik verkar komplex men är inte det. Och även nu, med ett gediget grepp om grundläggande Python -programmering, kan du skapa en ny DIY -ordbehandlare med det naturliga språkverktyget (NLTK).

Så här kommer du igång med Pythons NLTK.

Vad är NLTK och hur fungerar det?

Skrivet med Python, har NLTK en mängd olika strängmanipulerande funktioner. Det är ett mångsidigt naturligt språkbibliotek med ett stort modellförvar för olika applikationer för naturligt språk.

Med NLTK kan du bearbeta råa texter och extrahera meningsfulla funktioner från dem. Det erbjuder också textanalysmodeller, funktionsbaserade grammatiker och rika lexikaliska resurser för att bygga en komplett språkmodell.

Så här konfigurerar du NLTK

Skapa först en projektrotmapp var som helst på din dator. För att börja använda NLTK -biblioteket, öppna din terminal till rotmappen som du skapade tidigare och

skapa en virtuell miljö.

Installera sedan verktyget för det naturliga språket i denna miljö med pip:

pip installera nltk

NLTK har dock en mängd olika datamängder som fungerar som grund för nya modeller för naturligt språk. För att komma åt dem måste du snurra upp den inbyggda NLTK-nedladdaren för data.

Så när du har installerat NLTK öppnar du din Python -fil med valfri kodredigerare.

Importera sedan nltk modul och instansiera dataöverföraren med följande kod:

pip installera nltk
nltk.download ()

Att köra ovanstående kod via terminalen ger ett grafiskt användargränssnitt för att välja och ladda ner datapaket. Här måste du välja ett paket och klicka på Ladda ner knappen för att få den.

Alla datapaket du laddar ner går till den angivna katalogen som skrivs i Ladda ner katalog fält. Du kan ändra detta om du vill. Men försök att behålla standardplatsen på denna nivå.

Relaterad: De bästa gratis kodredigerarna för att skriva din första app

Notera: Datapaketen lägger till systemvariablerna som standard. Så du kan fortsätta använda dem för efterföljande projekt oavsett vilken Python -miljö du använder.

Hur man använder NLTK Tokenizers

I slutändan erbjuder NLTK utbildade tokeniseringsmodeller för ord och meningar. Med hjälp av dessa verktyg kan du skapa en lista med ord från en mening. Eller förvandla ett stycke till en vettig meningsuppsättning.

Här är ett exempel på hur du använder NLTK word_tokenizer:

importera nltk
från nltk.tokenize importera word_tokenize
word = "Detta är en exempeltext"
tokenWord = word_tokenizer (word)
print (tokenWord)
Produktion:
['Detta', 'är', 'ett', 'exempel', 'text']

NLTK använder också en förutbildad meningstokenizer som kallas PunktSentenceTokenizer. Det fungerar genom att dela in ett stycke i en lista med meningar.

Låt oss se hur det här fungerar med en paragraf med två meningar:

importera nltk
från nltk.tokenize importera word_tokenize, PunktSentenceTokenizer
phrase = "Detta är en exempeltext. Detta är en handledning för NLTK "
token = PunktSentenceTokenizer ()
tokenized_sentence = token.tokenize (mening)
print (tokenized_sentence)
Produktion:
['Detta är en exempeltext.', 'Detta är en självstudie för NLTK']

Du kan vidare symbolisera varje mening i matrisen som genereras från ovanstående kod med word_tokenizer och Python för loop.

Exempel på hur man använder NLTK

Så även om vi inte kan visa alla möjliga användningsfall av NLTK, här är några exempel på hur du kan börja använda det för att lösa verkliga problem.

Få orddefinitioner och deras delar av tal

NLTK innehåller modeller för att bestämma taldelar, få detaljerad semantik och möjlig kontextuell användning av olika ord.

Du kan använda wordnet modell för att generera variabler för en text. Bestäm sedan dess betydelse och del av talet.

Låt oss till exempel kontrollera de möjliga variablerna för "Monkey:"

importera nltk
från nltk.corpus importera wordnet som wn
print (wn.synsets ('apa'))
Produktion:
[Synset ('monkey.n.01'), Synset ('imp.n.02'), Synset ('tamper.v.01'), Synset ('putter.v.02')]

Ovanstående kod matar ut möjliga ordalternativ eller syntaxer och taldelar för "Monkey".

Kontrollera nu innebörden av "Monkey" med definition metod:

Monkey = wn.synset ('monkey.n.01'). Definition ()
Produktion:
någon av olika långsvansade primater (exklusive prosimianerna)

Du kan ersätta strängen inom parentesen med andra genererade alternativ för att se vad NLTK -utdata ger.

De pos_tag modell bestämmer emellertid ordets taldelar. Du kan använda detta med word_tokenizer eller PunktSentenceTokenizer () om du har att göra med längre stycken.

Så här fungerar det:

importera nltk
från nltk.tokenize importera word_tokenize, PunktSentenceTokenizer
word = "Detta är en exempeltext. Detta är en handledning om NLTK "
token = PunktSentenceTokenizer ()
tokenized_sentence = token.tokenize (word)
för i i tokenized_sentence:
tokenWordArray = word_tokenize (i)
partsOfSpeech = nltk.pos_tag (tokenWordArray)
print (partsOfSpeech)
Produktion:
[('This', 'DT'), ('is', 'VBZ'), ('an', 'DT'), ('example', 'NN'), ('text', 'NN'), ('.', '.')]
[('This', 'DT'), ('is', 'VBZ'), ('a', 'DT'), ('tutorial', 'JJ'), ('on', 'IN'), ('NLTK', 'NNP')]

Ovanstående kod parar ihop varje tokeniserat ord med sin taltagg i en tupel. Du kan kontrollera betydelsen av dessa taggar på Penn Treebank.

För ett renare resultat kan du ta bort perioderna i utmatningen med hjälp av byta ut() metod:

för i i tokenized_sentence:
tokenWordArray = word_tokenize (i.replace ('.', ''))
partsOfSpeech = nltk.pos_tag (tokenWordArray)
print (partsOfSpeech)
Renare utgång:
[('This', 'DT'), ('is', 'VBZ'), ('an', 'DT'), ('example', 'NN'), ('text', 'NN') ]
[('This', 'DT'), ('is', 'VBZ'), ('a', 'DT'), ('tutorial', 'JJ'), ('on', 'IN'), ('NLTK', 'NNP')]

Visualisera funktionstrender med NLTK -plot

Att extrahera funktioner från råa texter är ofta tråkigt och tidskrävande. Men du kan se de starkaste funktionsdeterminerna i en text med hjälp av NLTK -frekvensfördelningstrenddiagrammet.

NLTK synkroniseras dock med matplotlib. Du kan utnyttja detta för att se en specifik trend i dina data.

Koden nedan jämför till exempel en uppsättning positiva och negativa ord på en distributionsplot med deras två sista alfabet:

importera nltk
från nltk import ConditionalFreqDist
Listor över negativa och positiva ord:
negativ = [
'onormal', 'avskaffa', 'avskyvärd',
'avskyvärt', 'avskyvärd', 'avskyvärd'
]
positiva = [
'överflöd', 'överflöd', 'överflöd',
'rikligt', 'tillgängligt', 'tillgängligt'
]
# Dela objekten i varje array i märkta tupplepar
# och kombinera båda matriserna:
pos_negData = ([("negativ", neg) för neg i negativ]+[("positiv", pos) för pos i positiva])
# Extrahera de två sista alfabetet från den resulterande matrisen:
f = ((pos, i [-2:],) för (pos, i) i pos_negData)
# Skapa en distributionsdiagram för dessa alfabet
cfd = ConditionalFreqDist (f)
cfd.plot ()

Alfabetets fördelningsdiagram ser ut så här:

Tittar noga på diagrammet, ord som slutar med ce, ds, le, nd, och nt har större sannolikhet att vara positiva texter. Men de som slutar med al, ly, , och te är troligare negativa ord.

Notera: Även om vi har använt egengenererad data här kan du komma åt några av NLTK: s inbyggda datamängder med hjälp av dess Corpus-läsare genom att ringa dem från korpus klass av nltk. Du kanske vill titta på corpus -paketdokumentation för att se hur du kan använda den.

Med framväxten av teknologier som Alexa, skräppostdetektering, chatbots, sentimentanalyser och mer, verkar bearbetning av naturligt språk utvecklas till sin sub-mänskliga fas. Även om vi bara har övervägt några exempel på vad NLTK erbjuder i den här artikeln, har verktyget mer avancerade applikationer högre än omfattningen av denna handledning.

Efter att ha läst den här artikeln bör du ha en bra uppfattning om hur du använder NLTK på basnivå. Allt som återstår att göra nu är att själv omsätta denna kunskap!

Dela med sigTweetE-post
7 maskininlärningsbibliotek för blivande experter

Intresserad av maskininlärning? Kom igång med dessa bibliotek.

Läs Nästa

Relaterade ämnen
  • Programmering
  • Pytonorm
  • Programmeringsspråk
  • Programmering
Om författaren
Idowu Omisola (96 artiklar publicerade)

Idowu brinner för allt smart teknik och produktivitet. På fritiden leker han med kodning och byter till schackbrädet när han har tråkigt, men han älskar också att bryta sig från rutinen då och då. Hans passion för att visa människor vägen kring modern teknik motiverar honom att skriva mer.

Mer från Idowu Omisola

Prenumerera på vårt nyhetsbrev

Gå med i vårt nyhetsbrev för tekniska tips, recensioner, gratis e -böcker och exklusiva erbjudanden!

Klicka här för att prenumerera