空间正则表达式"SyntaxError: invalid syntax"



大家好,我在space中执行此代码以匹配Regex,但我得到一个错误:

import spacy
from spacy.matcher import Matcher
nlp = spacy.load("en_core_web_md")
doc1 = nlp("Hello hello hello, how are you?")
doc2 = nlp("Hello, how are you?")
doc3 = nlp("How are you?")
pattern = [{"LOWER": {"IN": ["hello", "hi", "hallo"]},"OP": "*",{"IS_PUNCT": True}}]
matcher.add("greetings",  [pattern])
for mid, start, end in matcher(doc1):
print(start, end, doc1[start:end])

错误是

pattern = [{"LOWER": {"IN": ["hello", "hi", "hallo"]},"OP": "*",{"IS_PUNCT": True}}]
            ^
SyntaxError: invalid syntax

我正在遵循一本名为《精通空间》的书,我从书中复制粘贴了代码,但我检查了不包含任何特殊字符。

添加到Matcher的模式由一个字典列表组成。

(从文档)。你的代码,写得更清晰:

pattern = [
{
"LOWER": {"IN": ["hello", "hi", "hallo"]},
"OP": "*",
{"IS_PUNCT": True}
}
]

第一个字典有三个条目,但是第三个条目是错误的:字典的每个条目应该由key: value组成,但是您只有一个条目,这不符合字典语法。

在这些行中,

每个字典描述一个标记及其属性。

["hello", "hi", "hallo"]中小写的东西永远不能是标点符号。你似乎想要匹配像"Hi Hi Hello!"这样的东西,两个标记,其中第一个允许重复;这将与诸如

之类的内容匹配。
pattern = [
{
"LOWER": {"IN": ["hello", "hi", "hallo"]},
"OP": "*",
},
{ "IS_PUNCT": True }
]

相关内容

最新更新