我使用的是en\u core\u web\u lg,当标记器不能正确分割日期时,我有这样的情况:
self._nlp = spacy.load("en_core_web_lg")
self._nlp.tokenizer = spacy.tokenizer.Tokenizer(self._nlp.vocab)
text='hi good thank you i am chris july 6 1990'
代币包括:
[('hi', 'hi', 'INTJ', 'UH', 'advmod', 'xx', True, False),
('good', 'good', 'ADJ', 'JJ', 'ROOT', 'xxxx', True, False),
('thank', 'thank', 'VERB', 'VBP', 'ROOT', 'xxxx', True, False),
('you', '-PRON-', 'PRON', 'PRP', 'dobj', 'xxx', True, True),
('I', '-PRON-', 'PRON', 'PRP', 'nsubj', 'X', True, True),
('am', 'be', 'AUX', 'VBP', 'ROOT', 'xx', True, True),
('Chris', 'Chris', 'PROPN', 'NNP', 'compound', 'Xxxx', True, False),
('July', 'July', 'PROPN', 'NNP', 'attr', 'Xxxx', True, False),
('6', '6', 'NUM', 'CD', 'nummod', 'd', False, False),
('1982', '1990', 'NUM', 'CD', 'nummod', 'dddd', False, False)]
有没有一种方法可以让标记器执行以下操作:
[('hi', 'hi', 'INTJ', 'UH', 'advmod', 'xx', True, False),
('good', 'good', 'ADJ', 'JJ', 'ROOT', 'xxxx', True, False),
('thank', 'thank', 'VERB', 'VBP', 'ROOT', 'xxxx', True, False),
('you', '-PRON-', 'PRON', 'PRP', 'dobj', 'xxx', True, True),
('I', '-PRON-', 'PRON', 'PRP', 'nsubj', 'X', True, True),
('am', 'be', 'AUX', 'VBP', 'ROOT', 'xx', True, True),
('Chris', 'Chris', 'PROPN', 'NNP', 'compound', 'Xxxx', True, False),
('July 6 1982', 'July 6 1982', '?????', '?????', '?????', '?????', True, False)]
请忽略????因为我不确定结果会是什么。
或者,有没有一种方法(不训练模型)让ner正确识别日期?
谢谢,
近红外
1条答案
按热度按时间voj3qocg1#
该字符串已经被ner组件标记为日期,即使在小模型中也是如此。
输出:
如果您想将实体(如日期)合并到单个标记中,那么有一个管道函数,这样您就可以用一行代码来完成。