Загальний підхід до вилучення ключового тексту з речення (nlp)


27

Дано таке речення:

Complimentary gym access for two for the length of stay ($12 value per person per day)

Який загальний підхід я можу застосувати, щоб визначити слово тренажерний зал чи доступ до спортзалу?


Подивіться на Termine та документи, пов'язані з проектом: nactem.ac.uk/software/termine
MrMeritology

Відповіді:


30

Мала N atural л anguage Р rocessing техніка може бути використана для отримання концепції з пропозиції.

-------------------------------------------

Дрібні кроки техніки NLP:

1) Перетворіть речення в малі

2) Видаліть стоп-слова (це звичайні слова, що зустрічаються в мові. Слова, такі як, дуже, і, з, є і т. Д., Є загальними словами зупинки)

3) Витяг n-грам, тобто суцільна послідовність n елементів із заданої послідовності тексту (просто збільшуючи n, модель може бути використана для зберігання більше контексту)

4) Призначте синтаксичну мітку (іменник, дієслово тощо)

5) Витяг знань з тексту за допомогою підходу семантичного / синтаксичного аналізу, тобто спробуйте зберегти слова, які мають більшу вагу, у реченні, як іменник / дієслово

-------------------------------------------

Давайте вивчимо результати застосування вищезазначених кроків до даного речення Complimentary gym access for two for the length of stay ($12 value per person per day).

Результати 1 грам: тренажерний зал, доступ, тривалість, перебування, цінність, людина, день

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

Дозволяє збільшити n, щоб зберігати більше контексту та видаляти зупинки.

2-грамові результати: безкоштовний тренажерний зал, доступ до тренажерного залу, тривалість перебування, вартість перебування

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-грамові результати: безкоштовний доступ до тренажерного залу, вартість перебування на тривалість, людина на день

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

Що потрібно пам’ятати:

  • Зверніться до банку дерева Penn, щоб зрозуміти опис тегів PoS https://www.ling.upenn.edu/courses/Fall_2003/ling001/penn_treebank_pos.html
  • Залежно від ваших даних та бізнес-контексту ви можете визначити n-значення для отримання n-грамів із речення
  • Додавання кінцевих слів для домену підвищить якість вилучення поняття / теми
  • Техніка глибокої NLP дасть кращі результати, тобто, ніж n-грам, виявлятиме стосунки в реченнях і представляє / виражає як складну конструкцію для збереження контексту. Для отримання додаткової інформації зверніться до /stats//a/133680/66708

Інструменти:

Ви можете розглянути можливість використання OpenNLP / StanfordNLP для тегування частини мови. Більшість мов програмування мають підтримуючу бібліотеку для OpenNLP / StanfordNLP. Ви можете вибрати мову, виходячи зі свого комфорту. Нижче наведено зразок коду R, який я використовував для тегів PoS.

Зразок коду 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" 

Додаткові показання щодо програми Shallow & Deep NLP:

  • Неглибока та глибока обробка НЛП для вивчення онтології: короткий огляд Натисніть тут

  • Інтеграція "Мілкого та глибокого НЛП" для вилучення інформації натисніть тут


Відмінна відповідь (+1). Лише одна пропозиція: якщо можливо, надайте літературу або, принаймні, загальні посилання на дрібну техніку NLP , яку ви згадали.
Олександр Блех

1
Дуже дякую. Два питання, чи можу це зробити за допомогою nltk? Чи можу я використовувати tf-idf, щоб зробити те саме, а потім взяти найбільш унікальні слова (найвищі бали) як свої ключові слова?
Вільям Сокіл

@ Олександр Блех, дякую. Я додав додаткові посилання для читання, щоб дізнатися більше про дрібну та глибоку НЛП. Сподіваюся, що це допомагає
Манохар Свамінатан

@ Вільям Фалькон, дякую. 1) Так, ви можете використовувати nltk 2) Абсолютно, TF-IDF можна використовувати, якщо ви намагаєтесь знайти концепцію або тему на рівні документів.
Manohar Swamynathan

3

Вам потрібно проаналізувати структуру речень та витягнути відповідні синтаксичні категорії, що цікавлять (у цьому випадку, я думаю, це було б іменниковою фразою , яка є фразовою категорією ). Детальніше дивіться відповідну статтю у Вікіпедії та розділ "Аналіз структури вироків" книги NLTK.

Що стосується наявних програмних засобів для впровадження вищезазначеного підходу та за його межами, я б запропонував розглянути або NLTK (якщо ви віддаєте перевагу Python), або програмне забезпечення StanfordNLP (якщо ви віддаєте перевагу Java). Для багатьох інших фреймворків NLP, бібліотек та програм програмування різних мов див. Відповідні розділи (NLP) у цьому відмінному кураторі .


0

Якщо ви користувач R, на http://www.rdatamining.com є багато корисної практичної інформації . Подивіться їхні приклади видобутку тексту.
Також погляньте на пакет tm.
Це також хороший сайт агрегації - http://www.tapor.ca/


Посилання не вважаються правильними відповідями на цьому сайті. Будь ласка, дайте відповідь на оригінальне запитання у своєму дописі та використовуйте посилання, щоб доповнити свою відповідь.
sheldonkreger
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.