У меня есть функция f
, которая определена следующим образом:
def f(doc):
return filter(lambda ent: ..., doc.ents)
doc
является объектом документа Spacy, а doc.ents
возвращает объект генератора.Также есть doc.noun_chunks
, который возвращает объект генератора.Однако происходит нечто странное:
>>> a = list(f(doc))
[Apple, Banana]
>>> b = list(doc.noun_chunks)
[Banana, Apple]
>>> a[0] == b[1]
True
>>> a[1] == b[0]
True
>>> set(a) == set(b)
False
>>> list(set(a))[0] == list(set(b))[1]
True
>>> list(set(a))[1] == list(set(b))[0]
True
>>> set(list(set(a))) == set(list(set(b)))
False
Почему здесь не работает равенство множеств?!
PS Я пишу приложение для клиента, использующего Spacy, поэтому, к сожалению, не могу вставитьполный код, а также фальшивые имена «f», «яблоко» и «банан» ... но это не должно иметь значения.