Если вы будете двигаться вперед с помощью spaCy, я не буду пытаться распознавать числа в NER, поскольку они уже распознаются в дереве зависимостей парсера как QUANTITY
.
>>> import spacy
>>> text = "We have a towing capacity of 5,000 lbs"
>>> nlp = spacy.load('en_core_web_lg')
>>> doc = nlp(text)
doc.print_tree()
<stdin>:1: DeprecationWarning: Positional arguments to Doc.merge are deprecated. Instead, use the keyword arguments, for example tag=, lemma= or ent_type=.
[{'word': 'have', 'lemma': 'have', 'NE': '', ...{'word': 'of', ... 'modifiers': [{'word': '5,000 lbs', 'lemma': '5,000 lbs', 'NE': 'QUANTITY', 'POS_fine': 'NNS', 'POS_coarse': 'NOUN', 'arc': 'pobj', 'modifiers': []}]}]}]}]
Вы можете обучить *Конвейер 1005 * для выбора новых меток, таких как PRODUCT
, хотя я настоятельно рекомендую прочитать о проблеме катастрофическое забвение , при которой модель "забудет" старые метки, как вы оттачивали на новыхиз них.Я лично столкнулся с этим с коллегой, когда мы научили его распознавать COMPANY
как ярлык.
Я мог бы вместо того, чтобы научить NER распознавать каждую функцию, я бы, вероятно, обучил еераспознавать FEATURE
как сущность, а затем передавать ей такие вещи, как «Полный привод» или «Внедорожный подвес», таким образом, вы можете объединять все FEATURE
из фрагмента текста, а не обучать для каждогоодин.Конечно, это зависит от конечной игры, чего вы хотите от НЛП.Единственная причина, по которой я бы предложил, состоит в том, что я представляю, что число возможных вариантов на транспортном средстве будет расти и расти (например, вы бы включили радиолокационный круиз как функцию в свой идеальный выход?) И иметь универсальную волюсделать вещи легче.Опять же, это зависит от вашей конечной цели здесь