Ogólne podejście do wyodrębnienia tekstu kluczowego ze zdania (NLP)

27

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”?

William Falcon
źródło
Spójrz na Termine i dokumenty związane z projektem: nactem.ac.uk/software/termine
MrMeritology

Odpowiedzi:

30

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:

  • Skorzystaj z banku drzewa Penn, aby zrozumieć opis znacznika PoS https://www.ling.upenn.edu/courses/Fall_2003/ling001/penn_treebank_pos.html
  • W zależności od danych i kontekstu biznesowego możesz zdecydować o wartości n, aby wyodrębnić n-gramów ze zdania
  • Dodanie słów końcowych specyficznych dla domeny poprawiłoby jakość wydobywania koncepcji / motywów
  • Technika głębokiego NLP da lepsze wyniki, tj. Zamiast n-gramów, wykrywa relacje w zdaniach i reprezentuje / wyraża jako złożoną konstrukcję, aby zachować kontekst. Aby uzyskać dodatkowe informacje, patrz /stats//a/133680/66708

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

Manohar Swamynathan
źródło
Doskonała odpowiedź (+1). Tylko jedna sugestia: jeśli to możliwe, dostarcz literaturę lub przynajmniej ogólne odniesienia do płytkiej techniki NLP , o której wspomniałeś.
Aleksandr Blekh
1
Dziękuję bardzo. Dwa pytania, czy mogę to zrobić za pomocą nltk? Czy mogę użyć tf-idf, aby zrobić to samo, a następnie wziąć najbardziej unikalne słowa (najwyższe wyniki) jako moje słowa kluczowe?
William Falcon,
@ Aleksandr Blekh, dzięki. Dodałem dodatkowe linki do czytania, aby dowiedzieć się więcej o płytkiej i głębokiej NLP. Mam nadzieję, że to pomoże
Manohar Swamynathan
@ William Falcon, dzięki. 1) Tak, możesz użyć nltk 2) Oczywiście, można użyć TF-IDF Jeśli próbujesz znaleźć koncepcję lub motyw na poziomie dokumentu (ów).
Manohar Swamynathan
3

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 .

Aleksandr Blekh
źródło
0

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/

Michael Cox
źródło
Linki nie są uważane za prawidłowe odpowiedzi na tej stronie. Odpowiedz na oryginalne pytanie w swoim poście i użyj linków, aby uzupełnić swoją odpowiedź.
sheldonkreger