【发布时间】:2021-06-03 18:52:44
【问题描述】:
我正在尝试实现自定义标记化来分离 这样的词 '6 英寸长','6 英尺','3 米高'
所以我将自定义标记器设置如下。
from spacy.symbols import ORTH,POS
# Add special case rule
special_case = [{'pos': "NUM"}, {'F': "-"}, {'pos': "NOUN"},{'F': "-",'op':'?'},{'pos': "ADJ",'op':'?'}]
# special_case = [{POS: "NUM"}, {ORTH: "-"}, {POS: "NOUN"},{ORTH: "-"},{POS: "ADJ"}]
nlp.tokenizer.add_special_case("dashed", special_case)
# Check new tokenization
print([w.text for w in nlp("6-inch-long")]) # ['gim', 'me', 'that']
它返回错误消息说
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-987-f37f530be1e3> in <module>
6 special_case = [{'pos': "NUM"}, {'F': "-"}, {'pos': "NOUN"},{'F': "-",'op':'?'},{'pos': "ADJ",'op':'?'}]
7 # special_case = [{POS: "NUM"}, {ORTH: "-"}, {POS: "NOUN"},{ORTH: "-"},{POS: "ADJ"}]
----> 8 nlp.tokenizer.add_special_case("dashed", special_case)
9
10 # Check new tokenization
tokenizer.pyx in spacy.tokenizer.Tokenizer.add_special_case()
vocab.pyx in spacy.vocab.Vocab.make_fused_token()
KeyError: 65
我用谷歌搜索了这个问题,有人说如果我替换它就会解决 ORTH=> 'F', POS=>'pos' 但还是不行,我也找不到 为自定义标记化放置“可选”参数的方式。 我需要可选标记化参数的原因是 我需要标记“6 英寸长”和“6 英尺”。 这意味着第四和第五个元素必须保持为“可选”。
我该如何解决这个问题?
谢谢你。
【问题讨论】: