如何在同一令牌空间匹配器中匹配数字和文本?

2024-05-19 01:38:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的句子,我想从中提取出“12am”

He is working at 12am

我正在使用Spacy Matcher(语言模型en_core\u web\u lg),它将文本分解为以下标记:

[He] [is] [working] [at] [12am]

我尝试的模式是:

[{ "LIKE_NUM": true }, {"IS_SPACE": false}, { "LOWER": "am" }],
[{ "LIKE_NUM": true , "LOWER": "am" }],
[{ "SHAPE": 'dd' , "ORTH": "am" }]

到目前为止,一切都不起作用。基本上,因为令牌是[12am]

我需要帮助来创建匹配模式:

谢谢你的建议。谢谢


Tags: 模型语言truespacyis模式matcheram
1条回答
网友
1楼 · 发布于 2024-05-19 01:38:49

不需要使用spaCy,您可以使用简单的正则表达式。但是,如果您想使用spaCy,我将在下面介绍如何使用spaCy matcher regex功能

使用Regex

模式:[0-9]+[,.]?[0-9]+[ ]?[A-Za-z]+

说明:查找1+字符([0-9]+)的任何重复数字。还有一个可选的点、逗号([,.])和其他字符([0-9]+)。然后,有一个可选的空格([]),后跟大写或小写字符([A-Za-z]+)

如果你是这样的话,你可以修改它以排除空白

这里有一个活生生的例子:https://regex101.com/r/HmTKD7/1

在python中:

import re
pattern = r'[0-9]+[,.]?[0-9]+[ ]?[A-Za-z]+'
results = re.findall(pattern, text)

使用空间匹配器:

在spaCy中,您可以执行以下匹配:

pattern = [{"TEXT": {"REGEX": "[0-9]+[,.]?[0-9]+[A-Za-z]+"}}]

请记住,如果数字和度量值类型之间有空格,spacy将分成两个标记。这就是为什么模式的正则表达式不包含空格

目前还没有办法在https://explosion.ai/demos/matcher中使用正则表达式来演示实时演示,但从v2.1开始,正则表达式就在spaCy matcher中

相关问题 更多 >

    热门问题