Étant donné une phrase comme:
Complimentary gym access for two for the length of stay ($12 value per person per day)
Quelle approche générale puis-je adopter pour identifier le mot accès au gymnase ou au gymnase?
Étant donné une phrase comme:
Complimentary gym access for two for the length of stay ($12 value per person per day)
Quelle approche générale puis-je adopter pour identifier le mot accès au gymnase ou au gymnase?
Réponses:
Faible profondeur N atural L angue P technique rocessing peuvent être utilisées pour extraire des concepts de phrase.
-------------------------------------------
Étapes de technique NLP peu profondes:
1) Convertissez la phrase en minuscules
2) Supprimer les mots vides (ce sont des mots courants trouvés dans une langue. Les mots comme pour, très, et, de, sont, etc., sont des mots vides courants)
3) Extraire n-gramme, c'est-à-dire une séquence contiguë de n éléments à partir d'une séquence de texte donnée (simplement augmenter n, le modèle peut être utilisé pour stocker plus de contexte)
4) Attribuer une étiquette syntaxique (nom, verbe etc.)
5) Extraction de connaissances à partir du texte grâce à une approche d'analyse sémantique / syntaxique, c'est-à-dire, essayez de conserver les mots qui ont plus de poids dans une phrase comme Noun / Verb
-------------------------------------------
Examinons les résultats de l'application des étapes ci-dessus à votre phrase donnée Complimentary gym access for two for the length of stay ($12 value per person per day)
.
Résultats 1 gramme: gym, accès, durée, séjour, valeur, personne, jour
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
Permet d'augmenter n pour stocker plus de contexte et supprimer les mots vides.
Résultats de 2 grammes: gymnase gratuit, accès au gymnase, durée du séjour, valeur du séjour
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
Résultats de 3 grammes: accès gratuit à la salle de sport, durée du séjour, personne par jour
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
Choses à retenir:
Outils:
Vous pouvez envisager d'utiliser OpenNLP / StanfordNLP pour le balisage Part of Speech. La plupart des langages de programmation ont une bibliothèque de support pour OpenNLP / StanfordNLP. Vous pouvez choisir la langue en fonction de votre confort. Voici l'exemple de code R que j'ai utilisé pour le marquage PoS.
Exemple de code R:
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"
Lectures supplémentaires sur la PNL peu profonde et profonde:
Traitement NLP peu profond et profond pour l'apprentissage de l'ontologie: un aperçu rapide Cliquez ici
Intégration de la PNL peu profonde et profonde pour l'extraction d'informations Cliquez ici
Vous devez analyser la structure de la phrase et extraire les catégories syntaxiques d'intérêt correspondantes (dans ce cas, je pense que ce serait un syntagme nominal , qui est une catégorie phrasale ). Pour plus de détails, voir l'article Wikipédia correspondant et le chapitre "Analyse de la structure des phrases" du livre NLTK.
En ce qui concerne les outils logiciels disponibles pour la mise en œuvre de l'approche susmentionnée et au-delà, je suggère de considérer soit le NLTK (si vous préférez Python), soit le logiciel StanfordNLP (si vous préférez Java). Pour de nombreux autres frameworks NLP, bibliothèques et programmation de la prise en charge de divers langages, voir les sections correspondantes (NLP) dans cette excellente liste organisée .
Si vous êtes un utilisateur R, il y a beaucoup de bonnes informations pratiques sur http://www.rdatamining.com . Regardez leurs exemples d'exploration de texte.
Jetez également un œil au package tm.
C'est aussi un bon site d'agrégation - http://www.tapor.ca/