Anahtar metni cümleden çıkarmak için genel yaklaşım (nlp)


Yanıtlar:


30

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:

  • PoS etiketi açıklamasını anlamak için Penn ağacı bankasına bakın https://www.ling.upenn.edu/courses/Fall_2003/ling001/penn_treebank_pos.html
  • Verilerinize ve iş bağlamınıza bağlı olarak , n değerinin cümleden n-gram çıkarmasına karar verebilirsiniz.
  • Alana özgü dur sözcükleri eklemek, kavram / tema çıkarımının kalitesini yükseltir
  • Derin NLP tekniği, n-gram yerine, cümle içindeki ilişkileri tespit edecek ve bağlamı korumak için karmaşık yapı olarak ifade edecek / ifade edecek daha iyi sonuçlar verecektir. Ek bilgi için lütfen /stats//a/133680/66708 adresine bakın.

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:

  • Ontoloji öğrenme için Sığ ve Derin NLP İşleme: Bir Hızlı Genel Bakış Tıklayın

  • Bilgi Çekimi için Sığ ve Derin NLP'yi Entegre Etmek İçin Tıklayın


Mükemmel cevap (+1). Sadece bir öneri: mümkünse, literatür veya en azından bahsettiğiniz sığ NLP tekniği için genel referanslar sağlayın .
Aleksandr Blekh

1
Çok teşekkür ederim. İki soru, bunu nltk ile yapabilir miyim? Aynısını yapmak için tf-idf'i kullanabilir miyim, sonra en benzersiz kelimeleri (en yüksek puanları) anahtar kelimelerim olarak alabilir miyim?
William Falcon

@ Aleksandr Blekh, teşekkürler. Sığ ve derin NLP hakkında daha fazla bilgi edinmek için ek okuma bağlantıları ekledim. Bu yardımcı olur umarım
Manohar Swamynathan

@ William Falcon, teşekkürler. 1) Evet, nltk kullanabilirsiniz 2) Kesinlikle, TF-IDF kullanılabilir. Konsept veya temayı belge düzeyinde bulmaya çalışıyorsanız.
Manohar Swamynathan

3

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 .


0

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/


Linkler bu sitede geçerli cevaplar olarak kabul edilmez. Lütfen yazınızdaki orijinal soruyu cevaplayın ve cevabınızı tamamlamak için bağlantılar kullanın.
sheldonkreger
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.