带有日文字符的 spacy 正则表达式

spacy regex with japanese characters

我需要日语 spacy 中正则表达式的帮助。 路上结冰,所以要小心。 我需要找到匹配的每个单词,直到日语中的字符“を”,所以基本上我需要“小心,因为路上结冰了”。我试过这个代码:

nlp =spacy.load("ja_core_news_sm")
matcher = Matcher(nlp.vocable)
pattern = [{"TEXT": {"REGEX": "^.*?[を]"}}]
matcher.add("mypattern", [pattern])
​doc = nlp(Verbwithnoun)
matches = matcher(doc)

for match_id, start, end in matches:
string_id = nlp.vocab.strings[match_id] 
print(doc[start:end)

但它什么也没给我打印出来,但是当我在不同的 python 正则表达式测试站点(例如 Regex101 or Pythex 上尝试这种模式“^.*?[o]”时,它运行得很好,它 returns 我是正确的句子。但在 spacy 中它不起作用。它不打印任何内容。有人可以帮我吗?

正如 Wiktor 指出的那样,Matcher 匹配的是标记,而不是整个句子。假设您只想匹配对象标记 而不是像 ををがけ 之类的词,或者您可以只遍历标记。

def until_wo(doc):
    for tok in doc:
        if tok.text == 'を':
            return doc[0:tok.i]

text = "..."
doc = nlp(text)
print(until_wo(doc))