Jo, so mache ichs gerade. Scheint auch eigentlich zu funktionieren, zumindest die öffentlichen Testcases sind alle korrekt. Die versteckten Testcases faile ich leider teilweise noch, entweder irgendwo nen Edge Case übersehen oder was anderes schief gelaufen. Naja, ich such mal. Danke dir!
Ankündigung
Einklappen
Keine Ankündigung bisher.
User helfen User - Programmieren
Einklappen
X
-
Gast -
Guten Tag, ich hab mich schon mal gemeldet mit dem Problem von sehr schlechten Produktdaten und der Idee vom Bereichsleiter, die Möglichkeit des maschinellen Lernen zu nutzen. Das habe ich für mich evaluiert und für keine gute Option gehalten, mangels ungelabelter Daten und einer zu geringen Trainingsmenge.
Deswegen möchte ich meine Bachelorarbeit ( die ich wohl anfang Januar beginnen werde) mit dem Bezug in eine andere Richtung lenken, wobei ich mich da noch nicht festgelegt hab. Von anderen Unternehmen ist mir bekannt, dass ein extremer Arbeitsaufwand in das Thema gesteckt wird, indem Arbeitskräfte stumpf Artikel für Artikel 'einpflegen'. Ich baue mir gerade einen Prototypen, der diesen Prozess durch logische Prozesse beschleunigen soll.
Bisher habe ich mich auf wenige Funktionen beschränkt und möchte nun gerne optimieren und ergänzen.- Einlesen von Beschreibungstexten
- häufigste Wörter in Spalte suchen
- die häufigsten Wörter sind sowas wie: kg, cm, mm, dn, viele Hersteller, Produktbezeichnungen
- Nutzer mehrere Beispielartikel und das häufigste Wort zeigen
- 'CEMFORT Wellplatte P6 2500 x 1095 mm -> Was ist mm?
- Nutzer gibt das Wort + Attribut ein und daraus entsteht eine neue Regel
- 'mm' + 'Maßeinheit'
- Der Nutzer hat deswegen die Möglichkeit zusammenhängende Wörter die aber einzelnt gefunden werden als eine Regel zu speichern
Jetzt geht es für mich gerade darum ein Backlog zu erstellen mit Funktionen, die dem Projekt einen größeren Mehrwert liefern. Folgende Funktionen sind bisher für mich interessant:- verschiedene Fälle in der Form int x int, float x float als art 'Maßeinheitsausprägung' abzudecken
- Beispiele: 2400 x 2600, 2400x2600, 2400x2600x20, 2400 x 2600 x 20, 20.5x50.3x11.3
- Ähnliche Worte erkennung wie im Screenshot Firstklammern == Firstklammer
- Beschreibungstexte1 + 2 irgendwie zu einem zusammenzuführen und dopplungen entfernen
- Eine Funktion die vielleicht eine Art Fortschritt anzeigt bzw. wie viel die Eingabe gebracht hat.
- ...
- ein einfaches frontend für den/die Nutzer
Kommentar
-
Wenns um diene Bachelorarbeit geht.
was ist deine Research Question?
Was ist deine Contribution?
Was ist dein related Work?
Eine KI zu programmieren die Aufgabe X erledigt hat mit einer wissenschaftlichen Arbeit erstmal nichts zu tun.
Ansonsten schau dir mal Textklassifikations Methodiken an.
/Edit: Was ist dein Input und was dein Output sein?
Input: Beschreibungstexte - ok
Output: ? Artikel-ID?
Kommentar
-
Ich versteh leider immernoch nicht wie das genau in dieser Firma abläuft. Anstatt einer normalen Datenbank mit Id + Name + Eigenschaft1 + Eigenschaft 2 .. habt ihr einfach ein Text "Beschreibung" wo man sich den Text ohne Regeln ausdenken muss und fertig?
Einen wissenschaftlichen Ansatz seh ich leider auch nicht. Ein Frontend mit 2-3 Textfeldern + Filter welcher cm/mm als Maßeinheit erkennt ist jetzt nicht sonderlich anspruchsvoll für eine BA in 2020.
Kommentar
-
habe eine allgemeine frage zu einem problem.
es gibt eine oberfläche die von vielen user genutzt wird. bestimmte klicks triggern funktionen, die in die datenbank schreiben oder webservice funktionen von anderen systemen aufrufen. es sieht jetzt so aus als würde es manchmal vorkommen, dass evtl. auf grund von schlechter verbindung, mehrmals auf eine schaltfläche gedrückt wird, wodurch dann die gleiche funktion innerhalb von ein paar sekunden mehrfach aufgerufen wird. das führt dann zu falschen daten.
beispiel: es wird zweimal auf den stornieren-button gedrückt. beim stornieren wird die anzahl der aufträge für diesen tag um 1 reduziert -> auftrag ist storniert, anzahl der aufträge für diesen tag wurden aber -2 gerechnet.
kennt jemand nen "best practice" für so einen fall?
sollte man versuchen jeden button zu disablen, sobald dieser geklickt wurde? hab das eigentlich so noch nirgendwo gesehen.
Kommentar
-
Klingt nach Circuit Breaker? (Random link von google) oder halt wiki: https://en.wikipedia.org/wiki/Circui...design_pattern
Anderer ansatz wäre "Read your own writes": https://docs.oracle.com/cd/E17076_05...ep/C/rywc.htmlYou use software circuit breakers on connections to remote services. These breakers trip when the supplier becomes unresponsive, once tripped the breaker no longer calls the supplier until reset.Zuletzt geändert von Had3s; 12.11.2019, 12:14.
Kommentar
-
Würde einen loading state einführen der on click halt getriggert wird und erst aus geht wenn das loading auch wirklich fertig ist.
Bzw allgemein einen State-Manager einführen wenn noch keiner vorhanden ist.
Dann kann man entscheiden was man damit macht.
Aufträge reduzieren sollte zB nur funktionieren wenn loading = false && loaded = true ist.
würde dann noch bei den Buttons das dementsprechend anzeigen
https://uxmovement.com/buttons/when-...loading-state/
Kommentar
-
Moin, ich möchte gerne von einer Website automatisiert ein paar Infos ziehen. Das ganze über Python mit BeautifulSoup.
Beim Datum funktioniert das allerdings nicht wie gewünscht. komme ich irgendwie an das Datum + Uhrzeit ran?
oberer Screenshot vom Code
unterer von der Website
wäre super cool wenn jemand eine Idee hat.
Kommentar
-
kann sein, dass die Daten per Javascript dynamisch nachgeladen werden. Dann musst du Selenium oder einen anderen Browser-Emulator benutzen.Zitat von Wanted_68464 Beitrag anzeigenMoin, ich möchte gerne von einer Website automatisiert ein paar Infos ziehen. Das ganze über Python mit BeautifulSoup.
Beim Datum funktioniert das allerdings nicht wie gewünscht. komme ich irgendwie an das Datum + Uhrzeit ran?
oberer Screenshot vom Code
unterer von der Website
wäre super cool wenn jemand eine Idee hat.
Gib ansonsten einfach mal die Url dann kann man sich das besser angucken.
Kommentar
-
Zitat von gestalt Beitrag anzeigen
kann sein, dass die Daten per Javascript dynamisch nachgeladen werden. Dann musst du Selenium oder einen anderen Browser-Emulator benutzen.
Gib ansonsten einfach mal die Url dann kann man sich das besser angucken.
Also nach diesem Schema möchte ich die einzelnen Zeilen + deren Inhalte extrahieren. vielleicht hast du ja ein Tipp wie ich da insbesondere aufs Datum/Zeit kommen kann
<table class="table table-striped table-full-width thead">
<tr clas="odd">
<td class="XXX">Kreisliga 2019/2020 im Kreis Kiel: Alle Ergebnisse, die Tabelle und der komplette Spielplan der Kreisliga der Herren aus dem Landesverband Schleswig-Holstein bei FUSSBALL.DEZuletzt geändert von Wanted_68464; 23.02.2020, 13:22.
Kommentar
-
Wenn ich die richtigen Sachen betrachte: Ja, die sind obfuscated und die Infos werden erst von JS generiert. In einer script.js.download, die du mit runterlädst, wird "obfuscation" erwähnt:
Wenn ich nach "Obfuscation Angular" suche, lande ich hier: https://blog.jscrambler.com/how-to-protect-angular-code-against-theft-and-reverse-engineeringdefine("modules/obfuscation/directives/obfuscationdirective",["require","angular"]...
Ich bin kein Frontend-Dev, darum kann ich nur vermuten, dass jscrambler zum Einsatz kommt. Um das genauer zu Überprüfen müsste ich jetzt zuviel Zeit reinstecken, vlt. kann das ja jemand überprüfen, der etwas Frontend-affiner ist. Falls jscrambler die Lösung ist, müsstest du schauen, welche Methode im jscrambler die Obfuscation wieder auflöst und die kopieren und auf das gecrawlte Datum anwenden. Vielleicht hat jemand anderes ja mehr Muße und Erfahrung, um dir dabei unter die Arme zu greifen.
Kommentar
-
Ich möchte mir ein Programm schreiben um japansiche Schriftzeichen zu lernen. (In VB)
Da ich aber im Studium nur einen Grundkurs in programmieren hatte, bin ich auf Hilfe angewiesen. Ich habe zum Beispiel keine Ahnung wie ich eine PictureBox richtig benutzte. Wie binde ich Bilder in die PictureBox ein, die in einem Ordner sind?
Kommentar
-
Gast
https://docs.microsoft.com/de-de/dot...ctureBox_ImageZitat von Raka Beitrag anzeigenIch möchte mir ein Programm schreiben um japansiche Schriftzeichen zu lernen. (In VB)
Da ich aber im Studium nur einen Grundkurs in programmieren hatte, bin ich auf Hilfe angewiesen. Ich habe zum Beispiel keine Ahnung wie ich eine PictureBox richtig benutzte. Wie binde ich Bilder in die PictureBox ein, die in einem Ordner sind?
Siehe Beispiel
Kommentar
-
Ich habe folgende Aufgabe:
Meine Lösung ist wie folgt:
Ich bekomme leider einen floating point error, sobald ich das "print(A)" rauslasse, z.B.:Code:[COLOR=#569CD6]import[/COLOR][COLOR=#000000] numpy [/COLOR][COLOR=#569CD6]as[/COLOR][COLOR=#000000] np[/COLOR] [COLOR=#569CD6]def[/COLOR][COLOR=#000000] autocorrelation(data):[/COLOR] [COLOR=#CE9178]"""[/COLOR] [COLOR=#CE9178]Input is an array of the form number_data * dimensions[/COLOR] [COLOR=#CE9178]An example is shown when this cell is executed[/COLOR] [COLOR=#CE9178]"""[/COLOR] [COLOR=#6A9955]# YOUR CODE HERE[/COLOR] [COLOR=#000000]u [/COLOR][COLOR=#D4D4D4]=[/COLOR][COLOR=#000000] np.mean(data, axis[/COLOR][COLOR=#D4D4D4]=[/COLOR][COLOR=#B5CEA8]0[/COLOR][COLOR=#000000], keepdims[/COLOR][COLOR=#D4D4D4]=[/COLOR][COLOR=#569CD6]True[/COLOR][COLOR=#000000])[/COLOR] [COLOR=#000000]std_dev [/COLOR][COLOR=#D4D4D4]=[/COLOR][COLOR=#000000] np.std(data, axis[/COLOR][COLOR=#D4D4D4]=[/COLOR][COLOR=#B5CEA8]0[/COLOR][COLOR=#000000], keepdims[/COLOR][COLOR=#D4D4D4]=[/COLOR][COLOR=#569CD6]True[/COLOR][COLOR=#000000])[/COLOR] [COLOR=#6A9955]# std dev matrix[/COLOR] [COLOR=#000000]std_mat [/COLOR][COLOR=#D4D4D4]=[/COLOR][COLOR=#000000] std_dev.T [/COLOR][COLOR=#D4D4D4]@[/COLOR][COLOR=#000000] std_dev[/COLOR] [COLOR=#6A9955]## 1/|D| * sum {x elem D} ((x - u)/std_dev)^T * ((x - u)/std_dev)[/COLOR] [COLOR=#6A9955]# (x - u)[/COLOR] [COLOR=#000000]diff [/COLOR][COLOR=#D4D4D4]=[/COLOR][COLOR=#000000] (data [/COLOR][COLOR=#D4D4D4]-[/COLOR][COLOR=#000000] u)[/COLOR] [COLOR=#6A9955]# (x - u)^T * (x -u)[/COLOR] [COLOR=#000000]A [/COLOR][COLOR=#D4D4D4]=[/COLOR][COLOR=#000000] diff.T [/COLOR][COLOR=#D4D4D4]@[/COLOR][COLOR=#000000] diff[/COLOR] [COLOR=#000000]print(A)[/COLOR] [COLOR=#6A9955]# pairwise division matrix std dev[/COLOR] [COLOR=#000000]A [/COLOR][COLOR=#D4D4D4]=[/COLOR][COLOR=#000000] np.divide(A,std_mat, where[/COLOR][COLOR=#D4D4D4]=[/COLOR][COLOR=#000000](std_mat[/COLOR][COLOR=#D4D4D4]!=[/COLOR][COLOR=#B5CEA8]0[/COLOR][COLOR=#000000]))[/COLOR] [COLOR=#6A9955]# A/|D|[/COLOR] [COLOR=#569CD6]return[/COLOR][COLOR=#000000] np.divide(A, data.shape[[/COLOR][COLOR=#B5CEA8]0[/COLOR][COLOR=#000000]])[/COLOR] [COLOR=#000000]test_data1 [/COLOR][COLOR=#D4D4D4]=[/COLOR][COLOR=#000000] np.stack([[[/COLOR][COLOR=#B5CEA8]1[/COLOR][COLOR=#000000],[/COLOR][COLOR=#B5CEA8]2[/COLOR][COLOR=#000000],[/COLOR][COLOR=#B5CEA8]3[/COLOR][COLOR=#000000]], [[/COLOR][COLOR=#B5CEA8]2[/COLOR][COLOR=#000000],[/COLOR][COLOR=#B5CEA8]2[/COLOR][COLOR=#000000],[/COLOR][COLOR=#B5CEA8]2[/COLOR][COLOR=#000000]]], axis[/COLOR][COLOR=#D4D4D4]=[/COLOR][COLOR=#B5CEA8]1[/COLOR][COLOR=#000000])[/COLOR] [COLOR=#000000]cor1 [/COLOR][COLOR=#D4D4D4]=[/COLOR][COLOR=#000000] autocorrelation(test_data1)[/COLOR] [COLOR=#000000]real_cor1 [/COLOR][COLOR=#D4D4D4]=[/COLOR][COLOR=#000000] [[[/COLOR][COLOR=#B5CEA8]1.0[/COLOR][COLOR=#000000], [/COLOR][COLOR=#B5CEA8]0.0[/COLOR][COLOR=#000000]], [[/COLOR][COLOR=#B5CEA8]0.0[/COLOR][COLOR=#000000], [/COLOR][COLOR=#B5CEA8]0.0[/COLOR][COLOR=#000000]]][/COLOR] [COLOR=#000000]test_data2 [/COLOR][COLOR=#D4D4D4]=[/COLOR][COLOR=#000000] np.stack([[[/COLOR][COLOR=#B5CEA8]1[/COLOR][COLOR=#000000],[/COLOR][COLOR=#B5CEA8]2[/COLOR][COLOR=#000000],[/COLOR][COLOR=#B5CEA8]3[/COLOR][COLOR=#000000]], [[/COLOR][COLOR=#B5CEA8]4[/COLOR][COLOR=#000000],[/COLOR][COLOR=#B5CEA8]5[/COLOR][COLOR=#000000],[/COLOR][COLOR=#B5CEA8]6[/COLOR][COLOR=#000000]]], axis[/COLOR][COLOR=#D4D4D4]=[/COLOR][COLOR=#B5CEA8]1[/COLOR][COLOR=#000000])[/COLOR] [COLOR=#000000]cor2 [/COLOR][COLOR=#D4D4D4]=[/COLOR][COLOR=#000000] autocorrelation(test_data2)[/COLOR] [COLOR=#000000]real_cor2 [/COLOR][COLOR=#D4D4D4]=[/COLOR][COLOR=#000000] [[[/COLOR][COLOR=#B5CEA8]1[/COLOR][COLOR=#000000],[/COLOR][COLOR=#B5CEA8]1[/COLOR][COLOR=#000000]], [[/COLOR][COLOR=#B5CEA8]1[/COLOR][COLOR=#000000],[/COLOR][COLOR=#B5CEA8]1[/COLOR][COLOR=#000000]]][/COLOR] [COLOR=#569CD6]assert[/COLOR][COLOR=#000000] np.allclose(cor1, real_cor1), [/COLOR][COLOR=#CE9178]"Wrong output: correlation should be [/COLOR][COLOR=#000000]\n[/COLOR][COLOR=#000000]{}[/COLOR][COLOR=#000000]\n[/COLOR][COLOR=#CE9178] for this data, is [/COLOR][COLOR=#000000]\n[/COLOR][COLOR=#000000]{}[/COLOR][COLOR=#CE9178]"[/COLOR][COLOR=#000000].format(real_cor1, cor1)[/COLOR] [COLOR=#569CD6]assert[/COLOR][COLOR=#000000] np.allclose(cor2, real_cor2), [/COLOR][COLOR=#CE9178]"Wrong output: correlation should be [/COLOR][COLOR=#000000]\n[/COLOR][COLOR=#000000]{}[/COLOR][COLOR=#000000]\n[/COLOR][COLOR=#CE9178] for this data, is [/COLOR][COLOR=#000000]\n[/COLOR][COLOR=#000000]{}[/COLOR][COLOR=#CE9178]"[/COLOR][COLOR=#000000].format(real_cor2, cor2)[/COLOR]
Ich sehe nicht, wo dass hier so numerisch instabil ist, dass so ein Fehler schon bei so einem Minimalbeispiel entsteht. Und warum verändert print offensichtlich die Daten(bzw. A.__str__()).Code:[COLOR=#D4D4D4][FONT=Droid Sans Mono]Wrong output: correlation should be [[1.0, 0.0], [0.0, 0.0]] for this data, is [[1.0000000000000000e+00 3.3366666666666668e-06] [3.3366666666666668e-06 3.3366666666666668e-06]][/FONT][/COLOR]
Es verhält sich außerdem unterschiedlich mit unterschiedlichen Pythoninterpreter/numpy versionen:
1.)3.8.3 & np 1.18.4(arch linux)
2.) 3.6.9 & np 1.18.2(ubuntu)
Die erste Kombination "funktioniert" auch ohne print auf der command line ohne Probleme in jupyter notebook jedoch nicht. Die zweite funktioniert ohne print nie korrekt. Bin etwas ratlos, wie ich das debuggen soll. Würde mich freuen wenn jemand eine Idee hat, hier laufen doch einige Leute mit Ahnung von Python rum.Zuletzt geändert von KleinerElefant; 04.06.2020, 20:31.
Kommentar
Kommentar