Python 如何使标记器识别日期

Python 如何使标记器识别日期,python,spacy,Python,Spacy,我使用的是en_core_web_lg,当标记器不能正确分割日期时,我有这样的情况: self._nlp = spacy.load("en_core_web_lg") self._nlp.tokenizer = spacy.tokenizer.Tokenizer(self._nlp.vocab) text='嗨,很好,谢谢你,我是克里斯,1990年7月6日' 代币是: [('hi', 'hi', 'INTJ', 'UH', 'advmod', 'xx', Tr

我使用的是en_core_web_lg,当标记器不能正确分割日期时,我有这样的情况:

self._nlp = spacy.load("en_core_web_lg")       
self._nlp.tokenizer = spacy.tokenizer.Tokenizer(self._nlp.vocab)
text='嗨,很好,谢谢你,我是克里斯,1990年7月6日'

代币是:

[('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正确识别日期

谢谢


Nir

即使在小型模型中,NER组件也已将该字符串标记为日期

import spacy

nlp = spacy.load("en_core_web_sm")

text = "hi good thank you I am Chris July 6 1990"

for ent in nlp(text).ents:
    print(ent.label_, ent, sep="\t")
输出:

PERSON  Chris
DATE    July 6 1990

如果您想将实体(如日期)合并到单个标记中,那么您可以用一行来完成此操作。

嗨,问题是NER不存在,例如,在本例中:“我是Anna Jun 12 1993”,它不会重新组织日期,这就是为什么我没有尝试NEROh就写了。“Anna Jun”看起来像一个名字,所以这是一个错误,我几乎可以看到一个人类在犯这个错误,这也就不足为奇了。。。如果你所有的字符串末尾都有日期,也许你应该取下最后三个标记并分别处理它们?谢谢,但由于这是聊天的真实示例,我无法真正控制它,我将尝试“合并实体”选项。我可能会考虑使用EntityRuler组件来标记
Jun[一位或两位数字]
将日期作为后处理步骤。