【发布时间】:2019-06-19 17:29:02
【问题描述】:
首先,我有一个由项目列表组成的字符串,这些项目可以通过 enumerator(逗号/'and')或 文章('a'/'an'/'the')。请注意,如果有枚举数,则可以省略冠词,反之亦然。
例如让我们看看这个输入:
a paper, leaf the clock and an angel
这必须分为:
a paperleafthe clockan angel
第一个示例只有单个名称的项目,所以让我们看另一个示例:
a paper with some letters, a torn leaf and clock and an angel doll
这必须分为:
a paper with some letterstorn leafclockan angel doll
我已经为此尝试了一些正则表达式,而我最接近的是使用:
(?:\b(?P<article>the|an|a)\b)\s(?P<object>\b.+?\b(?=\b(?:the|an|a|$)\b))
当然,我没有考虑到 ','/'and' 拆分,因为我无法弄清楚,很遗憾。
最后如你所见,我使用组来识别/分离 object 和 article。如果可以这样,那就太好了。你有什么建议?
【问题讨论】:
-
我建议使用适当的工具,例如 NLTK,来解析自然语言。
-
您在某些情况下保留了该文章,而在其他情况下将其丢弃。这是一个错误吗?还是有一些您遗漏的规则?
-
如果有枚举数(and or comma),文章可以有也可以省略! @迈克
-
@georg 我理解你所说的,这可能是一个更好的主意......但是 NLTK 上的许可证仅用于非商业用途.. 我可能需要一段时间才能实际使用它用于商业用途。
-
@xDGameStudios:NLTK 在 Apache 2.0 下获得许可。 (github.com/nltk/nltk/wiki/FAQ)。如果确实允许任何商业用途并且是非 Copyleft,那么您不必按照相同的条款分发您的软件。
标签: python regex regex-group