Я пытаюсь найти сходство слов между списком из 5 слов и списком из 3500 слов.
Проблема, с которой я сталкиваюсь:
Список из 5 слов, которые у меня есть, как показано ниже
List_five =['cloud','data','machine learning','virtual server','python']
В списке 3500 слов есть такие слова, как
List_threek =['cloud computing', 'docker installation', 'virtual server'.....]
Модели Spacy через свой объект nlp, похоже, разбивают токены во втором списке на облачные, вычислительные, докетные и инсталляционные.
Это, в свою очередь, приводит к тому, что похожие слова появляются неточно, например, когда я запускаю следующий код
tokens = " ".join(List_five)
doc = nlp(tokens)
top5 = " ".join(List_threek)
doc2 = nlp(top5)
similar_words = []
for token1 in doc:
list_to_sort = []
for token2 in doc2:
#print(token1, token2)
list_to_sort.append((token1.text, token2.text, token1.similarity(token2)))
Я получаю результаты вроде (облако, облако), пока ожидаю (облако, облачные вычисления). Похоже, слово «облачные вычисления» разбито на два отдельных токена.
Есть ли обходные пути? Любая помощь приветствуется.
Я бы хотел исключение, когда контекстно связанные слова, такие как «облачные вычисления», не разбиваются на две части, такие как «облако», «вычисления», но сохраняются как «облачные вычисления»