Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何匹配同一令牌中的数字和文本-空间匹配器?_Python_Nlp_Spacy - Fatal编程技术网

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

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" }], [{

我有下面的句子,我想从中提取出“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]

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


谢谢你的建议。谢谢

无需使用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