Gibi bir cümle verilir:
Complimentary gym access for two for the length of stay ($12 value per person per day)
Spor salonu veya spor salonuna erişim kelimesini tanımlamak için hangi genel yaklaşımı uygulayabilirim?
Gibi bir cümle verilir:
Complimentary gym access for two for the length of stay ($12 value per person per day)
Spor salonu veya spor salonuna erişim kelimesini tanımlamak için hangi genel yaklaşımı uygulayabilirim?
Yanıtlar:
Sığ N atural L anguage P rocessing tekniği cümle kavramları çıkarmak için de kullanılabilir.
-------------------------------------------
Sığ NLP tekniği adımları:
1) Cümleyi küçük harfe dönüştürün.
2) Stopwords'i kaldırın (bunlar bir dilde bulunan ortak kelimelerdir. Çok, ve, vb. Gibi kelimeler, genel stop kelimeleridir)
3) n-gram ekstresi, yani, belirli bir metin dizisinden bitişik bir n öğesi dizisi (sadece artan n, model daha fazla bağlam saklamak için kullanılabilir)
4) Sözdizimsel etiket atama (isim, fiil vb.)
5) Anlamsal / sözdizimsel analiz yaklaşımıyla metinden bilgi çıkarma, yani, Noun / Fiil gibi bir cümle içinde daha fazla ağırlığa sahip kelimeleri tutmaya çalış
-------------------------------------------
Yukarıdaki adımları uyguladığınız cümleye uygulamanın sonuçlarını inceleyelim Complimentary gym access for two for the length of stay ($12 value per person per day)
.
1-gram Sonuçlar: spor salonu, erişim, uzunluk, kalış, değer, kişi, gün
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
Daha fazla bağlam saklamak ve stopwords kaldırmak için n sayısını artıralım.
2-gram Sonuçlar: ücretsiz spor salonu, spor salonuna giriş, uzunluk uzunluğu, konaklama değeri
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-gram Sonuçlar: spor salonuna ücretsiz giriş, uzunluk konaklama değeri, günlük kişi
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
Hatırlanacak şeyler:
Araçlar:
Kısmen Konuşma etiketleme için OpenNLP / StanfordNLP kullanmayı düşünebilirsiniz. Programlama dilinin çoğu OpenNLP / StanfordNLP için destekleyici kütüphaneye sahiptir. Konforunuza göre dili seçebilirsiniz. PoS etiketlemesi için kullandığım örnek R kodu aşağıdadır.
Örnek R kodu:
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"
Sığ ve Derin NLP ile ilgili ek okumalar:
Cümle yapısını analiz etmeniz ve karşılık gelen sözdizimsel ilgi kategorilerini çıkarmanız gerekir (bu durumda, bir isim cümlesi , bence bu bir ifade kategorisidir ). Ayrıntılar için, ilgili Wikipedia makalesine ve NLTK kitabının "Cümle Yapısını Analiz Etme" bölümüne bakın.
Yukarıda belirtilen yaklaşımı ve ötesini uygulamak için mevcut yazılım araçları ile ilgili olarak , NLTK (Python'u tercih ediyorsanız) veya StanfordNLP yazılımını (Java'yı tercih ediyorsanız ) göz önünde bulundurmanızı öneririm . Diğer birçok NLP çerçevesi için, kütüphaneler ve çeşitli dilleri programlama desteği için, bu mükemmel küratörlük listesinde ilgili (NLP) bölümlere bakın .
Eğer bir R kullanıcısıysanız, http://www.rdatamining.com adresinde birçok pratik bilgi bulunmaktadır . Metin madenciliği örneklerine bakın.
Ayrıca, tm paketine bir göz atın.
Bu aynı zamanda iyi bir toplama sitesi- http://www.tapor.ca/