2014-10-28 3 views
1

Я должен перечислять предложения из заданных предложений. Я реализую свои собственные правила грамматики, чтобы разбирать предложения из предложений. Полученный результат:Извлечь предложения из предложения в python

************************************************* 
(S 
    (CLAUSE 
    (VP 
     (VP they/PRP were/VBD delivered/VBN promptly/RB) 
     and/CC 
     (VP a/DT very/RB)) 
    (NP (NP good/JJ value/NN) and/CC (NP excellent/NN))) 
    (CLAUSE 
    (VP all/DT) 
    (NP (NP around/IN (NP slipper/NN)) (NP with/IN (NP traction/NN)))) 
    ./.) 
************************************************* 

Из приведенного выше предложения должны быть перечислены пункты, чтобы дать результат в следующих утверждениях.

they were delivered promptly and a very good value and excellent

all around slipper with traction.

Я попытался с помощью flatten и chomsky_normal_form, но не смог получить желаемый результат. Как перечислять каждое предложение по одной линии, избавляясь от тегов?

+0

пожалуйста, напишите код и грамматику. – alvas

ответ

2

Поскольку все, что вы хотите, чтобы извлечь из вашей строки s, кажется, в нижнем регистре, вы можете использовать один из следующих острот:

Python список понимание

print ' '.join(''.join(c for c in s if 'a' <= c <= 'z' or c == ' ').split()) 

Он присоединяется (''.join) все символы, которые находятся между «a» и «z» или «». Чтобы подавить несколько пространств рядом друг с другом, он разбивает результат и снова соединяет его с пространством в качестве разделителя.

Регулярное выражение

Если вы предпочитаете регулярные выражения (import re), это еще короче оператор дает тот же результат:

print ' '.join(re.findall('[a-z]+', s)) 

Редактировать

Если вы хотите для обработки каждого предложения индивидуально, вы можете разделить t он всю строку s, а затем применить один и тот же код для каждой части (кроме первого, который только заголовок):

for part in s.split("CLAUSE")[1:]: 
    print ' '.join(re.findall('[a-z]+', part)) 
+0

На самом деле я хочу перечислить каждое предложение по одной строке, избавляясь от тегов. – Sudo

+0

@Sudo: Хорошо, я обновил свой ответ, чтобы удовлетворить это требование. – Falko

Смежные вопросы