From db3be55ebde7a4e01142a8a9d2b0f162390bc5a0 Mon Sep 17 00:00:00 2001
From: ceramisch <carlos.ramisch@lis-lab.fr>
Date: Fri, 10 Jan 2025 00:36:23 +0100
Subject: [PATCH] Add cm6 code

---
 cm-code/biaffine.py | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)
 create mode 100755 cm-code/biaffine.py

diff --git a/cm-code/biaffine.py b/cm-code/biaffine.py
new file mode 100755
index 0000000..15fb2dd
--- /dev/null
+++ b/cm-code/biaffine.py
@@ -0,0 +1,21 @@
+#!/usr/bin/env python3
+
+import numpy as np
+
+n = 4
+d = 10
+
+Hhead = np.random.rand(n,d) # head vectors as rows
+Hdep  = np.random.rand(n,d) # dep  vectors as rows
+Uarc  = np.random.rand(d,d) # biaffine intermediate matrix
+uarc  = np.random.rand(d,1) # biaffine bias
+
+Sarc_original = Hhead @ Uarc @ Hdep.T + Hhead @ uarc
+#print(Sarc_original)
+
+ubias = np.vstack((Uarc.T, uarc.T)) # Uarc transposition not in paper, but not important since learned
+Hdepext = np.hstack((Hdep,np.ones((n, 1))))
+Sarc_simple = ((Hdepext @ ubias) @ Hhead.T).T # final transpose: dependents as columns
+#print(Sarc_simple)
+
+print(f"Original and simplified versions identical: {np.allclose(Sarc_original, Sarc_simple)}") # quality up to tolerance
-- 
GitLab