Что означают теги части речи и зависимости spaCy?

Вы не можете преобразовать двоичные данные в UTF-8 и обратно. Некоторые двоичные последовательности не являются допустимыми символами UTF-8, а при преобразовании в UTF-8 данные теряются. Это эквивалент того, что некоторые персонажи будут установлены в '?' при конвертации между кодировками.

Вместо этого вы можете использовать кодировку base64 двоичных данных в текст, а затем декодировать base64, чтобы вернуть исходный двоичный файл.

Попробуйте преобразовать это в UTF-8, например: «\ x00? \ xdc \ x80» (это четыре байта: 0, 63, 220, 128).

Стандартный способ - использовать кодировку Base-64 - Как кодировать и декодировать строку base64?

29
задан Mark Amery 29 October 2016 в 12:00
поделиться

4 ответа

В настоящее время разбор и тегирование зависимостей в SpaCy, по-видимому, осуществляются только на уровне слов, а не на уровне фраз (кроме имен существительных) или на уровне предложений. Это означает, что SpaCy может использоваться для идентификации таких вещей, как существительные (NN, NNS), прилагательные (JJ, JJR, JJS) и глаголы (VB, VBD, VBG и т. Д.), Но не прилагательные фразы (ADJP), наречие фраз ( ADVP) или вопросы (SBARQ, SQ).

Для иллюстрации, когда вы используете SpaCy для разбора предложения «Куда идет автобус?», Мы получаем следующее дерево.

Напротив, если вы используете анализатор Стэнфорда, вы получите гораздо более глубоко структурированное синтаксическое дерево.

3
ответ дан rebeccabilbro 29 October 2016 в 12:00
поделиться

Просто краткий совет о том, как получить подробное значение коротких форм. Вы можете использовать метод explain следующим образом:

spacy.explain('pobj')

, который даст вам вывод, например:

'object of preposition'
15
ответ дан Nuhil Mehdy 29 October 2016 в 12:00
поделиться

Официальная документация теперь предоставляет гораздо больше деталей для всех этих аннотаций на https://spacy.io/api/annotation (а список других атрибутов для токенов можно найти на https. : //spacy.io/api/token )

.

Как видно из документации, их теги частей речи (POS) и теги зависимостей имеют как универсальные, так и специфические варианты для разных языков, а функция explain() является очень полезным сочетанием клавиш, чтобы получить лучшее описание значения тега без документация, например

spacy.explain("VBD")

, который дает «глагол, прошедшее время».

2
ответ дан Silveri 29 October 2016 в 12:00
поделиться

Часть речевых токенов

Документы spaCy в настоящее время утверждают:

В тегере части речи используется версия OntoNotes 5 набора тегов Penn Treebank. Мы также сопоставляем теги с более простым набором Google Universal POS Tag.

Точнее, свойство .tag_ предоставляет теги Treebank, а свойство pos_ предоставляет теги на основе Google Universal POS-тегов (хотя spaCy расширяет список).

Документы spaCy, похоже, рекомендуют пользователям, которые просто хотят тупо использовать его результаты, а не обучать свои собственные модели, должны игнорировать атрибут tag_ и использовать только атрибут pos_, заявляя, что tag_ атрибуты ...

в первую очередь предназначены для хороших функций для последующих моделей, в частности синтаксического синтаксического анализатора. Они зависят от языка и древовидного банка.

То есть, если spaCy выпускает улучшенную модель, обученную на новом дереве деревьев , атрибут tag_ может иметь значения, отличные от тех, которые были у него ранее. Это явно делает его бесполезным для пользователей, которым нужен согласованный API при обновлении версий. Однако, поскольку текущие теги являются вариантом Penn Treebank, они, скорее всего, в основном пересекаются с набором, описанным в любой документации POS-тегов Penn Treebank, например: http://web.mit.edu/6.863/www /PennTreebankTags.html

Более полезными тегами pos_ являются

Грубый, менее подробный тег, представляющий класс слов токена

на основе набора универсальных тегов Google POS. Для английского языка список тегов в наборе универсальных тегов POS можно найти здесь, вместе со ссылками на их определения: http://universaldependencies.org/en/pos/index.html

Список выглядит следующим образом:

  • ADJ : прилагательное
  • ADP : сложение
  • ADV : наречие
  • AUX : вспомогательный глагол
  • CONJ : координационное соединение
  • DET : определитель
  • INTJ : междометие
  • NOUN : существительное
  • NUM : цифра
  • PART : частица
  • PRON : местоимение
  • PROPN : собственное существительное
  • PUNCT : пунктуация
  • SCONJ : подчиненное соединение
  • SYM : символ
  • VERB : глагол
  • X : другие [11 129]

