Отображение атрибутов spaCy int в атрибуты string (unicode) - PullRequest
0 голосов
/ 01 апреля 2019

Для многих свойств токенов, таких как часть речевых и зависимых отношений, spaCy хранит как целочисленные, так и строковые атрибуты. Например, для POS есть атрибуты pos_ (строка типа «PUNCT» и «ADJ») и pos (целочисленные значения). Полный список атрибутов токена здесь .

Есть ли удобный способ для прямого преобразования между двумя представлениями? Конкретно, если у меня есть целочисленное значение POS, есть ли способ узнать, что такое соответствующая строка?

Я столкнулся с этой проблемой при использовании API count_by (см. здесь ), который считает частоты атрибутов и возвращает словарь целочисленного атрибута и его подсчет. Пример:

>>> doc = nlp("I like natural language processing.")
>>> doc.count_by(spacy.attrs.POS)
{96: 1, 99: 1, 83: 1, 91: 2, 94: 1}

Можно ли получить соответствующую строку для каждого ключа POS?

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

1 Ответ

2 голосов
/ 01 апреля 2019

Да, это справочная таблица на doc.vocab.strings.Вы можете искать либо строковое значение, либо его хеш, например, doc.vocab.strings["VERB"] или doc.vocab.strings[VERB].Если у вас есть строка и вам нужен хеш, используйте функцию spacy.strings.get_string_id().Хэширование строки не имеет состояния, поэтому вам не нужно StringStore.

Встроенные символы также могут быть разыменованы с помощью глобальных переменных spacy.attrs.IDS и spacy.symbols.IDS.

...