+1 Daumen
417 Aufrufe

Ich habe eine Funktion, die ein Array und einen Datenrahmen als Eingabe verwendet. Ich fuhre Ahnlichkeitsberechnungen zwischen den Elementen in dieser Tabelle und dene im Datenrahmen durch. Ich mochte die Ergebnisse in Spalten fur jedes der Elemente im Datenrahmen speichern.

   def compute_similarity(references, target):

      # I want to create as many rows as there are references and fill them with the results
      # arccos based text similarity (Yang et al. 2019; Cer et al. 2019)
      for row in target.iterrows():
          for reference in references:
              sim = 1 - np.arccos(
              result = sklearn.metrics.pairwise.cosine_similarity(row,
                                                                  reference))/np.pi
          # place the result in the column "reference"

Zum Beispiel mit references:

   array(['Agriculture, farming and environment',
        'Accountancy], dtype=object)

Y der Datenrahmen Target:

    0                                      Chef de projet
  1                                            ASSUREUR
  2                                FONCTIONNAIRE D'ÉTAT
  3                                      cadre supĂ©rieur
  4                                        fonctionnaire
  5                                        CDB Retraite
  6                                          professeur
  7                                      Chef de projet
  8                                          Ù…ŰŻÙŠŰ±  ŰŽŰ±ÙƒŰ©

Ich möchte:

     new_professionactuelle Agriculture, farming and environment Accountancy, banking and finance
  0 Chef de projet         2.205516                             -0.989579
  1 ASSUREUR             -0.982828                             0.826499
  2 FONCTIONNAIRE D'ÉTAT -0.163224                             0.206288
  3 cadre supĂ©rieur     -0.272837                             1.406747
  4 fonctionnaire         0.519358                             -0.922361
Avatar von

1 Antwort

0 Daumen

Antwort mit KI erzeugt

Wie kann ich einen Datenrahmen aus einer Tabelle erstellen?

Zur Lösung dieser Aufgabe betrachten wir die Verwendung der Python-Bibliotheken NumPy und Pandas, insbesondere fĂŒr die Berechnung der KosinusĂ€hnlichkeit und die Strukturierung der Ergebnisse in einem Datenrahmen (DataFrame). Zu beachten ist, dass der vorhandene Code pseudocode-artig und unvollstĂ€ndig ist; wir konzentrieren uns hier auf die ErgĂ€nzung und Korrektur.

Zuerst ein Überblick ĂŒber den Lösungsansatz:
1. Initialisierung eines Pandas DataFrame, um die Ergebnisse zu speichern.
2. Iteration ĂŒber jede Zeile (jeden Eintrag) im Ziel-Datenrahmen und jede Referenz.
3. Berechnung der KosinusĂ€hnlichkeit fĂŒr jedes Paar aus Referenz und Zeile (Ziel-Datenrahmen Eintrag).
4. Speicherung der Ergebnisse im initialisierten Datenrahmen.

Zu beachten ist, dass die Berechnung der KosinusĂ€hnlichkeit anhand von Textdaten normalerweise die Umwandlung der Texte in Vektoren erfordert, typischerweise durch Techniken wie TF-IDF, Word2Vec oder Ă€hnliche. Die direkte Anwendung von cosine_similarity wie im Pseudocode dargestellt, setzt voraus, dass diese Umwandlung bereits durchgefĂŒhrt wurde.

Hier ist ein vollstÀndiges Beispiel, das den Ansatz illustriert:
python
import pandas as pd
import numpy as np
from sklearn.metrics.pairwise import cosine_similarity

# Definieren der compute_similarity Funktion
def compute_similarity(references, target):
    # Initialisierung eines DataFrames zur Speicherung der Ergebnisse
    results = pd.DataFrame(index=target.index, columns=references)
    
    # Iteration ĂŒber den Ziel-Datenrahmen
    for index, row in target.iterrows():
        # Iteration ĂŒber alle Referenzen
        for reference in references:
            # Annahme: `reference_vector` und `row_vector` sind bereits in Vektorform
            # Hier mĂŒsste eine Umwandlung von `row` und `reference` in entsprechende Vektoren stattfinden
            sim = cosine_similarity([reference_vector], [row_vector])
            # Speichern des Ergebnisses in der Ergebnis-Matrix
            results.at[index, reference] = sim[0][0]
    
    return results

# Beispiel Daten
references = np.array(['Agriculture, farming and environment', 'Accountancy'])
target_data = {
    'profession': ['Chef de projet', 'ASSUREUR', 'FONCTIONNAIRE D\'ÉTAT', 'cadre supĂ©rieur', 'fonctionnaire', 'CDB Retraite', 'professeur', 'Chef de projet', 'Ù…ŰŻÙŠŰ± ŰŽŰ±ÙƒŰ©']
}
target_df = pd.DataFrame(target_data)

# Annahme: conversion_ nötig, um 'references' und 'target_df' in vektorisierte Form fĂŒr die KosinusĂ€hnlichkeitsberechnung zu ĂŒberfĂŒhren
# Beispiel der Anwendung (Pseudocode, da die Umwandlung zu Vektoren kontextabhÀngig ist und hier nicht spezifiziert wurde)
# results_df = compute_similarity(references, target_df)


Die Funktion compute_similarity nimmt als Eingaben das references Array und den target DataFrame. Innerhalb der Funktion wird ein Ergebnis-DataFrame initialisiert, der fĂŒr jede Kombination aus Eintrag in target und references die berechnete KosinusĂ€hnlichkeit enthĂ€lt. Bitte beachte, dass die Konversion von reference und row zu Vektoren (hier implizit mit reference_vector und row_vector angedeutet) entscheidend ist und auf Basis des gewĂ€hlten Textvektorisierungsverfahrens implementiert werden muss.
Avatar von 4,6 k

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community