Mi az a kulcsszó-kivonatolás?
A kulcsszó-kivonatolás automatikusan kivonja a leggyakrabban használt és legfontosabb szavakat és kifejezéseket egy szövegből, szövegelemzési technika segítségével. Segít összefoglalni a szövegek tartalmát és felismerni a tárgyalt fő témákat, ami hasznos a piackutatás , a hangulatelemzés és más típusú adatelemzések során. Ez a technika kihasználja a mondatbeágyazásokat, és képes nagy adathalmazok valós idejű elemzésére.
A gépi tanulás mesterséges intelligencia (AI) a természetes nyelvfeldolgozással (NLP) (az informatika egyik területe) lebontja az emberi nyelvet, hogy a gépek megértsék és elemezzék azt. A kulcsszó-kivonatolás automatizálja a munkafolyamatokat, például a beérkező felmérési válaszok megjelölését vagy a sürgős ügyfélkérdésekre adott válaszokat. A technika a szövegekre és a bennük található szavakra vonatkozó nyelvi és szemantikai információkat használja. Különböző gépi tanulási algoritmusok és technikák léteznek a szövegben található legrelevánsabb kulcsszavak kinyerésére.
Miért fontos a kulcsszó-kivonatolás?
A kulcsszavak és kulcskifejezések kinyerése több okból is fontos:
- Keresőmotor-optimalizálás (SEO) : A kulcsszavak kinyerése segít azonosítani a dokumentumban található legfontosabb szavakat és kifejezéseket, amelyek felhasználhatók a weboldal tartalmának keresőmotorok számára történő optimalizálásához.
- Szövegösszefoglaló: A legfontosabb szavak és mondatok azonosításával, amelyek a szöveg fő témáját képviselik, a kulcsszavak kinyerése egy dokumentum összegzésére használható.
- Szöveges besorolás: A kulcsszavak kinyerése arra használható, hogy a szöveges dokumentumokat a bennük található kulcsszavak alapján különböző kategóriákba soroljuk. Ez olyan alkalmazásokban hasznos, mint például a hangulatelemzés.
- Információkeresés: A kulcsszavak kinyerése a felhasználó keresési lekérdezésének megfelelő releváns kulcsszavak azonosításával javíthatja az információkereső rendszerek pontosságát.
Hogyan készítsünk kulcsszó-kivonatolást az R-ben?
Íme néhány kulcsszó-kivonási technika és felhasználási esetük:
- Kulcsszavak keresése a főnevek azonosítása érdekében a szólásrészek címkézésével
- Kulcsszavak keresése kollokációk és együttes előfordulások alapján
- Kulcsszavak keresése a Textrank algoritmus alapján
- Kulcsszavak keresése a RAKE (gyors automatikus kulcsszó-kivonatolás) alapján
- Kulcsszavak keresése a függőségi elemzések eredményei alapján (a szöveg tárgyának megismerése)
Főnevek kivonása
A kulcsszavak megtalálásának egyszerű módja a főnevek vizsgálata. Mivel minden kifejezéshez tartozik egy beszédrészek címke, ha az udpipe csomaggal annotált szöveget:
Kód:
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")
Kollokáció és együttes előfordulások
A többszavas kifejezéseket vagy a kollokációk (egymást követő szavak), vagy az egyes mondatokon belüli szó-együttállások, vagy az egymáshoz közel álló szavak szó-együttállásai alapján kapja meg.
Kód:
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 (Google Pagerank szerint rendezett szóhálózat)
A Textrank egy másik kulcsszavak kinyerési módszere. A textrank R csomag a Textrank algoritmust valósítja meg. A Textrank algoritmus lehetővé teszi a szövegek összegzését és a kulcsszavak kinyerését. A szethálózat felépítéséhez az algoritmus ellenőrzi, hogy a szavak követik-e egymást. A „Google Pagerank” algoritmusa a releváns szavakat választja ki. Az egymás után következő releváns szavak együttesen kulcsszavakat eredményeznek. A TextRank nem az eredeti szövegből indul ki, mivel ez egy gráf-alapú megközelítés.
Kód:
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)
Gyors automatikus kulcsszó-kivonatolás: RAKE
A RAKE a következő alapvető algoritmus, amely a Rapid Automatic Keyword Extraction (gyors automatikus kulcsszó-kivonatolás) rövidítése. A RAKE egy doménfüggetlen kulcsszó-kivonatoló algoritmus a természetes nyelvi feldolgozásban.
-
A pontszám kiszámítása minden olyan szóra, amely része bármelyik kulcsszójelöltnek, a következőképpen történik
- a kulcsszójelöltek szavai között az algoritmus azt vizsgálja, hogy az egyes szavak hányszor fordulnak elő, és hányszor fordulnak elő más szavakkal együtt.
- minden szó kap egy pontszámot, amely a szó fokának (hányszor fordul elő más szavakkal együtt) és a szó gyakoriságának hányadosa.
- A teljes kulcsszójelöltre vonatkozó RAKE-pontszámot a kulcsszójelöltet meghatározó egyes szavak pontszámának összegzésével számítják ki.
Kód:
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))
Használja a függőségi elemzési kimenetet a nominális alany és a melléknév megadásához.
Amikor a megjegyzést az udpipe segítségével hajtotta végre, a dep_rel mező jelzi, hogy a szavak hogyan kapcsolódnak egymáshoz. Egy token a token_id és a head_token_id segítségével kapcsolódik a szülőhöz. A dep_rel mező azt jelzi, hogy a szavak hogyan kapcsolódnak egymáshoz. A kapcsolatok típusa a http://universaldependencies.org/u/dep/index.html oldalon található.
Kód:
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"))
Mi az a Text-Mining?
A szövegbányászat az R programozási nyelv és a kapcsolódó könyvtárak és csomagok segítségével történő elemzés és a szöveges adatokból való kinyerés folyamata. A szövegbányászat több lépést foglal magában, beleértve az adatok tisztítását és előfeldolgozását, a jellemzők kinyerését, a statisztikai modellezést és a vizualizálást.
A
tm
csomag a szöveges adatok olvasásához, az adatok tisztításához és előfeldolgozásához, valamint a szöveges adatok elemzéséhez gyakran használt dokumentum-term mátrixok létrehozásához nyújt funkciókat. A
tidytext
csomag eszközöket biztosít a szöveges adatok rendezett adatkeretekké alakításához.
A szövegbányászat néhány gyakori feladata a hangulatelemzés, a témamodellezés, a dokumentumok klaszterezése és a szövegosztályozás. Ezek a feladatok statisztikai és gépi tanulási technikák alkalmazását foglalják magukban a szöveges adatokon belüli minták és kapcsolatok azonosítására.
A kulcsszó-kivonatoló API-k olyan szoftverfelületek, amelyek lehetővé teszik a fejlesztők számára, hogy előre elkészített algoritmusok és gépi tanulási modellek segítségével kulcsszavakat és kulcsmondatokat vonjanak ki a szövegből. Ezek az API-k könnyen használható és skálázható megoldást kínálnak a kulcsszavak kinyerésének automatizálására, anélkül, hogy a fejlesztőknek saját modelleket kellene készíteniük és betanítaniuk.
Az R egy nyílt forráskódú programozási nyelv és szoftverkörnyezet statisztikai számításokhoz, adatelemzéshez és grafikához. Az R-t széles körben használják a tudományos életben, a kutatásban és az iparban olyan feladatokra, mint a statisztikai modellezés, az adatvizualizáció, a gépi tanulás és az adatbányászat. Más programozási nyelvekkel, például a Python és a C++ nyelvekkel is rendelkezik interfészekkel. Részletesebb információkat a GitHubon található online útmutatókkal találsz.