[英]Extract clauses from sentence in 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
但無法獲得所需的結果。 如何在單行上列出每個子句以擺脫標記?
由於您要從字符串s
提取的所有內容似乎都是小寫字母,因此可以應用以下一種格式:
Python列表理解
print ' '.join(''.join(c for c in s if 'a' <= c <= 'z' or c == ' ').split())
它將(a。)和“ z”或“”之間的所有字符連接起來( ''.join
)。 為了消除相鄰的多個空格,它將結果分割並再次以空格作為分隔符將其合並。
正則表達式
如果您更喜歡正則表達式( import re
),則此更短的語句將產生相同的結果:
print ' '.join(re.findall('[a-z]+', s))
編輯
如果要單獨處理每個子句,則可以拆分整個字符串s
,然后將相同的代碼應用於每個部分(第一個部分除外,后者只是標題):
for part in s.split("CLAUSE")[1:]:
print ' '.join(re.findall('[a-z]+', part))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.