Python 如何匹配同一令牌中的数字和文本-空间匹配器?
我有下面的句子,我想从中提取出“12am”Python 如何匹配同一令牌中的数字和文本-空间匹配器?,python,nlp,spacy,Python,Nlp,Spacy,我有下面的句子,我想从中提取出“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" }], [{
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]
我需要帮助来创建匹配模式:
谢谢你的建议。谢谢无需使用spaCy,您可以使用简单的正则表达式。但是,如果您想使用spaCy,我将在下面介绍如何使用spaCy matcher regex功能 使用Regex 模式:
[0-9]+[,.]?[0-9]+[]?[A-Za-z]+
说明:查找1+字符([0-9]+)的任何重复数字。还有一个可选的点、逗号([,.])和其他字符([0-9]+)。然后,有一个可选的空格([]),后跟大写或小写字符([A-Za-z]+)
如果你是这样的话,你可以修改它以排除空白
下面是一个活生生的例子:
在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将分成两个标记。这就是为什么模式的正则表达式不包含空格
目前无法在中使用REGEX演示实时演示,但从v2.1开始,REGEX就在spaCy matcher中。无需使用spaCy,您可以使用简单的REGEX。但是,如果您想使用spaCy,我将在下面介绍如何使用spaCy matcher regex功能 使用Regex 模式:
[0-9]+[,.]?[0-9]+[]?[A-Za-z]+
说明:查找1+字符([0-9]+)的任何重复数字。还有一个可选的点、逗号([,.])和其他字符([0-9]+)。然后,有一个可选的空格([]),后跟大写或小写字符([A-Za-z]+)
如果你是这样的话,你可以修改它以排除空白
下面是一个活生生的例子:
在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将分成两个标记。这就是为什么模式的正则表达式不包含空格
目前无法在中使用REGEX演示实时演示,但从v2.1开始,REGEX就在spaCy matcher中。您只需要时间吗?不,这只是一个示例。我正在寻找的模式是识别一个数字,后跟两个不带空格的字符。你只需要时间吗?不,这只是一个例子。我正在寻找的模式是识别一个数字,后跟两个不带空格的字符。例如12am或100CR或20cm