Как эффективно применить «пространственную» модель для кодирования всего кадра данных «Pandas»?Python

Программы на Python
Anonymous
Как эффективно применить «пространственную» модель для кодирования всего кадра данных «Pandas»?

Сообщение Anonymous »

Я пытаюсь реализовать семантический поиск, при котором мне нужно сопоставить строку запроса с корпусом, присутствующим в кадре данных pandas. Я пытаюсь использовать функцию spacy и ее сходство для вычисления сходства между двумя элементами текста. Чтобы передать его в функцию сходства, сначала мне нужно закодировать весь кадр данных с помощью модели (здесь я использую предварительно обученный конвейер en_core_web_md для получения векторов).
Как мне эффективно работать с несколькими большими кадрами данных? В настоящее время я просто использую функцию pandas map, чтобы применить модель к каждому элементу в кадре данных.

Код: Выделить всё

import spacy
import pandas as pd
import nltk

nltk.download('words')

from nltk.corpus import words

def main():
query_string = "Eat Apple"

# Generate a sample corpus using words from nltk
data = [words.words()[:1000] for _ in range(5)]

df = pd.DataFrame(data).T

compute_semantic_match_score(df, query_string)

def compute_semantic_match_score(df, query):
model = spacy.load("en_core_web_md")

data_embeddings = df.map(model)
query_embedding = model(query)
match_scores = data_embeddings.map(query_embedding.similarity)
print(match_scores)

if __name__=="__main__":
main()
Здесь я использую образец данных, сгенерированный из корпуса nltk, для минимально воспроизводимого примера.
Однако в ограниченной вычислительной среде там, где это будет развернуто, для выполнения потребуется значительное время. Есть ли более эффективный способ применить модель ко всему фрейму данных?
Опорные фреймы данных меняются нечасто, поэтому я могу рассмотреть возможность предварительного вычисления значений данных и сохранения их на диске. Однако я бы предпочел, если это возможно, выполнить обработку вживую.
Любая помощь приветствуется. Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/786 ... -dataframe

Вернуться в «Python»