【发布时间】:2022-01-17 17:15:59
【问题描述】:
我想在 Spacy 中编写一个匹配文本的模式,然后可以选择文本右侧的所有括号(如果有的话)。
例如,对于以下文本,我将箭头“->”的左侧部分作为输入,并将箭头的右侧部分作为输出。
However, we found that This Example (TE (as explained above) other stuff) -> This Example (TE (as explained above) other stuff)
Here is another example This Example (TE (some text here)) -> This Example (TE (some text here))
Some random text and then This Example (TE) -> This Example (TE)
Then a final example This Example -> This Example
这些文本不固定,仅作为示例。
我希望得到与结尾一样多的起始括号(甚至可能没有括号模式)
我尝试了以下方法,但它不起作用。
patt_1 = [
{"OP": "+", "LOWER": {"IN": ['this','example']}},
{"OP": "*", "LOWER": {"IN":["("]}},
{"OP": "*", "POS": {"IN":["ADJ", "PROPN", "NOUN", "CCONJ", "NUM", "ADV"]}},
{"OP": "*", "LOWER": {"IN": [")"]}}
]
它只匹配第一个括号。由于我对长文本进行操作,如果末尾有右括号,我还想匹配一个短语而不是整个文档。
我想要类似下面的东西,但它不起作用......
patt_1 = [
{"OP": "+", "LOWER": {"IN":["("]}},
{"OP": "+", "POS": {"IN":["ADJ", "PROPN", "NOUN"]}},
{"OP": "+", "LOWER": {"IN": [")"]}}
]
patt_2 = [
{"OP": "+", "LOWER": {"IN":["("]}},
{"OP": "+", "POS": {"IN":["ADJ", "PROPN", "NOUN"]}},
{"OP": "+", "LOWER": {"IN":["("]}},
{"OP": "+", "POS": {"IN":["ADJ", "PROPN", "NOUN"]}},
{"OP": "+", "LOWER": {"IN": [")"]}},
{"OP": "+", "POS": {"IN":["ADJ", "PROPN", "NOUN"]}},
{"OP": "+", "LOWER": {"IN": [")"]}}
]
patt_3 = [
{"OP": "+", "LOWER": {"IN": ['this','example']}},
{ "OP": "*", patt_1},
{ "OP": "*", patt_2}
]
感谢您的帮助
【问题讨论】: