Ich habe versucht, die Ähnlichkeit des Kosinus zwischen zwei Spalten eines Datenrahmens 'Zug' nach [diesem Tutorial] [1] zu berechnen:
train["diff"] = (train["quest_emb"] - train["sent_emb"])**2
Bei der Berechnung scheint es jedoch einen Dimensionsfehler mit dem von GloVe stammenden Einbettungsvektor zu geben.
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
~/Documents/programming/mybot/mybotenv/lib/python3.5/site-packages/pandas/core/ops.py in safe_na_op(lvalues, rvalues)
1032 with np.errstate(all='ignore'):
-> 1033 return na_op(lvalues, rvalues)
1034 except Exception:
~/Documents/programming/mybot/mybotenv/lib/python3.5/site-packages/pandas/core/ops.py in na_op(x, y)
1011 try:
-> 1012 result = expressions.evaluate(op, str_rep, x, y, **eval_kwargs)
1013 except TypeError:
~/Documents/programming/mybot/mybotenv/lib/python3.5/site-packages/pandas/core/computation/expressions.py in evaluate(op, op_str, a, b, use_numexpr, **eval_kwargs)
204 if use_numexpr:
--> 205 return _evaluate(op, op_str, a, b, **eval_kwargs)
206 return _evaluate_standard(op, op_str, a, b)
~/Documents/programming/mybot/mybotenv/lib/python3.5/site-packages/pandas/core/computation/expressions.py in _evaluate_standard(op, op_str, a, b, **eval_kwargs)
64 with np.errstate(all='ignore'):
---> 65 return op(a, b)
66
ValueError: operands could not be broadcast together with shapes (1,4096) (7,)
During handling of the above exception, another exception occurred:
ValueError Traceback (most recent call last)
<ipython-input-81-af28fc11a9d3> in <module>()
----> 1 predicted = predictions(train)
<ipython-input-80-1699cf33d87c> in predictions(train)
2
3 train["cosine_sim"] = train.apply(cosine_sim, axis = 1)
----> 4 train["diff"] = (train["quest_emb"] - train["sent_emb"])**2
5 train["euclidean_dis"] = train["diff"].apply(lambda x: list(np.sum(x, axis = 1)))
6 del train["diff"]
~/Documents/programming/mybot/mybotenv/lib/python3.5/site-packages/pandas/core/ops.py in wrapper(left, right)
1067 rvalues = rvalues.values
1068
-> 1069 result = safe_na_op(lvalues, rvalues)
1070 return construct_result(left, result,
1071 index=left.index, name=res_name, dtype=None)
~/Documents/programming/mybot/mybotenv/lib/python3.5/site-packages/pandas/core/ops.py in safe_na_op(lvalues, rvalues)
1035 if is_object_dtype(lvalues):
1036 return libalgos.arrmap_object(lvalues,
-> 1037 lambda x: op(x, rvalues))
1038 raise
1039
pandas/_libs/algos_common_helper.pxi in pandas._libs.algos.arrmap_object()
~/Documents/programming/mybot/mybotenv/lib/python3.5/site-packages/pandas/core/ops.py in <lambda>(x)
1035 if is_object_dtype(lvalues):
1036 return libalgos.arrmap_object(lvalues,
-> 1037 lambda x: op(x, rvalues))
1038 raise
1039
ValueError: operands could not be broadcast together with shapes (1,4096) (130318,)
4096 entspricht den durch die Funktion des Codierers konstruierten Vektoren und 130318 entspricht der Anzahl der Zeilen des Datenrahmens.
Es scheint nicht so zu sein, dass die beiden Säulen sich in ihrer Größe unterscheiden
print("len(train[\"quest_emb\"])",len(train["quest_emb"]))
print("len(train[\"sent_emb\"])",len(train["sent_emb"]))
len(train["quest_emb"]) 130318
len(train["sent_emb"]) 130318
Die zwei Spalten sehen so aus:
sent_emb quest_emb
0 [[0.030376578, 0.044331014, 0.081356354, 0.062... [[0.01491953, 0.021973763, 0.021364095, 0.0393...
1 [[0.030376578, 0.044331014, 0.081356354, 0.062... [[0.04444952, 0.028005758, 0.030357722, 0.0375...
2 [[0.030376578, 0.044331014, 0.081356354, 0.062... [[0.03949683, 0.04509903, 0.018089347, 0.07667...
...
Nachdem wir die Größe der zwei Spalten überprüft haben, die die gleichen sind und nicht wirklich wissen, woher die anderen Zahlen kommen, ** warum nennen wir die Dimension des Einbettungsvektors, wenn ich Vektoren subtrahiere, die zwei Texte repräsentieren? **
Ziel ist es, unüberwachtes Lernen zu ermöglichen. Der komplette Code, aber nicht aktualisiert [ist über Github] [2].
[1]:
https://towardsdatascience.com/building-a-question-answering-system-… [2]:
https://github.com/aswalin/SQuAD/blob/master/unsupervised.ipynb