Dada una oración como:
Complimentary gym access for two for the length of stay ($12 value per person per day)
¿Qué enfoque general puedo tomar para identificar la palabra gimnasio o acceso al gimnasio?
Dada una oración como:
Complimentary gym access for two for the length of stay ($12 value per person per day)
¿Qué enfoque general puedo tomar para identificar la palabra gimnasio o acceso al gimnasio?
Respuestas:
Shallow N atural L anguage P técnica rocesadorasde se pueden utilizar para extraer conceptos de frase.
-------------------------------------------
Pasos de la técnica de PNL superficial:
1) Convertir la oración a minúsculas
2) Elimine las palabras vacías (estas son palabras comunes que se encuentran en un idioma. Palabras como for, very y, of, are, etc., son palabras de parada comunes)
3) Extraiga n-grama, es decir, una secuencia contigua de n elementos de una secuencia de texto dada (simplemente aumentando n, el modelo puede usarse para almacenar más contexto)
4) Asignar una etiqueta sintáctica (sustantivo, verbo, etc.)
5) Extracción de conocimiento del texto a través del enfoque de análisis semántico / sintáctico, es decir, tratar de retener palabras que tengan mayor peso en una oración como Sustantivo / Verbo
-------------------------------------------
Vamos a examinar los resultados de aplicar los pasos anteriores a la oración dada Complimentary gym access for two for the length of stay ($12 value per person per day)
.
Resultados de 1 gramo: gimnasio, acceso, duración, estadía, valor, persona, día
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
Vamos a aumentar n para almacenar más contexto y eliminar palabras vacías.
Resultados de 2 gramos: gimnasio gratuito, acceso al gimnasio, estadía prolongada, valor de estadía
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
Resultados de 3 gramos: acceso gratuito al gimnasio, duración de la estadía, persona por día
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
Cosas para recordar:
Herramientas:
Puede considerar usar OpenNLP / StanfordNLP para el etiquetado de parte de voz. La mayoría del lenguaje de programación tiene una biblioteca de soporte para OpenNLP / StanfordNLP. Puede elegir el idioma según su comodidad. A continuación se muestra el código R de muestra que utilicé para el etiquetado PoS.
Código R de muestra:
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"
Lecturas adicionales en PNL superficial y profunda:
Procesamiento de PNL superficial y profundo para el aprendizaje de ontología: una descripción rápida Haga clic aquí
Integrando PNL superficial y profundo para extracción de información Haga clic aquí
Debe analizar la estructura de la oración y extraer las categorías sintácticas de interés correspondientes (en este caso, creo que sería una frase sustantiva , que es una categoría de frase ). Para más detalles, vea el artículo correspondiente de Wikipedia y el capítulo "Análisis de la estructura de la oración" del libro NLTK.
Con respecto a las herramientas de software disponibles para implementar el enfoque mencionado anteriormente y más allá, sugeriría considerar NLTK (si prefiere Python) o el software StanfordNLP (si prefiere Java). Para muchos otros marcos de trabajo de PNL, bibliotecas y soporte de varios idiomas de programación, vea las secciones correspondientes (PNL) en esta excelente lista seleccionada .
Si usted es un usuario de R, hay una gran cantidad de buena información práctica en http://www.rdatamining.com . Mira sus ejemplos de minería de texto.
Además, eche un vistazo al paquete tm.
Este también es un buen sitio de agregación: http://www.tapor.ca/