Der folgende Code verwendet spaCy word vectors, um die 20 am ähnlichsten Wörter zu einem bestimmten Wort zu finden, indem zuerst Kosinusähnlichkeit für alle Wörter im Vokabular berechnet wird (mehr als eine Million) und dann diese Liste der ähnlichsten Wörter sortiert wird.Kann ich das Vokabular eines Parsers in SpaCy löschen?
parser = English()
# access known words from the parser's vocabulary
current_word = parser.vocab[word]
# cosine similarity
cosine = lambda v1, v2: dot(v1, v2)/(norm(v1) * norm(v2))
# gather all known words, take only the lowercased versions
allWords = list({w for w in parser.vocab if w.has_vector and w.orth_.islower() and w.lower_ != word})
# sort by similarity
allWords.sort(key=lambda w: cosine(w.vector, current_word.vector))
allWords.reverse()
print("Top 20 most similar words to %s:") % word
for word in allWords[:20]:
print(word.orth_)
Was würde ich gerne wissen, ob es ist ein Weg, Spacy Vokabular nur auf die Worte zu beschränken, die in einer vorgegebenen Liste auftreten, was ich hoffe, würde enorm die Kosten für den Sortiervorgang reduzieren.
Um klar zu sein, würde ich gerne eine Liste von nur ein paar Wörtern oder nur die Wörter in einem gegebenen Text übergeben, und in der Lage sein, schnell zu suchen, welche dieser Wörter in SpaCy's Vektorraum am nächsten sind .
Jede Hilfe an dieser Front geschätzt.