python - 从Python中的句子中提取子句

标签 python nlp nltk

我必须列出给定句子中的子句。我正在实现自己的语法规则来解析句子中的子句。我得到的结果是:

*************************************************
(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))))
  ./.)
*************************************************

从上面的结果中,应该列出子句,以便在下面的语句中给出结果。

它们交付及时,物超所值,非常出色

全能拖鞋,具有牵引力。

我尝试使用 flattenchomsky_normal_form 但无法获得所需的结果。如何在单行上列出每个子句并去掉标签?

最佳答案

由于您想要从字符串 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))
<小时/>

编辑

如果要单独处理每个子句,可以拆分整个字符串 s,然后将相同的代码应用于每个部分(第一个除外,它只是标题):

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

关于python - 从Python中的句子中提取子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26601665/

相关文章:

python - 使用内置 inception 脚本将图像目录转换为 tfrecords

python - 如何从纯 python 创建 yaml 文件?

python - nltk.pos_tag() 是如何工作的?

deep-learning - 训练损失根本没有改变(PyTorch)

python - 如何使用 NLTK 分词器去除标点符号?

python - NLTK 中的 wordnet 词形还原器不适用于副词

Python C 模块函数参数引用计数

python - 使用solve_ivp和odeint的解决方案的曲线拟合差异

tensorflow - SimpleTransformers 错误 : VersionConflict: tokenizers==0. 9.4?我该如何解决?

ipython - 如何制作 iPython/Jupyter 中内联的 NLTK draw() 树