Я пытаюсь извлечь ключевую фразу из данного предложения с помощью схемы TF-IDF.Для этого я попытался найти слово-кандидат или фразу-кандидат в предложении, а затем использовать слово «часто встречающийся» в предложении.Однако, когда я ввел новое правило CFG
для поиска возможных ключевых фраз в предложении, у меня возникает ошибка.
Вот мой сценарий:
rm_punct=re.compile('[{}]'.format(re.escape(string.punctuation)))
stop_words=set(stopwords.words('english'))
def get_cand_words(sent, cand_type='word', remove_punct=False):
candidates=list()
sent=rm_punct.sub(' ', sent)
tokenized=word_tokenize(sent)
tagged_words=pos_tag(tokenized)
if cand_type=='word':
pos_tag_patt=tags = set(['JJ', 'JJR', 'JJS', 'NN', 'NNP', 'NNS', 'NNPS'])
tagged_words=chain.from_iterable(tagged_words)
for word, tag in enumerate(tagged_words):
if tag in pos_tag_patt and word not in stop_words:
candidates.append(word)
elif cand_type == 'phrase':
grammar = r'KT: {(<JJ>* <NN.*>+ <IN>)? <JJ>* <NN.*>+}'
chunker = RegexpParser(grammar)
all_tag = chain.from_iterable([chunker.parse(tag) for tag in tagged_words])
for key, group in groupby(all_tag, lambda tag: tag[2] != 'O'):
candidate = ' '.join([word for (word, pos, chunk) in group])
if key is True and candidate not in stop_words:
candidates.append(candidate)
else:
print("return word or phrase as target phrase")
return candidates
Вот ошибка, возникшая с помощьюpython:
sentence_1="Hillary Clinton agrees with John McCain by voting to give George Bush the benefit of the doubt on Iran."
sentence_2="The United States has the highest corporate tax rate in the free world"
get_cand_words(sent=sentence_1, cand_type='phrase', remove_punct=False)
ValueError: chunk structures must contain tagged tokens or trees
Я вдохновил приведенный выше код на основе извлечения ключевых фраз из длинного текстового абзаца, моя цель - найти уникальную ключевую фразу в данном предложении, но приведенная выше реализация не работает хорошо,
Как я могу исправить эту ошибку?Как сделать так, чтобы вышеуказанная реализация работала для извлечения ключевой фразы из данного предложения или списка предложений?Есть ли лучшая идея, чтобы это произошло?есть еще мысли?Спасибо
Цель :
Я хочу найти наиболее подходящее существительное-прилагательное или сложное существительное-прилагательное из данного предложения.Как я могу сделать это в Python?Кто-нибудь знает, как это сделать?Заранее спасибо