Biorąc pod uwagę zdanie:
Complimentary gym access for two for the length of stay ($12 value per person per day)
Jakie ogólne podejście mogę zastosować, aby zidentyfikować słowo „gym” lub „gym access”?
Biorąc pod uwagę zdanie:
Complimentary gym access for two for the length of stay ($12 value per person per day)
Jakie ogólne podejście mogę zastosować, aby zidentyfikować słowo „gym” lub „gym access”?
Odpowiedzi:
Płytkie N aturalny L anguage P technika rzetwarzanie mogą być stosowane do wyodrębniania koncepcji z zdaniu.
-------------------------------------------
Płytkie kroki techniki NLP:
1) Konwertuj zdanie na małe litery
2) Usuń stopery (są to typowe słowa występujące w języku. Słowa takie jak, bardzo, i, z, itd. Są typowymi słowami stop)
3) Wyodrębnij n-gram, tj. Ciągłą sekwencję n elementów z danej sekwencji tekstu (po prostu zwiększając n, model może służyć do przechowywania większej ilości kontekstu)
4) Przypisz etykietę składniową (rzeczownik, czasownik itp.)
5) Ekstrakcja wiedzy z tekstu za pomocą analizy semantycznej / syntaktycznej, tj. Spróbuj zachować słowa, które mają większą wagę w zdaniu takim jak rzeczownik / czasownik
-------------------------------------------
Pozwala zbadać wyniki zastosowania powyższych kroków w danym zdaniu Complimentary gym access for two for the length of stay ($12 value per person per day)
.
Wyniki 1-gramowe: siłownia, dostęp, długość, pobyt, wartość, osoba, dzień
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
Pozwala zwiększyć n, aby przechowywać więcej kontekstu i usuwać stopery.
2-gramowe wyniki: bezpłatna siłownia, dostęp do siłowni, długość pobytu, wartość pobytu
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-gramowe wyniki: bezpłatny dostęp do siłowni, wartość pobytu, osoba na dzień
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
Rzeczy do zapamiętania:
Przybory:
Możesz rozważyć użycie OpenNLP / StanfordNLP do części tagowania mowy. Większość języka programowania ma bibliotekę pomocniczą dla OpenNLP / StanfordNLP. Możesz wybrać język w zależności od wygody. Poniżej znajduje się przykładowy kod R, którego użyłem do tagowania PoS.
Przykładowy kod 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"
Dodatkowe odczyty na temat Shallow & Deep NLP:
Płytkie i głębokie przetwarzanie NLP do nauki ontologii: szybki przegląd Kliknij tutaj
Integracja płytkiej i głębokiej NLP w celu uzyskania informacji Kliknij tutaj
Musisz przeanalizować strukturę zdania i wyodrębnić odpowiednie składniowe kategorie zainteresowań (w tym przypadku myślę, że byłaby to fraza rzeczownikowa , która jest kategorią frazową ). Aby uzyskać szczegółowe informacje, zobacz odpowiedni artykuł w Wikipedii i rozdział „Analiza struktury zdań” książki NLTK.
Jeśli chodzi o dostępne narzędzia programowe do wdrażania wyżej wspomnianego podejścia i nie tylko, sugerowałbym rozważenie albo NLTK (jeśli wolisz Python), albo StanfordNLP (jeśli wolisz Javę). Aby zapoznać się z wieloma innymi platformami NLP, bibliotekami i obsługą programowania różnych języków, zobacz odpowiednie sekcje (NLP) na tej doskonałej, wyselekcjonowanej liście .
Jeśli jesteś użytkownikiem R., na stronie http://www.rdatamining.com znajdziesz wiele dobrych praktycznych informacji . Spójrz na ich przykłady eksploracji tekstu.
Zobacz także pakiet TM.
Jest to również dobra strona agregująca - http://www.tapor.ca/