Spacy 似乎无法正确标记数字和 am/pm 部分未用空格分隔的 am/pm 表达式。
示例:“早上 9 点发生了某事”产生了一个意外的令牌集:令牌对象列表:[Something, occurred, at, LIKE_URL, am]
虽然“早上 9 点发生了什么事”工作得很好: 令牌对象列表:[某事,发生在,上午 9 点]
重现:
>>> import spacy
>>> nlp = spacy.load('en')
>>> doc = nlp(u"Something happened at 9am")
>>> tokens = [x for x in doc]
>>> tokens
[Something, happened, at, LIKE_URL, am]
>>> doc2 = nlp("Something happened at 9 am")
>>> tokens2 = [x for x in doc]
>>> tokens2
[Something, happened, at, 9, am]
我注意到,如果您深入到 Token 对象,令牌的“orth”表示是 9。同样,如果我尝试“8am”,则令牌读取“IS_UPPER”并且令牌的“orth”表示是 8 .
特别是这对我来说是个问题,因为我需要在更广泛的上下文中跟踪令牌跨度,并且在文本中显示为“8”但令牌形式为“IS_UPPER”的令牌导致我的跨度偏离 7。( IE 下一个标记的实际文档级索引 (token.idx) 偏离 7)
如何处理包含有时以上述格式表示的 am/pm 表达式的 spacy 文档,并检索准确的令牌跨度?
我正在使用 Python 2.7.12 和 Spacy 1.4.0