Gegeben ein Satz wie:
Complimentary gym access for two for the length of stay ($12 value per person per day)
Wie kann ich allgemein vorgehen, um das Wort Fitnessstudio oder Zugang zum Fitnessstudio zu identifizieren?
Gegeben ein Satz wie:
Complimentary gym access for two for the length of stay ($12 value per person per day)
Wie kann ich allgemein vorgehen, um das Wort Fitnessstudio oder Zugang zum Fitnessstudio zu identifizieren?
Antworten:
Shallow N atural L anguage P rocessing Technik kann Konzepte von Satz zu extrahieren , verwendet werden.
-------------------------------------------
Flache NLP-Schritte:
1) Wandle den Satz in Kleinbuchstaben um
2) Stoppwörter entfernen (dies sind gebräuchliche Wörter in einer Sprache. Wörter wie for, very und of, are usw. sind gebräuchliche Stoppwörter.)
3) N-Gramm extrahieren, dh eine zusammenhängende Folge von n Elementen aus einer gegebenen Folge von Text (einfach n erhöhen, Modell kann verwendet werden, um mehr Kontext zu speichern)
4) Weisen Sie eine syntaktische Bezeichnung zu (Substantiv, Verb usw.)
5) Wissensextraktion aus Text durch semantische / syntaktische Analyse, dh versuchen, Wörter mit höherem Gewicht in einem Satz wie Nomen / Verb zu behalten
-------------------------------------------
Untersuchen wir die Ergebnisse der Anwendung der obigen Schritte auf Ihren gegebenen Satz Complimentary gym access for two for the length of stay ($12 value per person per day)
.
1 Gramm Ergebnisse: Fitnessstudio, Zugang, Länge, Aufenthalt, Wert, Person, Tag
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
Erhöhen Sie n, um mehr Kontext zu speichern und Stoppwörter zu entfernen.
2 Gramm Ergebnisse: kostenloses Fitnessstudio, Zugang zum Fitnessstudio, Daueraufenthalt, Aufenthaltswert
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
3-Gramm-Ergebnisse: kostenloser Zugang zum Fitnessstudio, Wert für einen längeren Aufenthalt, Person pro Tag
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
Dinge, an die man sich erinnern sollte:
Werkzeuge:
Sie können OpenNLP / StanfordNLP als Teil der Sprachkennzeichnung verwenden. Die meisten Programmiersprachen unterstützen eine Bibliothek für OpenNLP / StanfordNLP. Sie können die Sprache ganz nach Ihrem Komfort auswählen. Unten sehen Sie den Beispiel-R-Code, den ich für die PoS-Kennzeichnung verwendet habe.
Beispiel R-Code:
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"
Zusätzliche Lesungen zu Shallow & Deep NLP:
Flache und tiefe NLP-Verarbeitung für das Lernen der Ontologie: Ein kurzer Überblick Klicken Sie hier
Integration von Shallow und Deep NLP zur Informationsextraktion Klicken Sie hier
Sie müssen die Satzstruktur analysieren und entsprechende interessierende syntaktische Kategorien extrahieren (in diesem Fall würde es sich meiner Meinung nach um eine Nominalphrase handeln , bei der es sich um eine phrasale Kategorie handelt ). Einzelheiten finden Sie im entsprechenden Wikipedia-Artikel und im Kapitel "Analysieren der Satzstruktur" des NLTK-Buches.
In Bezug auf verfügbare Softwaretools für die Implementierung des oben genannten Ansatzes und darüber hinaus würde ich vorschlagen, entweder NLTK (wenn Sie Python bevorzugen) oder StanfordNLP-Software (wenn Sie Java bevorzugen) in Betracht zu ziehen. Informationen zu vielen anderen NLP-Frameworks, Bibliotheken und zur Unterstützung verschiedener Sprachen finden Sie in den entsprechenden Abschnitten (NLP) in dieser hervorragenden kuratierten Liste .
Wenn Sie ein R-Benutzer sind, finden Sie unter http://www.rdatamining.com viele gute praktische Informationen . Schauen Sie sich die Text Mining-Beispiele an.
Schauen Sie sich auch das tm-Paket an.
Dies ist auch eine gute Aggregationssite - http://www.tapor.ca/