【发布时间】:2011-12-01 22:31:04
【问题描述】:
我正在尝试解析像Base: Lote Numero 1, Marcelo T de Alvear 500. Demanda: otras palabras. 这样的句子我想:首先,用句点分割文本,然后,使用冒号前面的任何内容作为冒号后面的句子的label。
现在我有以下定义:
from pyparsing import *
unicode_printables = u''.join(unichr(c) for c in xrange(65536)
if not unichr(c).isspace())
def parse_test(text):
label = Word(alphas)+Suppress(':')
value = OneOrMore(Word(unicode_printables)|Literal(','))
group = Group(label.setResultsName('label')+value.setResultsName('value'))
exp = delimitedList(
group,
delim='.'
)
return exp.parseString(text)
有点效果,但它会删除 unicode 字符(以及任何不在字母中的字符),我想我希望将 value 作为一个完整的句子而不是这个:'value': [(([u'Lote', u'Numero', u'1', ',', u'Marcelo', u'T', u'de', u'Alvear', u'500'], {}), 1)。
有一个简单的方法来解决这个问题吗?
【问题讨论】:
-
我认为 Paul McGuire 的 How to Answer[1] 有你想要的。 [1]:stackoverflow.com/questions/2339386/…
-
太好了,这将帮助我处理我定义中的 unicode,但不会给我整个句子,对吧?
-
是的。这是朝着正确方向迈出的一步,对吧?所以你可以打电话给
Word(unicodePrintables),而不是Word(alphanums) -
编辑了问题以反映这一点。
标签: python nlp pyparsing text-segmentation