大家好,我在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 }
]