Работа с объектами span. [spaCy, питон] - PullRequest
0 голосов
/ 23 апреля 2020

Я не уверен, что это действительно глупый вопрос, но здесь идет. *.

Почему это? Объекты в обоих списках сущностей одинаковы. И все же предмет из одного списка не входит в другой. Это очень странно. Может кто-нибудь объяснить, почему это так для меня?

1 Ответ

1 голос
/ 23 апреля 2020

Это связано с тем, как ents представлены в spaCy. Это классы с заданными реализациями c, поэтому даже entities_2[0] == entities_1[0] будет иметь значение False. Судя по всему, класс Span не имеет реализации __eq__, что, по крайней мере, на первый взгляд, является простой причиной.

Если вы распечатаете значение of entity_2 [0] это даст вам US, но это просто потому, что в классе span есть метод __repr__, реализованный в том же файле. Если вы хотите выполнить булево сравнение, одним из способов было бы использовать свойство text Span и выполнить что-то вроде:

entities_1[0].text in [e.text for e in entities_2]

edit:

Как указал @abb out, Span реализует __richcmp__, однако это применимо к тому же экземпляру Span, так как он проверяет положение самого токена.

...