Как найти ожидаемую целевую фразу или ключевые слова из данного предложения в Python? - PullRequest
0 голосов
/ 16 ноября 2018

Мне интересно, есть ли какой-нибудь эффективный способ извлечь ожидаемую целевую фразу или ключевую фразу из данного предложения. До сих пор я маркировал данное предложение и получал POS-тег для каждого слова. Теперь я не уверен, как извлечь целевую ключевую фразу или ключевое слово из данного предложения. Способ сделать это не интуитивно для меня.

Вот мой список предложений:

sentence_List= {"Obviously one of the most important features of any computer is the human interface.", "Good for everyday computing and web browsing.",
"My problem was with DELL Customer Service", "I play a lot of casual games online[comma] and the touchpad is very responsive"}

вот символическое предложение:

from nltk.tokenize import word_tokenize
tokenized_sents = [word_tokenize(i) for i in sentence_List]
tokenized=[i for i in tokenized_sents]

Здесь я использовал Spacy, чтобы получить POS-тег слов:

import spacy
nlp = spacy.load('en_core_web_sm')

res=[]
for i in range(len(sentence_list.index)):
    for token in i:
        res.append(token.pos_)

, поэтому я могу использовать NER (a.k.a, отношение сущность имени) из spacy, но его вывод не совпадает с моей заранее определенной ожидаемой целевой фразой. Кто-нибудь знает, как выполнить эту задачу, используя модуль Spacy или stanfordcorenlp в Python? Какое эффективное решение сделать это? Любая идея? Заранее спасибо:)

желаемый вывод :

Я хочу получить список целевой фразы из соответствующего списка предложений следующим образом:

target_phraseList={"human interface","everyday computing","DELL Customer Service","touchpad"}

, поэтому я объединяю свой ввод sentence_list с ожидаемой целевой фразой, мой конечный желаемый результат будет выглядеть так:

import pandas as pd
df=pd.Series(sentence_List, target_phraseList)
df=pd.DataFrame(df)

Как я могу получить мои ожидаемые целевые фразы из заданного списка входных предложений, используя spacy? Есть идеи?

1 Ответ

0 голосов
/ 16 ноября 2018

Вы можете сделать это, используя spacy с помощью Phrase Matcher .

from spacy.matcher import PhraseMatcher

matcher = PhraseMatcher(nlp.vocab)
matcher.add('DELL', None, nlp(u"DELL Customer Service"))
doc = nlp(u"My problem was with DELL Customer Service")
matches = matcher(doc)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...