Ich habe einen Datenrahmen mit einer Spalte mit Profiltypen, die folgendermaßen aussieht:
0 Android Java
1 Software Development Developer
2 Full-stack Developer
3 JavaScript Frontend Design
4 Android iOS JavaScript
5 Ruby JavaScript PHP
Ich habe NLP verwendet, um ähnliche Profile unscharf abzugleichen, wodurch der folgende ähnliche Datenrahmen zurückgegeben wurde:
left_side right_side similarity
7 JavaScript Frontend Design Design JavaScript Frontend 0.849943
8 JavaScript Frontend Design Frontend Design JavaScript 0.814599
9 JavaScript Frontend Design JavaScript Frontend 0.808010
10 JavaScript Frontend Design Frontend JavaScript Design 0.802881
12 Android iOS JavaScript Android iOS Java 0.925126
15 Machine Learning Engineer Machine Learning Developer 0.839165
21 Android Developer Developer Android Developer 0.872646
25 Design Marketing Testing Design Marketing 0.817195
28 Quality Assurance Quality Assurance Developer 0.948010
Dies hat zwar geholfen und mich von 478 auf 461 gebracht. Ich möchte mich jedoch auf folgende Profile konzentrieren:
Das einzige Tool, das ich gesehen habe, um dieses Problem anzugehen, ist difflib? Meine Frage ist, welche anderen Techniken verfügbar wären, um diese Profile, die aus denselben Wörtern bestehen, aber nicht in der richtigen Reihenfolge sind, zu einer Standardzeichenfolge zu standardisieren. Die gewünschte Ausgabe wäre also, eine Zeichenfolge mit "Design", "Frontend" und "JavaScript" durch "Design Frontend JavaScript" zu ersetzen.
Im Moment füge ich meinen ursprünglichen Datenrahmen mit dem Ähnlichkeitsdatenrahmen zusammen, um alle Vorkommen von Profilzeichenfolgen auf der rechten Seite durch die linke Seite zu ersetzen. Dies bedeutet jedoch, dass ich die rechte Seite unten ("Java Python Data Science") durch die ersetze left_side unten ("JavaScript Python Data Science").
Ich habe Folgendes geschrieben, um alle Wörter zu ersetzen, die sowohl in der Spalte words_to_keep als auch in der Spalte clean_talentpool ['profile'] vorkommen, aber dies scheint nicht zu funktionieren? Würde jemand freundlich darauf hinweisen, was ich nicht sehe? Ich würde es wirklich schätzen!
def standardize_word_order(row):
words_to_keep = [
"javascript frontend design",
"android ios javascript",
"android developer developer",
"android developer",
"quality assurance",
"quality assurance engineer",
"architecture developer",
"big data architecture developer",
"data architecture developer",
"software architecture developer",
"javascript python data science",
"frontend php javascript",
"javascript android ios",
"frontend design javascript",
"java python data science",
"javascript frontend android",
".net javascript frontend",
]
for word in words_to_keep:
if (sorted(word.replace(" ", ""))) == sorted(
row.replace(" ", "")
) and word != row:
row.replace(row, word)
return row
clean_talentpool["profile"] = clean_talentpool["profile"].apply(
lambda x: standardize_word_order(x)
)
Alles anzeigen
_______________________
Pursuing data science online course.