+1 Daumen
412 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 2,9 k

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community