Как получить список уникальных токенов в spaCy?

#python #spacy

#python #spacy

Вопрос:

Есть ли простой способ составить список уникальных токенов spacy?

Например, я могу получить список токенов word следующим образом.

 words = [w for w in list(doc) if w.is_alpha]
  

И «слова» могут состоять из нескольких токенов одного и того же текста. (например, я, есть, что, я, есть)
Есть ли способ сделать так, чтобы «слова» содержали только уникальные токены текста? (например, я, есть, что)

Я знаю set() , что создает уникальный список, но я не думаю, что он работает для токенов, потому что его текстовые данные существуют внутри. И я не пытаюсь составить список уникальных строковых текстов, а список уникальных токенов spacy.

Комментарии:

1. Что вы подразумеваете под «уникальным токеном», если не уникальные строки? Каждый токен spaCy уникален, потому что у него есть свой индекс в документе. Кроме того, не используйте list(doc) , это не делает ничего полезного, просто используйте doc .

Ответ №1:

Поэтому вам, вероятно, нужно объяснить, как вы хотите использовать этот список, чтобы сделать что-то полезное, но вот один из способов получить только первый токен spaCy с заданным строковым представлением.

 out = []
seen = set()
for word in doc:
    if word.text not in seen:
        out.append(word)
    seen.add(word.text)
# now out has "unique" tokens