2

我想在不使用 Natural Language Toolkit(NLTK) 的情况下从树结构中提取规则。
例如;树形结构为:

( NP-TMP ( NNP December  )  ( CD 1998  )  )  \n

我想提取这样的规则:

NP-TMP -> NNP CD
NNP -> 'December'
CD -> '1998'

如何re在不使用“nltk”的情况下使用 Python 中的库来做到这一点?

4

1 回答 1

0

一个非常不优雅的解决方案是

import re

s_expr = "( NP-TMP ( NNP December  )  ( CD 1998  )  )"
regex = re.compile("([\\w-]+)")

matches = re.findall(regex, s_expr)
# assert the s-expressions are 5
assert (len(matches) == 5)
print matches[0], matches[1], matches[3]
print matches[1], matches[2]
print matches[3], matches[4]

在这里,我假设所有的 s 表达式或树都有两个后代,如果没有,这将不起作用,也许手工制作的解析器比正则表达式更好。

于 2013-07-30T13:04:41.463 回答