Vad är sökordsextraktion?
Nyckelordsextraktion extraherar automatiskt de mest använda och viktigaste orden och uttrycken från en text med hjälp av en textanalysteknik. Den hjälper till att sammanfatta innehållet i texter och känna igen de viktigaste ämnena som diskuteras, vilket är användbart för marknadsundersökningar , sentimentanalys och andra typer av dataanalys. Den här tekniken utnyttjar inbäddning av meningar och kan analysera stora datamängder i realtid.
Maskininlärning artificiell intelligens (AI) med behandling av naturligt språk (NLP) (ett område inom datavetenskap) bryter ner mänskligt språk så att maskiner kan förstå och analysera det. Utdragning av nyckelord automatiserar arbetsflöden som t.ex. taggning av inkommande enkätsvar eller svar på brådskande kundförfrågningar. Tekniken använder sig av språklig och semantisk information om texter och de ord de innehåller. Det finns olika algoritmer och tekniker för maskininlärning för att extrahera de mest relevanta nyckelorden i en text.
Varför är det viktigt med nyckelordsextraktion?
Det är viktigt att extrahera nyckelord och nyckelfraser av flera skäl:
- Sökmotoroptimering (SEO) : Nyckelordsextraktion hjälper till att identifiera de viktigaste orden och fraserna i ett dokument, vilket kan användas för att optimera webbplatsens innehåll för sökmotorer.
- Sammanfattning av text: Nyckelordsextraktion kan användas för att sammanfatta ett dokument genom att identifiera de viktigaste orden och fraserna som representerar textens huvudtema.
- Klassificering av text: Nyckelordsextraktion kan användas för att klassificera textdokument i olika kategorier baserat på de nyckelord de innehåller. Detta är användbart i tillämpningar som t.ex. sentimentanalyser.
- Informationssökning: Nyckelordsextraktion kan användas för att förbättra informationssökningssystemens noggrannhet genom att identifiera relevanta nyckelord som matchar en användares sökfråga.
Hur gör man nyckelordsextraktion i R?
Här är några tekniker för utvinning av nyckelord och deras användningsområden:
- Hitta nyckelord genom att göra Parts of Speech-tagging för att identifiera substantiv.
- Hitta nyckelord baserat på kollokationer och samvariation
- Hitta nyckelord baserat på Textrank-algoritmen
- Hitta nyckelord baserat på RAKE (rapid automatic keyword extraction)
- Hitta nyckelord baserat på resultaten av beroendeanalysen (för att få fram textens ämne).
Extraktion av substantiv
Ett enkelt sätt att hitta nyckelord är att titta på substantiv. Eftersom varje term har en Parts of Speech-tagg om du har kommenterat text med hjälp av udpipe-paketet:
Kod:
stats <- subset(x, upos %in% "NOUN")
stats <- txt_freq(x = stats$lemma)
library(lattice)
stats$key <- factor(stats$key, levels = rev(stats$key))
barchart(key ~ freq, data = head(stats, 30), col = "cadetblue", main = "Most occurring nouns", xlab = "Freq")
Kollokation och samtidiga förekomster
Du kan få fram uttryck med flera ord genom att titta antingen på kollokationer (ord som följer på varandra), på ord som förekommer tillsammans i varje mening eller på ord som förekommer tillsammans med ord som ligger nära varandra.
Kod:
Collocation (words following one another)
stats <- keywords_collocation(x = x,
term = "token", group = c("doc_id", "paragraph_id", "sentence_id"),
ngram_max = 4)
Co-occurrences: How frequent do words occur in the same sentence, in this case only nouns or adjectives
stats <- cooccurrence(x = subset(x, upos %in% c("NOUN", "ADJ")),
term = "lemma", group = c("doc_id", "paragraph_id", "sentence_id"))
## Co-occurrences: How frequent do words follow one another
stats <- cooccurrence(x = x$lemma,
relevant = x$upos %in% c("NOUN", "ADJ"))
## Co-occurrences: How frequent do words follow one another even if we would skip 2 words in between
stats <- cooccurrence(x = x$lemma,
relevant = x$upos %in% c("NOUN", "ADJ"), skipgram = 2)
Textrank (ordnätverk ordnat efter Google Pagerank)
Textrank är en annan metod för att extrahera nyckelord. R-paketet textrank implementerar Textrank-algoritmen. Textrank-algoritmen gör det möjligt att sammanfatta text och extrahera nyckelord. För att skapa ett ordnätverk kontrollerar algoritmen om orden följer varandra. Google Pagerank-algoritmen extraherar relevanta ord. Relevanta ord som följer på varandra kombineras till nyckelord. TextRank utgår inte från originaltexten, eftersom det är en grafbaserad metod.
Kod:
stats <- textrank_keywords(x$lemma, relevant = x$upos %in% c("NOUN", "ADJ"), ngram_max = 8, sep = " ")
stats <- subset(stats$keywords, ngram > 1 & freq >= 5) library(wordcloud) wordcloud(words = stats$keyword, freq = stats$freq)
Snabbt automatiskt utdrag av nyckelord: RAKE
RAKE är nästa grundläggande algoritm som är en akronym för Rapid Automatic Keyword Extraction. RAKE är en domänoberoende algoritm för utvinning av nyckelord inom Natural Language Processing.
-
Beräkningen av en poäng för varje ord som ingår i ett kandidatnyckelord görs genom att
- Bland orden i kandidatnyckelorden tittar algoritmen på hur många gånger varje ord förekommer och hur många gånger det förekommer tillsammans med andra ord.
- Varje ord får en poäng som är förhållandet mellan ordets grad (hur många gånger det förekommer tillsammans med andra ord) och ordfrekvensen.
- En RAKE-poäng för hela kandidatnyckelordet beräknas genom att summera poängen för varje ord som definierar kandidatnyckelordet.
Kod:
stats <- keywords_rake(x = x, term = "token", group = c("doc_id", "paragraph_id", "sentence_id"), relevant = x$upos %in% c("NOUN", "ADJ"), ngram_max = 4)
head(subset(stats, freq > 3))
Använd resultatet av beroendeanalysen för att få fram det nominella subjektet och adjektivet till det.
När du utförde annotationen med udpipe anger fältet dep_rel hur orden är relaterade till varandra. En token är relaterad till den överordnade med hjälp av token_id och head_token_id . Fältet dep_rel anger hur orden är kopplade till varandra. Vilken typ av relation finns på http://universaldependencies.org/u/dep/index.html.
Kod:
stats <- merge(x, x, by.x = c("doc_id", "paragraph_id", "sentence_id", "head_token_id"), by.y = c("doc_id", "paragraph_id", "sentence_id", "token_id"), all.x = TRUE, all.y = FALSE, suffixes = c("", "_parent"), sort = FALSE)
stats <- subset(stats, dep_rel %in% "nsubj" & upos %in% c("NOUN") & upos_parent %in% c("ADJ"))
stats$term <- paste(stats$lemma_parent, stats$lemma, sep = " ")
stats <- txt_freq(stats$term)
library(wordcloud)
wordcloud(words = stats$key, freq = stats$freq, min.freq = 3, max.words = 100, random.order = FALSE, colors = brewer.pal(6, "Dark2"))
Vad är textutvinning?
Textutvinning i R avser processen för att analysera och utvinna insikter från textdata med hjälp av programmeringsspråket R och tillhörande bibliotek och paket. Textutvinning omfattar flera steg, bland annat rensning och förbehandling av data, utvinning av funktioner, statistisk modellering och visualisering.
Paketet
tm
innehåller funktioner för att läsa in textdata, rensa och förbehandla data och skapa matriser för dokumenttermer, som ofta används för att analysera textdata. Paketet
tidytext
innehåller verktyg för att konvertera textdata till prydliga dataramar.
Några vanliga uppgifter inom textutvinning är sentimentanalys, ämnesmodellering, klusterindelning av dokument och textklassificering. Dessa uppgifter innebär att statistiska och maskininlärningstekniker används för att identifiera mönster och relationer i textdata.
API:er för nyckelordsextraktion är programvarugränssnitt som gör det möjligt för utvecklare att extrahera nyckelord och nyckelfraser från text med hjälp av förbyggda algoritmer och modeller för maskininlärning. Dessa API:er ger en lättanvänd och skalbar lösning för att automatisera processen för sökordsextraktion, utan att utvecklare behöver bygga och träna sina egna modeller.
R är ett programmeringsspråk och en programvarumiljö med öppen källkod för statistiska beräkningar, dataanalyser och grafik. R används ofta inom akademin, forskningen och industrin för uppgifter som statistisk modellering, datavisualisering, maskininlärning och datautvinning. Det har gränssnitt mot andra programmeringsspråk som Python och C++ . Mer detaljerad information finns i handledningar online på GitHub.