如何让Spacy正确地标记am / pm表达式?

时间:2017-02-14 00:13:45

标签: python spacy

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

1 个答案:

答案 0 :(得分:2)

事实证明,这是一个月前的一个错误: https://github.com/explosion/spaCy/issues/736

升级到Spacy 1.6.0解决了这个问题。