Data una frase del tipo:
Complimentary gym access for two for the length of stay ($12 value per person per day)
Quale approccio generale posso adottare per identificare la parola palestra o accesso alla palestra?
Data una frase del tipo:
Complimentary gym access for two for the length of stay ($12 value per person per day)
Quale approccio generale posso adottare per identificare la parola palestra o accesso alla palestra?
Risposte:
Shallow N atural L anguage P tecnica rocessing possono essere utilizzati per estrarre i concetti da sentenza.
-------------------------------------------
Passaggi della tecnica NLP superficiale:
1) Converti la frase in minuscolo
2) Rimuovere le parole d'ordine (sono parole comuni trovate in una lingua. Parole come, molto, e, di, sono, ecc. Sono parole d'ordine comuni)
3) Estrai n-grammo, cioè una sequenza contigua di n elementi da una determinata sequenza di testo (semplicemente aumentando n, il modello può essere usato per memorizzare più contesto)
4) Assegna un'etichetta sintattica (nome, verbo ecc.)
5) Estrazione della conoscenza dal testo attraverso un approccio di analisi semantica / sintattica, cioè, cerca di trattenere parole che hanno un peso maggiore in una frase come Noun / Verb
-------------------------------------------
Esaminiamo i risultati dell'applicazione dei passaggi precedenti alla frase specificata Complimentary gym access for two for the length of stay ($12 value per person per day)
.
Risultati di 1 grammo: palestra, accesso, lunghezza, permanenza, valore, persona, giorno
Summary of step 1 through 4 of shallow NLP:
1-gram PoS_Tag Stopword (Yes/No)? PoS Tag Description
-------------------------------------------------------------------
Complimentary NNP Proper noun, singular
gym NN Noun, singular or mass
access NN Noun, singular or mass
for IN Yes Preposition or subordinating conjunction
two CD Cardinal number
for IN Yes Preposition or subordinating conjunction
the DT Yes Determiner
length NN Noun, singular or mass
of IN Yes Preposition or subordinating conjunction
stay NN Noun, singular or mass
($12 CD Cardinal number
value NN Noun, singular or mass
per IN Preposition or subordinating conjunction
person NN Noun, singular or mass
per IN Preposition or subordinating conjunction
day) NN Noun, singular or mass
Step 4: Retaining only the Noun/Verbs we end up with gym, access, length, stay, value, person, day
Consente di aumentare n per memorizzare più contesto e rimuovere le password.
Risultati di 2 grammi: palestra gratuita, accesso alla palestra, durata del soggiorno, valore del soggiorno
Summary of step 1 through 4 of shallow NLP:
2-gram Pos Tag
---------------------------
access two NN CD
complimentary gym NNP NN
gym access NN NN
length stay NN NN
per day IN NN
per person IN NN
person per NN IN
stay value NN NN
two length CD NN
value per NN IN
Step 5: Retaining only the Noun/Verb combination we end up with complimentary gym, gym access, length stay, stay value
Risultati di 3 grammi: accesso gratuito alla palestra, durata del soggiorno, persona al giorno
Summary of step 1 through 4 of shallow NLP:
3-gram Pos Tag
-------------------------------------
access two length NN CD NN
complimentary gym access NNP NN NN
gym access two NN NN CD
length stay value NN NN NN
per person per IN NN IN
person per day NN IN NN
stay value per NN NN IN
two length stay CD NN NN
value per person NN IN NN
Step 5: Retaining only the Noun/Verb combination we end up with complimentary gym access, length stay value, person per day
Cose da ricordare:
Utensili:
Puoi prendere in considerazione l'utilizzo di OpenNLP / StanfordNLP per la codifica di parte del discorso. La maggior parte del linguaggio di programmazione ha una libreria di supporto per OpenNLP / StanfordNLP. Puoi scegliere la lingua in base al tuo comfort. Di seguito è riportato il codice R di esempio che ho usato per la codifica PoS.
Codice R di esempio:
Sys.setenv(JAVA_HOME='C:\\Program Files\\Java\\jre7') # for 32-bit version
library(rJava)
require("openNLP")
require("NLP")
s <- paste("Complimentary gym access for two for the length of stay $12 value per person per day")
tagPOS <- function(x, ...) {
s <- as.String(x)
word_token_annotator <- Maxent_Word_Token_Annotator()
a2 <- Annotation(1L, "sentence", 1L, nchar(s))
a2 <- annotate(s, word_token_annotator, a2)
a3 <- annotate(s, Maxent_POS_Tag_Annotator(), a2)
a3w <- a3[a3$type == "word"]
POStags <- unlist(lapply(a3w$features, `[[`, "POS"))
POStagged <- paste(sprintf("%s/%s", s[a3w], POStags), collapse = " ")
list(POStagged = POStagged, POStags = POStags)
}
tagged_str <- tagPOS(s)
tagged_str
#$POStagged
#[1] "Complimentary/NNP gym/NN access/NN for/IN two/CD for/IN the/DT length/NN of/IN stay/NN $/$ 12/CD value/NN per/IN person/NN per/IN day/NN"
#
#$POStags
#[1] "NNP" "NN" "NN" "IN" "CD" "IN" "DT" "NN" "IN" "NN" "$" "CD"
#[13] "NN" "IN" "NN" "IN" "NN"
Letture aggiuntive sulla PNL superficiale e profonda:
Elaborazione NLP superficiale e profonda per l'apprendimento dell'ontologia: una rapida panoramica Fare clic qui
Integrazione della PNL superficiale e profonda per l'estrazione delle informazioni Fare clic qui
Devi analizzare la struttura della frase ed estrarre le corrispondenti categorie sintattiche di interesse (in questo caso, penso che sarebbe una frase di sostantivo , che è una categoria di frase ). Per i dettagli, consultare l' articolo Wikipedia corrispondente e il capitolo "Analisi della struttura delle frasi" del libro NLTK.
Per quanto riguarda gli strumenti software disponibili per l'implementazione dell'approccio sopra menzionato e oltre, suggerirei di prendere in considerazione il software NLTK (se preferite Python) o StanfordNLP (se preferite Java). Per molti altri framework NLP, librerie e programmazione di supporto per varie lingue, vedere le sezioni corrispondenti (NLP) in questo eccellente elenco .
Se sei un utente R, ci sono molte buone informazioni pratiche su http://www.rdatamining.com . Guarda i loro esempi di mining di testo.
Inoltre, dai un'occhiata al pacchetto tm.
Questo è anche un buon sito di aggregazione- http://www.tapor.ca/