Spacy似乎无法正确标记am / pm表达式,其中数字和am / pm部分没有用空格分隔。
示例:"有些事情发生在上午9点和#34;产生意外的令牌集: 令牌对象列表:[Something,happen,at,LIKE_URL,am]
虽然"有些事情发生在上午9点"工作得很好: 令牌对象列表:[Something,happen,at,9,am]
重现:
>>> 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.同样,如果我尝试8 am',则令牌读取' IS_UPPER'和'正统'令牌的表示是8.
特别是这对我来说是个问题,因为我需要跟踪更广泛的上下文中的令牌跨度,以及显示为" 8"在文中但是" IS_UPPER"以令牌形式导致我的跨度被关闭7.(IE下一个令牌的实际文档级索引(token.idx)被7)关闭
如何使用包含am / pm表达式的spacy处理文档,有时以上述格式表示,并检索准确的令牌跨度?
我使用Python 2.7.12和Spacy 1.4.0
答案 0 :(得分:2)
事实证明,这是一个月前的一个错误: https://github.com/explosion/spaCy/issues/736
升级到Spacy 1.6.0解决了这个问题。