Тем не менее, мы можем видеть из модуля частей речи spaCy, что он расширяет эту схему тремя дополнительными константами POS, EOL, NO_TAG и SPACE, которые не является частью набора Universal POS Tag. Из них:

  • Из поиска исходного кода я не думаю, что EOL вообще привыкнет, хотя я не уверен
  • NO_TAG - код ошибки. Если вы попытаетесь разобрать предложение с моделью, которую вы не установили, все Token получат эту POS. Например, у меня не установлена ​​немецкая модель spaCy, и я вижу это на своем локальном компьютере, если пытаюсь ее использовать:

    >>> import spacy
    >>> de_nlp = spacy.load('de')
    >>> document = de_nlp('Ich habe meine Lederhosen verloren')
    >>> document[0]
    Ich
    >>> document[0].pos_
    ''
    >>> document[0].pos
    0
    >>> document[0].pos == spacy.parts_of_speech.NO_TAG
    True
    >>> document[1].pos == spacy.parts_of_speech.NO_TAG
    True
    >>> document[2].pos == spacy.parts_of_speech.NO_TAG
    True
    
  • SPACE используется для любого расстояния помимо единичных нормальных пробелов ASCII (которые не получают свой собственный токен):

    >>> document = en_nlp("This\nsentence\thas      some weird spaces in\n\n\n\n\t\t   it.")
    >>> for token in document:
    ...   print('%r (%s)' % (str(token), token.pos_))
    ... 
    'This' (DET)
    '\n' (SPACE)
    'sentence' (NOUN)
    '\t' (SPACE)
    'has' (VERB)
    '     ' (SPACE)
    'some' (DET)
    'weird' (ADJ)
    'spaces' (NOUN)
    'in' (ADP)
    '\n\n\n\n\t\t   ' (SPACE)
    'it' (PRON)
    '.' (PUNCT)
    

Маркеры зависимостей

Как отмечено в документах, схема тегов зависимости на основе проекта ClearNLP; значения тегов (начиная с версии 3.2.0 ClearNLP, выпущенной в 2015 году, которая остается последней версией и, по-видимому, используется spaCy) можно найти по адресу https://github.com/clir/clearnlp Руководящие указания / блоб / ведущий / мД / характеристики / dependency_labels.md . В этом документе перечислены следующие токены:

  • ACL: модификатор Clausal существительного
  • ACOMP: дополнительное прилагательное
  • ADVCL: модификатор условного выражения
  • ADVMOD: Модификатор наречий
  • AGENT: Агент
  • AMOD: Модификатор прилагательного
  • APPOS: Модификатор аппозиции
  • ATTR: Атрибут
  • AUX: вспомогательный
  • AUXPASS: вспомогательный (пассивный)
  • CASE: маркер регистра
  • CC: координационное соединение
  • CCOMP: дополнение Клауса
  • COMPOUND: модификатор соединения
  • CONJ: соединение
  • CSUBJ: субъект Клауса
  • CSUBJPASS: субъект (пассивный)
  • DATIVE: дательный падеж
  • DEP: неклассифицированный зависимый
  • DET: определитель
  • DOBJ: прямой объект
  • EXPL: исключительный
  • INTJ: междометие
  • MARK: маркер
  • META: мета-модификатор
  • NEG: модификатор отрицания
  • NOUNMOD: модификатор именного
  • NPMOD: существительная фраза как модификатор наречий
  • NSUBJ: Номинальный предмет
  • NSUBJPASS: Номинальный с ubject (пассивный)
  • NUMMOD: модификатор числа
  • OPRD: предикат объекта
  • PARATAXIS: паратаксис
  • PCOMP: дополнить предлога
  • POBJ: объект предлога
  • POSS: модификатор владения
  • PRECONJ: прекорреляционное соединение
  • PREDET : Предопределитель
  • PREP: модификатор предложения
  • PRT: частица
  • PUNCT: пунктуация
  • QUANTMOD: модификатор квантификатор
  • RELCL: модификатор относительного предложения
  • ROOT: корень
  • XCOMP: дополнение дополнения Клауса

Связанный ClearNLP Документация также содержит краткое описание того, что означает каждый из приведенных выше терминов.

В дополнение к вышеприведенной документации, если вы хотите увидеть примеров этих зависимостей в реальных предложениях, вас может заинтересовать работа Джинхо Д. Чоя 2012 года: либо его ] Оптимизация компонентов обработки естественного языка для надежности и масштабируемости или его руководящих принципов для преобразования стилей CLEAR в преобразование зависимостей (которое, кажется, просто подраздел бывшей статьи). Оба перечисляют все метки зависимостей CLEAR, которые существовали в 2012 году, вместе с определениями и примерами предложений. (К сожалению, набор меток зависимостей CLEAR немного изменился с 2012 года, поэтому некоторые из современных меток не перечислены или не приведены в качестве примера в работе Чоя - но он остается полезным ресурсом, хотя и немного устаревшим.)

68
ответ дан Mark Amery 29 October 2016 в 12:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: