2

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

4

1 回答 1

2

事实证明,这在大约一个月前被报告为一个错误: https ://github.com/explosion/spaCy/issues/736

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

于 2017-02-14T21:07:05.970 回答