Я недавно знаком с Spacy
и довольно заинтересован в этой библиотеке Python.Однако в моей спецификации я намереваюсь выделить составные пары существительное-прилагательное в качестве ключевой фразы из входного предложения.Я думаю, что Spacy
предоставляет множество утилит для работы с задачей НЛП, но не нашел удовлетворительной подсказки для моей желаемой задачи.Я посмотрел очень похожий пост в SO
, связанном посте , и решение не очень эффективно и не работает для пользовательского входного предложения.
Вот часть входного предложения:
sentence_1="My problem was with DELL Customer Service"
sentence_2="Obviously one of the most important features of any computer is the human interface."
sentence_3="The battery life seems to be very good and have had no issues with it."
Вот код, который я пробовал:
import spacy, en_core_web_sm
nlp=en_core_web_sm.load()
def get_compound_nn_adj(doc):
compounds_nn_pairs = []
parsed=nlp(doc)
compounds = [token for token in sent if token.dep_ == 'compound']
compounds = [nc for nc in compounds if nc.i == 0 or sent[nc.i - 1].dep_ != 'compound']
if compounds:
for token in compounds:
pair_1, pair_2 = (False, False)
noun = sent[token.i:token.head.i + 1]
pair_1 = noun
if noun.root.dep_ == 'nsubj':
adj_list = [rt for rt in noun.root.head.rights if rt.pos_ == 'ADJ']
if adj_list:
pair_2 = adj_list[0]
if noun.root.dep_ == 'dobj':
verb_root = [vb for vb in noun.root.ancestors if vb.pos_ == 'VERB']
if verb_root:
pair_2 = verb_root[0]
if pair_1 and pair_2:
compounds_nn_pairs.append(pair_1, pair_2)
return compounds_nn_pairs
Я предполагаю, что тип модификации должен быть применен над вспомогательной функцией, потому что она не вернула ожидаемое соединениесуществительные-прилагательные пары.Есть ли кто-нибудь, кто имеет хороший опыт работы с Spacy
?Как я могу улучшить вышеуказанное эскизное решение?Любая лучшая идея?
Желаемый вывод :
Я ожидаю получить составные пары существительное-прилагательное из каждого входного предложения следующим образом:
desired_output_1="DELL Customer Service"
desired_output_2="human interface"
desired_output_3="battery life"
Есть ли способ получить ожидаемый результат?какое обновление потребуется для реализации выше?Есть еще мысли?Заранее спасибо!