簡體   English   中英

從python中的句子中提取子句

[英]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.

我嘗試使用flattenchomsky_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM