Набор данных gigaword - это огромный корпус, используемый для обучения абстрактных моделей реферирования. Он содержит такие резюме:
spain 's colonial posts #.## billion euro loss
taiwan shares close down #.## percent
Я хочу обработать эти сводки с помощью spacy и получить правильный тег pos для каждого токена. Проблема в том, что все числа в наборе данных были заменены знаками #, которые не классифицируются как числа (NUM), а как другие теги.
>>> import spacy
>>> from spacy.tokens import Doc
>>> nlp = spacy.load("en_core_web_sm")
>>> nlp.tokenizer = lambda raw: Doc(nlp.vocab, words=raw.split(' '))
>>> text = "spain 's colonial posts #.## billion euro loss"
>>> doc = nlp(text)
>>> [(token.text, token.pos_) for token in doc]
[('spain', 'PROPN'), ("'s", 'PART'), ('colonial', 'ADJ'), ('posts', 'NOUN'), ('#.##', 'PROPN'), ('billion', 'NUM'), ('euro', 'PROPN'), ('loss', 'NOUN')]
Есть ли способ настроить теггер POS так, чтобы он классифицировал все токены, которые состоят только из # -знака и точек, как числа?
Я знаю, что вы заменяете просторный POS-теггер своим собственным или настраиваете его для своего домена с дополнительными данными, но у меня нет тегированных обучающих данных, где все числа заменены на #, и я хотел бы как можно меньше менять теггер . Я бы предпочел иметь регулярное выражение или фиксированный список токенов, которые всегда распознаются как числа.
#
s: я исправил это (я забыл0
). Кстати: спасибо - person Walter Tross   schedule 17.02.2020