Как добавить исключение токенайзера для пробелов в языковых моделях Spacy - PullRequest
0 голосов
/ 12 декабря 2018

Ниже приведен мой код, где я беру пользовательский ввод.

import en_core_web_sm
nlp = en_core_web_sm.load()
text = input("please enter your text or words here")
doc = nlp(text)
print([t.text for t in doc])

Если пользователь вводит текст как Deep Learning, текст разбивается на

('Deep', 'Learning')

Как добавить исключение пробела в nlp?так, чтобы вывод был как ниже

(Deep Learning)

1 Ответ

0 голосов
/ 12 декабря 2018

Необработанный текст из пользовательского ввода разбивается на пробельные символы, аналогично text.split ('').Затем токенизатор обрабатывает текст слева направо.Для каждой подстроки выполняется две проверки:

  1. Соответствует ли подстрока правилу исключений токенизатора?Например, «не» не содержит пробелов, но должно быть разделено на два токена, «делать» и «не делать», в то время как «Великобритания» всегда должен оставаться одним токеном.

  2. Можно ли разделить префикс, суффикс или инфикс?Например, знаки препинания, такие как запятые, точки, дефисы или кавычки.

Так что, если ваш пользователь введет: Looking for Deep Learning experts

Он будет размечен как: ('Looking', 'for, 'Deep', 'Learning', 'experts')

Spacy не знает, что Deep Learning - это отдельная сущность.Если вы хотите, чтобы spaCy распознал Deep Learning как единое целое, вам нужно научить этому.Если у вас есть предопределенный список слов, которые вы бы хотели, чтобы spaCy распознал как единый объект, вы можете использовать PhraseMatcher для этого.

Вы можете проверить детали использования PhraseMatcher здесь


ОБНОВЛЕНИЕ - Ответ на комментарий ОП ниже

Я не думаю, что есть какой-то способ, которым spaCy может узнать о сущности, которую вы ищете, не обучаясь в контексте вашего домена или не предоставляя предопределенное подмножество сущностей.

Единственное решение, которое я могу придумать, - это использовать инструмент аннотирования для обучения spaCy - возьмите подмножество ваших пользовательских вводов и аннотируйте их вручную (вы можете использовать этот вундеркинд создателями spaCy или Брат - это бесплатно) - Используйте аннотации для обучения новой или существующей модели NER.Подробную информацию об обучении модели можно найти [здесь] ( здесь

Учитывая текст, такой как «Поиск экспертов по глубокому обучению», вы можете пометить «Глубокое обучение» с помощью такой надписиFIELD ". Затем обучите новый тип сущности 'FIELD'.

Как только вы обучите модель в контексте, spaCy научится обнаруживать интересующие вас сущности.

...