Spacy, похоже, не в состоянии правильно токенизировать выражения am/pm, где число и часть am/pm не разделены пробелом.Как получить Spacy для корректного выражения токена am/pm?
Пример: «Что-то произошло в 9 утра» производит неожиданный маркер набор: Список объектов Token: [Что-то, бывало, на, LIKE_URL, я]
В то время как «Что-то случилось в 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]
Я заметил, что если углубиться в объект маркеров, тем «Орт» представительство токен - это 9. Аналогично, если я попробую «8am», токен читает «IS_UPPER», а «ортовое» представление токена равно 8.
В частности, это проблема для меня, потому что мне нужно отслеживать интервалы токенов по более широкий контекст и токен, который отображается как «8» в тексте, но «IS_UPPER» в форме токена заставляет мои промежутки отключать на 7. (IE - фактический индекс уровня документа (token.idx) следующего токена выкл. 7)
Как обрабатывать документ с помощью spacy, который содержит выражения am/pm, которые иногда обозначаются в формате, описанном выше, и извлекать точные интервалы токенов?
Я использую Python 2.7.12 с Spacy 1.4.0